一、獲取nginx映象
1.使用docker search nginx
命令獲取ngin映象列表

docker pull nginx
命令拉取nginx映象到本地,此處我們獲取排名第一的是官方最新映象,其它版本可以去DockerHub查詢

docker images nginx
命令,檢視我們拉取到本地的nginx映象IMAGE ID

二、建立nginx容器
首先測試下nginx映象是否可用,使用docker run -d --name mynginx -p 80:80 231d
建立並啟動nginx容器
- -d 指定容器以守護程式方式在後臺執行
- --name 指定容器名稱,此處我指定的是mynginx
- -p 指定主機與容器內部的埠號對映關係,格式 -p [宿主機埠號]:[容器內部埠],此處我使用了主機80埠,對映容器80埠
- 231d 是nginx的映象IMAGE ID前4位
命令執行後返回了容器ID,ef1f3b....,此時我們已經成功建立了nginx容器,

docker ps
命令,可以檢視到正在執行的nginx容器,對映埠為80

如果你是雲伺服器,請記得開放對應的外網埠!!!!

我們如何修改nginx的配置檔案
?
這裡有兩種方式解決這個問題:
方式一:
每次都進入到nginx容器內部修改。適合改動少,簡單使用的情況
1.執行docker exec -it ef /bin/bash
進入到nginx容器內部,
- exec 命令代表附著到執行著的容器內部
- -it 是 -i 與 -t兩個引數合併寫法,-i -t 標誌著為我們指定的容器建立了TTY並捕捉了STDIN
- ef 是我們要進入的容器Id
- /bin/bash 指定了執行命令的shell
進入到nginx容器內部後,我們可以cd /etc/nginx
,可以看到相關的nginx配置檔案都在/etc/nginx
目錄下 而nginx容器內的預設首頁html檔案目錄為/usr/share/nginx/html
,日誌檔案位於/var/log/nginx 執行exit命令
我們可以從容器內部退出。
方式二:
將nginx容器內部配置檔案掛載到主機,之後就可以在主機對應目錄修改即可。適合頻繁修改,複雜使用的情況
1.在主機/mnt目錄下執行 mkdir -p ./nginx/{conf,html,logs}
建立掛載目錄

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 ef
命令停止剛剛建立的nginx容器,ef是容器Id,然後執行docker rm ef
移除容器,

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 231d
命令,重新建立nginx容器

- -v 掛載目錄,格式 -v: 表示將主機目錄與容器目錄之間進行共享,
- --privileged=true 容器內部對掛載的目錄擁有讀寫等特權
5.這時候,會出現403,不要驚慌。我們的主機掛載 /mnt/nginx/html
目錄還為空

/mnt/nginx/html
目錄下建立index.html,
內容隨便寫上hello nginx
,再次訪問主機IP
