使用docker安裝nginx

飛馳的蝸牛發表於2019-12-08

一、獲取nginx映象

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

在這裡插入圖片描述
2.使用docker pull nginx命令拉取nginx映象到本地,此處我們獲取排名第一的是官方最新映象,其它版本可以去DockerHub查詢
在這裡插入圖片描述
3.使用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
在這裡插入圖片描述
在瀏覽器訪問CentOS主機,會看到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
    在這裡插入圖片描述
    進入到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}建立掛載目錄

在這裡插入圖片描述
2.將容器內的nginx.confdefault.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移除容器,
在這裡插入圖片描述
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 231d命令,重新建立nginx容器
在這裡插入圖片描述

  • -v 掛載目錄,格式 -v: 表示將主機目錄與容器目錄之間進行共享,
  • --privileged=true 容器內部對掛載的目錄擁有讀寫等特權

5.這時候,會出現403,不要驚慌。我們的主機掛載 /mnt/nginx/html目錄還為空

在這裡插入圖片描述
這時我們在容器的掛載 /mnt/nginx/html目錄下建立index.html,內容隨便寫上hello nginx,再次訪問主機IP

在這裡插入圖片描述

到這裡就大功告成了!

需要注意的:我們在掛載目錄的操作,都實際會對映到容器內部,寫配置檔案的時候一定要注意路徑問題!!

相關文章