天天看點

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    首先,系統(3.8以上核心的linux)中安裝好 Docker 這個運用程式。由于網絡原因,我們下載下傳一個Docker官方的鏡像需要很長的時間,甚至下載下傳失敗。為此,阿裡雲容器鏡像服務提供了官方的鏡像站點,進而加速官方鏡像的下載下傳速度。

[ 不會的可以參考我之前的文章:Docker <一> 架構簡介與Linux上安裝 https://my.oschina.net/u/3375733/blog/1582281]。

一、Docker pull 安裝 Nginx 

    1、檢視docker倉庫中的 nginx 指令

# 使用 docker search 指令搜尋存放在 Docker Hub 中的鏡像
docker search nginx
           

    以看到下圖所示的資訊:

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    2、為標明需要pull到系統中的官方 Nginx 鏡像

# docker pull nginx -------- nginx 為標明需要pull到系統中的官方 nginx 鏡像

docker pull nginx           
【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    整個pull過程需要花費一些時間,耐心等待。

    若見下圖證明pull成功。 

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

二、檢視并啟動Docker 鏡像

    1、列出已下載下傳的鏡像

# 使用 docker images 指令即可列出已下載下傳的鏡像

docker images           

    執行指令後,可看到類似于如下的表格:

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    2、列出運作中的容器

# 使用 docker ps 指令即可列出運作中的容器
docker ps


# 使用 docker ps -a 指令即可列出所有(包括已停止的)的容器
docker ps -a

           

    執行指令後,可看到類似于如下的表格:

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    可以發現,目前沒有運作的 nginx 容器。故,接下來我們建立并啟動一個 nginx 容器。

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

三、啟動容器,部署nginx并修改配置檔案

    1、啟動跑個靜态網頁,測試下 nginx 容器

# 啟動一個名為nginx81(名字自己根據需求起名字,一般見名知意即可) 的容器 
docker run --name nginx81 -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html nginx


# 預設容器對這個目錄有可讀寫權限,可以通過指定ro,将權限改為隻讀(readonly)
# docker run --name my-nginx -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html:ro -d nginx           
【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    通路 http://Docker主控端IP:指定的Docker主控端端口 ,可以通路說明

【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    2、部署nginx 項目并修改配置檔案

    一般情況下docker啟動時進行配置,隻要把配置檔案的目錄挂載出來就可以,但是nginx卻是先加載一個主配置檔案nginx.conf,在nginx.conf裡再加載conf.d目錄下的子配置檔案(一般最少一個default.conf檔案)。 

# 普通的挂載方式
docker run --name mynginx2 --mount source=/var/www,target==/usr/share/nginx/html,readonly \
--mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx           

    docker 啟動 nginx 加載自定義配置:

# 1. 第一個“-v”,是項目位置,把項目放到挂載到的目錄下即可 
# 2. 第二個“-v”,是挂載的主配置檔案"nginx.conf",注意"nginx.conf"檔案内有一行 
#    "include /etc/nginx/conf.d/*.conf;" ,
#    這個include指向了子配置檔案的路徑,此處注意include後所跟的路徑一定不能出錯
# 3. 第三個“-v”,把docker内子配置檔案的路徑也挂載了出來,注意要與 “2.” 中include指向路徑一緻
# 4. nginx.conf是挂載了一個檔案(docker是不推薦這樣用的),conf.d挂載的是一個目錄

docker run \
  --name nginx81 \
  -d -p 81:80 \
  -v /usr/docker/nginx81/html:/usr/share/nginx/html \
  -v /etc/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /etc/docker/nginx81/conf.d:/etc/nginx/conf.d \
  nginx           

    準備挂載的 nginx.conf :

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

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

        準備挂載的 default.conf :

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /api{
        proxy_pass http://192.168.1.1:9999/api;
        # access_log "logs/test.log";
    }
   


}
           

    上述的依然不夠靈活,可以直接進入容器操作:

    1) 啟動

# 啟動一個名 nginx81 的 nginx 容器
docker run --name nginx81 -d -p 81:80 -v \
/usr/docker/nginx81/html/:/usr/share/nginx/html:ro -d nginx
           
# 添加日志記錄啟動
docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html/:/usr/share/nginx/html:ro \
 -v /logs:/var/log/nginx -d nginx           
【轉載】Docker 安裝 Nginx 并個性化挂載配置檔案 nginx.conf

    2)拷貝容器内的配置檔案到本地,進行個性化配置等操作

docker cp nginx:/etc/nginx/nginx.conf /usr/docker/nginx81/nginx.conf

           

    3)重新指定配置檔案啟動

docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html:/usr/share/nginx/html:ro 
-v $PWD/logs:/var/log/nginx -v /usr/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx           

    4)進入容器

sudo docker exec -it d3a86da6fad1 /bin/bash

# 退出容器:Ctrl+P+Q
           

四、通過 Dockerfile 建構 Nginx 

相關連結

   · docker 官網 Nginx 安裝文檔: https://docs.docker.com/samples/library/nginx/#hosting-some-simple-static-content

    · Nginx 官網文檔:https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/

本文為部落客原創文章,轉載請注明出處!

https://my.oschina.net/u/3375733/blog/