Docker之初識(一)
1、簡介
今年四月份公司逐步改用docker容器來部署應用,當時自己剛踏出學校大門,平時開發都是環境都是早已安裝好,因此一直沒怎麼了解Docker這玩意。公司裡各位開發大佬說這是個好東西,可以很方便的部署遷移一個應用,當時自己一臉懵逼。通過這幾個月的學習與使用,自己也逐步瞭解了Docker,因此抽出空餘時間來寫一寫docker的知識總結與大家分享。
Docker的官方簡介:
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
我的個人理解就是:
每一個Docker容器相當於一個完全封閉的(虛擬)盒子,預設狀態下的盒子與盒子之間是不能夠進行通訊,並且都寄存在宿主機上面。若要使盒子與盒子、盒子與宿主機之間進行通訊需要人為去設定,給他開闢一條通訊通道。
Doker的應用場景有很多,最常見的就是Web應用的自動化打包和釋出、自動化測試和持續整合釋出、方便部署分散式應用等,而我司的Web應用就是結合Docker進行自動化打包和釋出。
2、Docker使用
2.1、docker安裝
docker支援Windows、MacOS、Linux等系統,安裝過程我這裡就不介紹了,在網上有很多資源。
安裝後進入命令列執行docker命令來判斷docker是安裝成功。
看到有Options輸出則表示安裝成功。
2.2、我們平時安裝軟體的第一步是做什麼咧?
每當我們安裝軟體的第一步是做什麼呢?毫無疑問,那就是search查詢安裝包啦!
那麼docker中的查詢"安裝包"的命令是什麼呢?
很簡單,那就是docker search 軟體名;
docker search nginx; // 查詢nginx
執行該命令後,將會出現一系列的搜尋結果。
2.3、找到軟體後那就下載軟體啦
docker中與我們平常下載軟體這一動作相對應的命令就是:docker pull 軟體名;(但平時我們把這一動作叫做拉取映象)
docker pull nginx; // 拉取nginx的映象
執行命令後將會開始拉取nginx映象
拉取成功我們使用docker images;命令可以檢視已經拉取的映象列表。
docker images; // 檢視已拉取的映象列表
2.4、軟體已經下載好了下一步又是做什麼咧
docker中於普通軟體安裝相對應的命令是docker run 軟體名;(我們把這一動作稱為:從該映象中建立容器)
在建立容器的時候,我們一般還會新增一些其他引數,以便更好的管理使用應用。
在此之前我們需要先建立兩個檔案目錄,www和nginx/conf.d,並在nginx中新建一個defalut.conf配置檔案
mkdir www;mkdir -p nginx/conf.dvi nginx/conf.d/default.conf // default.conf檔案內容在下面docker run -p 8080:80 -d -v $PWD/www:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d --name mynginx nginx# -p 指定繫結埠(埠對映,將容器中的80埠繫結到主機中的8080埠)# -v 將主機中的當前www目錄掛載到容器中的/usr/share/nginx/html目錄中# -d 讓容器在後臺執行
#defalut.conf檔案server { listen 80 default_server; server_name _; root /usr/share/nginx/html; location / { index index.html index.htm index.php; autoindex off; } location ~ \.php(.*)$ { root /var/www/html/; fastcgi_pass 172.17.0.2:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
建立容器後我們可以通過docker ps檢視正在執行的容器。
2.5、檢測執行的容器應用是否能夠正常工作
因為我們在建立容器的時候已經將當前目錄下的www目錄對映到容器中nginx的/usr/share/nginx/html工作根目錄,因此我們在當前www目錄下新增一個index.html檔案
# 在www目錄下新建index.html檔案,並任意寫一些字串 vi index.html
由於Windows系統中的docker是通過一個VM虛擬機器為橋樑搭建的,我們在docker中建立容器時所映射出來的ip埠是指向虛擬機器的,因此我們需要通過虛擬機器的ip和埠進行訪問容器。(注:Windows系統相對比較特殊需要藉助VM實現,而MacOS和Linux則不需要,因此容器所關聯的埠是宿主機127.0.0.1的)
檢視該VM的ip:
在ip在執行docker的時候所展示出來的ip
在瀏覽器中訪問192.168.99.100:8080
=
3、總結
使用docker搭建一個小demo還比較簡單的,只需要幾個命令即可,但是我們還是需要好好了解映象、容器、宿主機他們三者的關係,思考他們是如何通訊,如何使用docker構建一個完整的應用環境等。
在這篇部落格中主要涉及到的一些命令有:
docker search ** docker pull ** docker run -p 8080:80 -d -v $PWD/www:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d --name mynginx nginx docker ps
(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)
宣告:本部落格文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文連結