docker學習2|在容器中部署nginx並儲存、執行容器
點選上方“中興開發者社群”,關注我們
每天讀一篇一線開發者原創好文
▎作者簡介
作者朱磊是開源軟體愛好者,致力於web應用部署、運維領域解決方案的研究。將web應用部署在Docker上能夠極大的簡化部署、方便維護,文章將以初學者的角度從輸出hello world開始,一步步的揭開使用Docker部署web應用的神祕面紗。
上文:docker學習1|使用docker輸出hello world
在上一節,我們學到如何使用centos容器輸出hello world,本節我們將學習如何在映象中安裝nginx並儲存更改,執行自己的容器,並學習如何進行埠對映與後臺執行容器。
1 共享本地儲存
#-v共享本地儲存
docker run -it -v /opt:/opt centos /bin/bash
通過-v引數,冒號前為宿主機目錄,必須為絕對路徑,冒號後為映象內掛載的路徑。
此時,可以檢視容器的/opt目錄是否已經共享本地儲存
[root@2b4accd4cb25 /]# 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 Up About an hour mad_wozniak
儲存該容器
docker commit 2b4a mycentos
#2b4a為CONTAINER ID的前四位
#mycentos是自己更改映象後的別名
檢視本地已有容器
docker images
#結果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos latest 19604df31369 9 seconds ago 375.4 MB
docker.io/centos latest 3fa822599e10 8 days ago 203.5 MB
可以看到,mycentos已經作為一個新的容器儲存。
4 執行mycentos容器
docker run -it -v /opt:/opt mycentos /bin/bash
#進入mycentos後直接執行nginx,驗證nginx是否已經安裝
[root@16f46f4e363d /]# nginx
[root@16f46f4e363d /]# ps aux |grep nginx
root 14 0.0 0.1 122912 2108 ? Ss 01:35 0:00 nginx: master process nginx
nginx 15 0.0 0.1 123296 3128 ? S 01:35 0:00 nginx: worker process
root 17 0.0 0.0 9
#可以驗證,容器已經正確儲存修改並重新執行。
5 埠對映與後臺執行
5.1 埠對映
我們在容器mycentos中啟動了nginx服務並開啟了80埠,對於更一般的情況來說,我們需要在容器外,也就是宿主機開啟對應的對映埠,這樣才能對外提供網站服務。我們可以通過如下命令開啟對映:
docker run -it -p 80:80 mycentos /bin/bash
[root@8e2455671b01 /]# 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
[root@8e2455671b01 /]# nginx
#按住 Ctrl + P + Q 退出容器,進入後臺執行
#此時使用 docker ps
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c2299567a7d mycentos "/bin/bash" 30 seconds ago Up 27 seconds 0.0.0.0:80->80/tcp boring_goldberg
可以看到容器已經保持在後臺執行,我們可以對這個在後臺的容器進行一定的操作
#進入剛剛進入後臺執行的容器
docker attach 8c2299567a7d
#驗證Nginx程式
[root@8c2299567a7d /]# 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
相關文章
- docker學習系列2儲存對容器的修改Docker
- docker容器儲存Docker
- Docker容器學習梳理 - 應用程式容器環境部署Docker
- Docker命令-docker exec-在執行的容器中執行命令Docker
- 在Docker中,如何停止所有正在執行的容器?Docker
- 在OpenShift中執行容器
- Docker 容器學習Docker
- Docker容器化部署嘗試——多容器通訊(node + mongoDB + nginx)DockerMongoDBNginx
- Docker_05 容器-修改及儲存Docker
- 使用docker構建jenkins映象並執行容器DockerJenkins
- Docker學習筆記之-部署.Net Core 3.1專案到Docker容器,並使用Nginx反向代理(CentOS7)(二)Docker筆記NginxCentOS
- 如何在Docker容器中執行GUI程式DockerGUI
- 使用Systemd執行Docker容器Docker
- 使用docker執行CentOS容器DockerCentOS
- 在Docker容器中執行ASP.NET MVC應用程式DockerASP.NETMVC
- 在docker容器中部署Web專案DockerWeb
- 通過Docker容器執行持續整合/持續部署Docker
- Docker 基礎-映象&容器&網路&儲存Docker
- Docker容器學習梳理 - SSH方式登陸容器Docker
- Docker容器學習梳理 - 容器硬碟熱擴容Docker硬碟
- Docker容器中執行.net framework控制檯程式DockerFramework
- Docker容器中執行.Net Core應用程式Docker
- Docker容器學習梳理 - 基礎知識(2)Docker
- Docker容器學習梳理–基礎知識(2)Docker
- 在Docker容器內執行 vi 編輯器 | BaeldungDocker
- docker學習5:Docker 容器連線Docker
- docker學習3:Docker容器使用Docker
- Docker配置本地映象與容器的儲存位置Docker
- 容器雲對接持久化儲存並使用持久化
- Docker中Mysql容器內如何執行SQL檔案?DockerMySql
- Docker部署並執行ElasticsearchDockerElasticsearch
- Docker容器學習與分享12Docker
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- 容器儲存介面--CSI
- 在Docker容器中執行GUI圖形應用的開源專案DockerGUI
- 如何把 Java Web 應用放在 docker 容器中執行JavaWebDocker
- 並行執行 Job - 每天5分鐘玩轉 Docker 容器技術(134)並行Docker
- 在 docker 容器中捕獲訊號Docker