1. 程式人生 > 其它 >Docker(6)-安裝Nginx

Docker(6)-安裝Nginx

前言

本人文章均引用或者複製:

公眾號:

QQ群:806951874

在Docker中安裝Nginx

前言

由於nginx是一個反向代理伺服器,涉及到一些配置。如果你對nginx一點都不懂的話,那麼,你在學習下面的內容的時候,可能就會不太懂,因為我們是要在docker中操作nginx,同時需要編輯一些配置檔案。

適合對於nginx有一定了解的朋友參考使用。

下載nginx映象

docker pull nginx

檢視下載的nginx映象

docker images

如下圖:

啟動nginx映象容器

docker run -d -p 80:80 --name nginx nginx

nginx是一個代理,埠預設是80

訪問伺服器

在瀏覽器中輸入:http://192.168.56.128:80/,回車看一下效果:

出現上面的頁面,說明nginx已經正常啟動了。

將nginx的配置檔案、日誌目錄對映到宿主機

在測試環境、生產環境的話,都是需要編輯一些nginx的配置的,最常見的修改就是nginx.conf檔案。

將nginx的配置檔案、日誌目錄等,對映到宿主機上進行管理維護,是很方便的,也是推薦的做法。

在宿主機中建立nginx相關目錄

首先在宿主機中建立一個用於存放nginx相關檔案的目錄,這裡我就在 /opt 目錄下新建了一個 docker_nginx 的目錄檔案。

然後在 docker_nginx 目錄下新建 conf 、log 、www 這三個目錄,目錄含義是:

conf:存放nginx的相關配置檔案,比如 nginx.conf

log:存放nginx的日誌檔案

www:存放相關靜態資原始檔

最終的目錄結構如下:

複製一份nginx.conf檔案到宿主機對應的目錄下:

docker cp nginx:/etc/nginx/nginx.conf /opt/docker_nginx/conf/nginx.conf

這條命令的作用,就是複製nginx的docker容器中的 /etc/nginx/nginx.conf 檔案到宿主機下的 /opt/docker_nginx/conf/ 目錄下。這樣可以直接進行預設的配置檔案的編輯。

看一下預設的nginx.conf配置檔案的內容:

編輯 nginx 的配置檔案:

我們暫時就修改其中的 access_log 、error_log 、root 這些基本配置。

從上圖可以看到,配置檔案最下面,有這樣一段配置:

include /etc/nginx/conf.d/*.conf;

意思也就是引入了其他配置檔案。

既然我們要在宿主機上管理nginx的配置檔案,所以對於上面的include引入的檔案,我們也要複製一份到對應的宿主機上。

我們進入nginx容器,去檢視一下這個路徑下面有哪些檔案:

  • 進入nginx容器
docker exec -it e4 /bin/bash

其中的 e4 指的是容器ID的前2位字串。

  • 檢視 /etc/nginx/conf.d/ 目錄

可以看到,裡面有一個default.conf配置檔案

  • 檢視 default.conf配置檔案

其中用黃色圈起來的部分,是我們要修改的內容(上面說過了,目前就先簡單修改基本的配置,只是方便大家看到一下效果,至於其他的配置,可自行按照這樣的步驟自行編輯)。

  • 複製一份default.conf檔案到宿主機對應的目錄下
docker cp nginx:/etc/nginx/conf.d/default.conf /opt/docker_nginx/conf/default.conf

檢視一下目前宿主機下面的nginx配置檔案情況

  • 同樣的,我們也需要把nginx的預設首頁檔案,複製到宿主機下面
docker cp nginx:/usr/share/nginx/html/index.html /opt/docker_nginx/www/

編輯宿主機上的nginx相關配置檔案

  • 首先修改 nginx.conf 配置檔案,修改後結果是:

其中error_log的配置,就是我們前面在宿主機下面建立的nginx的log目錄。

注意需要修改最下面的include配置,指定宿主機下面的default.conf配置檔案(default/conf與nginx.conf在相同目錄下,所以直接寫名稱即可,無需指定具體目錄路徑)

  • 編輯default.conf檔案
vim /opt/docker_nginx/conf/default.conf

修改檔案中的 access_log 以及 root 配置,效果如下

同樣,access_log 以及 root 的配置,就是我們前面在宿主機下面建立的nginx的相關目錄。

重啟nginx容器

  • 先停止之前啟動的nginx容器
docker stop e4s
  • 重啟nginx容器

這次重啟nginx容器的話,就不能使用一開始那種簡單的run命令了,需要新增一些引數,具體命令如下:

docker run -p 80:80 --name nginx-new \
    -v /opt/docker_nginx/www:/usr/share/nginx/html \
    -v /opt/docker_nginx/log:/var/log/nginx \
    -v /opt/docker_nginx/conf/nginx.conf:/etc/nginx/conf \
    -d nginx

這裡的 -v 引數的含義是,將宿主機上的目錄掛載到容器中的對應目錄。

“:”冒號前面是宿主機的目錄,後面是容器中的目錄。

有些朋友可能會不搞不明白冒號後面的容器路徑是怎麼來的,這裡解釋一下,其實很簡單,就是指的是nginx的預設的日誌路徑、配置檔案路徑。

你在nginx容器中去檢視一下nginx.conf以及default.conf配置檔案的內容,就可以看到log和配置檔案的預設儲存路徑了。文章上面也有截圖出來nginx.conf以及default.conf的預設配置截圖,可自行翻閱到上面檢視。

  • 檢視啟動的nginx容器
  • 修改nginx預設首頁內容

先看一下預設首頁的樣子:

我們把這個首頁內容全部刪除掉,加入我們自己的內容!

編輯宿主機下面的 /opt/docker_nginx/www/index.html 檔案:

vim /opt/docker_nginx/www/index.html

修改之後如下:

  • 重新訪問伺服器域名,檢視最終效果

如果頁面出現中文亂碼的問題,可以在 index.html 好 標籤裡面加入:


最終index.html檔案內容如下:

 <!DOCTYPE html>
 <html>
 <head>
 
 <title>Welcome to nginx!</title>
 <style>
     body {
         width: 35em;
         margin: 0 auto;
         font-family: Tahoma, Verdana, Arial, sans-serif;
     }
 </style>
 </head>
 <body>
 <h1>歡迎訪問!</h1>
 <p>當前nginx服務來源於Docker容器</p>
 </body>
 </html