天天看點

Docker安裝Nginx

1、安裝Nginx鏡像

docker pull nginx
           
不指定版本,預設下載下傳最新版本

安裝後,執行 docker images 檢視 nginx 鏡像。

Docker安裝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 檔案,采用如上配置。

Docker安裝Nginx
再來回顧一下,需要在 /home/nginx 建立兩個目錄,分别是 conf、www,其中 conf 目錄存放 nginx.conf 配置檔案,代碼如上方所示。
Docker安裝Nginx

執行建立容器代碼截圖:

Docker安裝Nginx

3、操作nginx容器

通過 docker ps -a 我們可以看到 nginx 容器的運作狀态。

由于我們在建立容器時起了别名,那麼可以直接操作别名:

docker start mynginx 啟動
docker stop mynginx 暫停
docker rm mynginx 移除
           
Docker安裝Nginx

至此,我們可以通過端口号去通路了,http://ip:9999

繼續閱讀