一、獲取nginx鏡像
1.使用docker search nginx
命令獲取nginx鏡像列表
2.使用docker pull nginx
命令拉取nginx鏡像到本地,此處我們獲取排名第一的是官方最新鏡像,其它版本可以去DockerHub查詢
3.使用docker images nginx
命令,查看我們拉取到本地的nginx鏡像IMAGE ID
二、創建nginx容器
首先測試下nginx鏡像是否可用,使用docker run -d --name mynginx -p 80:80 0839
創建並啟動nginx容器
- -d 指定容器以守護進程方式在后台運行
- --name 指定容器名稱,此處我指定的是mynginx
- -p 指定主機與容器內部的端口號映射關系,格式 -p
- [宿主機端口號]:[容器內部端口],此處我使用了主機80端口,映射容器80端口
- 0839 是nginx的鏡像IMAGE ID前4位
命令執行后返回了容器ID,b3bc6....,此時我們已經成功創建了nginx容器,
使用docker ps
命令,可以查看到正在運行的nginx容器
,映射端口為80
在瀏覽器訪問CentOS主機,會看到nginx歡迎頁,如果你是雲服務器,請記得開放對應的外網端口!!!!
到這里我們已經完成了nginx容器的搭建,但是此時還有個問題,我們如何修改nginx的配置文件?
如何修改nginx的配置文件
這里有兩種方式解決這個問題:
方式一:每次都進入到nginx容器內部修改
每次都進入到nginx容器內部修改。適合改動少,簡單使用的情況
1.執行·docker exec -it ef /bin/bash·進入到nginx容器內部,
- exec 命令代表附着到運行着的容器內部
- -it 是 -i 與 -t兩個參數合並寫法,-i -t 標志着為我們指定的容器創建了TTY並捕捉了STDIN
- ef 是我們要進入的容器Id
- /bin/bash 指定了執行命令的shell
2.進入到nginx容器內部后,我們可以cd /etc/nginx
,可以看到相關的nginx配置文件都在/etc/nginx
目錄下
而nginx容器內的默認首頁html文件目錄
為/usr/share/nginx/html
日志文件位於/var/log/nginx
3.執行exit
命令我們可以從容器內部退出
。
方式二:將nginx容器內部配置文件掛載到主機
將nginx容器內部配置文件掛載到主機,之后就可以在主機對應目錄修改即可。適合頻繁修改,復雜使用的情況
1.在主機/mnt目錄
下執行 mkdir -p ./nginx/{conf,html,logs}
創建掛載目錄
2.將容器內的nginx.conf
與default.conf
文件分別拷貝到主機/mnt/nginx
和/mnt/nginx/conf
下,分別執行
docker cp ef:/etc/nginx/nginx.conf ./
dokcer cp ef:/etc/nginx/conf.d/default.conf ./conf/
cp 命令代表復制
ef是我們nginx容器的ID,/etc/nginx/nginx.conf 是容器內部nginx.conf 路徑
此時我們的目錄結構是這樣的,這就是我們等會兒要與nginx容器掛載的目錄
3.執行docker stop b3
命令停止剛剛創建的nginx容器,b3是容器Id,然后執行docker rm b3
移除容器,
4.執行docker run -d --name mynginx -p 80:80 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/nginx/logs:/var/log/nginx -v /mnt/nginx/html:/usr/share/nginx/html -v /mnt/nginx/conf:/etc/nginx/conf.d --privileged=true 0839
命令,重新創建nginx容器
-v 掛載目錄,格式 -v: 表示將主機目錄與容器目錄之間進行共享,
--privileged=true 容器內部對掛載的目錄擁有讀寫等特權
5.這時候,會出現403,不要驚慌。我們的主機掛載 /mnt/nginx/html目錄還為空
這時我們在容器的掛載 /mnt/nginx/html
目錄下創建index.html
,內容隨便寫上hello docker nginx,再次訪問主機IP
到這里就大功告成了!
需要注意的:我們在掛載目錄的操作,都實際會映射到容器內部,寫配置文件的時候一定要注意路徑問題!!