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