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