1、安裝Nginx鏡像
docker pull nginx
不指定版本,預設下載下傳最新版本
安裝後,執行 docker images 檢視 nginx 鏡像。

2、建立Nginx容器
docker run -it -d \
--name mynginx \
-p 9999:9999 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/www:/home/nginx/www \
--privileged --net=host nginx
注意,如上指令執行時每一行最後不要有空格,該格式隻是為了更好講解。
docker run:建立容器的指令
-i:表示運作容器
-t:表示容器啟動後會進入其指令行。加入這兩個參數後,容器建立就能登入進去。即配置設定一個僞終端。
--name :為建立的容器命名。
-v:表示目錄映射關系(前者是主控端目錄,後者是映射到主控端上的目錄),可以使用多個-v做多個目錄或檔案映射。注意:最好做目錄映射,在主控端上做修改,然後共享到容器上。
-d:在run後面加上-d參數,則會建立一個守護式容器在背景運作(這樣建立容器後不會自動登入容器,如果隻加-i -t兩個參數,建立後就會自動進去容器)。
-p:表示端口映射,前者是主控端端口,後者是容器内的映射端口。可以使用多個-p做多個端口映射
我們來解讀一下上邊建立nginx的重要指令:
--name mynginx 表示給這個容器起了一個 mynginx 的名字。
第一個“-v”,是配置檔案的映射,前邊代表主控端,後面代表容器,解釋為主控端的 nginx 配置檔案,映射到容器内的 nginx 子目錄下的配置檔案上。
第二個 "-v" ,是主控端上目錄的映射,映射到容器内的同名的目錄下面,同樣的前邊代表主控端,後面代表容器,這樣實作的好處就是不用每次都要登入容器内進行檔案的操作,直接主控端 /home/nginx/www 目錄即等同于操作容器。
nginx.conf配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 9999;
server_name localhost;
# Vue路由模式為history需添加的配置
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.html?s=$1 last;
break;
}
root /home/nginx/www;
index index.html;
}
# 擷取真實IP以及Websocket需添加的配置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 用戶端Body大小限制(檔案上傳大小限制配置)
client_max_body_size 5m;
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root html;
}
}
}
其中 /home/nginx/www 表示存放的打包的資源根目錄,也就是通路 9999 端口時 www 作為根目錄,www 目錄自行建立,放一個簡單的 html 即可。
在 /home/nginx/conf 目錄下建立 nginx.conf 檔案,采用如上配置。
再來回顧一下,需要在 /home/nginx 建立兩個目錄,分别是 conf、www,其中 conf 目錄存放 nginx.conf 配置檔案,代碼如上方所示。
執行建立容器代碼截圖:
3、操作nginx容器
通過 docker ps -a 我們可以看到 nginx 容器的運作狀态。
由于我們在建立容器時起了别名,那麼可以直接操作别名:
docker start mynginx 啟動
docker stop mynginx 暫停
docker rm mynginx 移除
至此,我們可以通過端口号去通路了,http://ip:9999