docker學習2|在容器中部署nginx並儲存、執行容器
點選上方“中興開發者社群”,關注我們
每天讀一篇一線開發者原創好文
▎作者簡介
作者朱磊是開源軟體愛好者,致力於web應用部署、運維領域解決方案的研究。將web應用部署在Docker上能夠極大的簡化部署、方便維護,文章將以初學者的角度從輸出hello world開始,一步步的揭開使用Docker部署web應用的神祕面紗。
在上一節,我們學到如何使用centos容器輸出hello world,本節我們將學習如何在映象中安裝nginx並儲存更改,執行自己的容器,並學習如何進行埠對映與後臺執行容器。
1 共享本地儲存
#-v共享本地儲存
docker run -it -v /opt:/opt centos /bin/bash
通過-v引數,冒號前為宿主機目錄,必須為絕對路徑,冒號後為映象內掛載的路徑。
此時,可以檢視容器的/opt目錄是否已經共享本地儲存
[[email protected] /]# ll /opt
當需要使用本機檔案的時候可以複製到本機/opt目錄,這樣容器就可以共享了。
2 使用yum安裝nginx並啟動
yum -y install nginx
不修改配置檔案,直接啟動nginx,並訪問80埠
#啟動nginx
nginx
#訪問nginx網站80埠
curl localhost:80
這樣我們即在容器內啟動了nginx預設頁面在80埠上,通過curl可以檢視其頁面程式碼。
3 儲存對容器的更改
首先,檢視當前執行中的容器
#在宿主機中執行
docker ps
#記錄結果CONTAINER ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b4accd4cb25 centos "/bin/bash"About an hour ago UpAbout an hour mad_wozniak
儲存該容器
docker commit 2b4a mycentos
#2b4a為CONTAINER ID的前四位
#mycentos是自己更改映象後的別名
檢視本地已有容器
docker images
#結果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos latest 19604df313699 seconds ago 375.4 MB
docker.io/centos latest 3fa822599e108 days ago 203.5 MB
可以看到,mycentos已經作為一個新的容器儲存。
4 執行mycentos容器
docker run -it -v /opt:/opt mycentos /bin/bash
#進入mycentos後直接執行nginx,驗證nginx是否已經安裝
[[email protected] /]# nginx
[[email protected] /]# ps aux |grep nginx
root 140.00.11229122108?Ss01:350:00 nginx: master process nginx
nginx 150.00.11232963128? S 01:350:00 nginx: worker process
root 170.00.09
#可以驗證,容器已經正確儲存修改並重新執行。
5 埠對映與後臺執行
5.1 埠對映
我們在容器mycentos中啟動了nginx服務並開啟了80埠,對於更一般的情況來說,我們需要在容器外,也就是宿主機開啟對應的對映埠,這樣才能對外提供網站服務。我們可以通過如下命令開啟對映:
docker run -it -p 80:80 mycentos /bin/bash
[[email protected] /]# nginx
#開啟Nginx程序後,在宿主機瀏覽器使用localhost:80即可訪問nginx預設頁面
# -p 引數 host_port:port ,host_port指定了宿主機的埠,後面是容器的埠
#-p 還可以開啟多埠對映 -p host_port1:port1 -p host_port2:port2
5.2 開啟nginx並後臺執行容器
對於一般的網站部署來說,我們並不需要開啟bash視窗,我們需要容器開啟nginx後一直在後臺執行就可以了,我們可以輸入如下命令開啟容器後臺執行:
#前臺開啟
docker run -it -p 80:80 mycentos /bin/bash
[[email protected] /]# nginx
#按住 Ctrl + P + Q 退出容器,進入後臺執行
#此時使用 docker ps
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c2299567a7d mycentos "/bin/bash"30 seconds ago Up27 seconds 0.0.0.0:80->80/tcp boring_goldberg
可以看到容器已經保持在後臺執行,我們可以對這個在後臺的容器進行一定的操作
#進入剛剛進入後臺執行的容器
docker attach 8c2299567a7d
#驗證Nginx程序
[[email protected] /]# ps aux | grep nginx
#按住 Ctrl + P + Q 退出容器,進入後臺執行
#後臺開啟容器mycentos,但不進入容器
docker run -dit -p 80:80 mycentos /bin/bash
#後臺執行nginx,不進入容器
docker exec-it 8c2299567a7d nginx
#退出後臺執行
docker stop 8c2299567a7d
參考資料
詳解Docker掛載本地目錄及實現檔案共享,http://blog.csdn.net/magerguo/article/details/72514813
在linux命令下如何訪問一個url?,http://blog.csdn.net/zhuying_linux/article/details/6881728
儲存對容器的修改,http://www.docker.org.cn/book/docker/docer-save-changes-10.html
Docker學習筆記-Docker埠對映,http://blog.csdn.net/qq_29994609/article/details/51730640
Docker學習筆記(四)之容器檢視啟動終止刪除,http://blog.csdn.net/u013246898/article/details/52945884
保持後臺執行 Docker 容器,https://www.douban.com/note/602752252/
docker 後臺執行和進入後臺執行的容器,https://www.cnblogs.com/hanxing/p/7832178.html