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.d
vi 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
(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)
作者:那一葉隨風 http://www.cnblogs.com/phpstudy2015-6/
原文地址: https://www.cnblogs.com/phpstudy2015-6/p/9840610.html
聲明:本博客文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文鏈接
