Docker 安裝 Nginx 並個性化掛載配置文件 nginx.conf

 

    首先,系統(3.8以上內核的linux)中安裝好 Docker 這個運用程序。因爲網絡緣由,咱們下載一個Docker官方的鏡像須要很長的時間,甚至下載失敗。爲此,阿里雲容器鏡像服務提供了官方的鏡像站點,從而加速官方鏡像的下載速度。 [ 不會的能夠參考我以前的文章:Docker <一> 架構簡介與Linux上安裝 http://www.javashuo.com/article/p-qdsjcbsd-bh.html]。html

 

1、Docker pull 安裝 Nginx 

    一、查看docker倉庫中的 nginx 命令

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

    以看到下圖所示的信息:linux

        

    二、爲選定須要pull到系統中的官方 Nginx 鏡像

# docker pull nginx -------- nginx 爲選定須要pull到系統中的官方 nginx 鏡像

docker pull nginx

        

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

    若見下圖證實pull成功。 docker

        

2、查看並啓動Docker 鏡像

    一、列出已下載的鏡像

# 使用 docker images 命令便可列出已下載的鏡像

docker images

    執行命令後,可看到相似於以下的表格:api

        

    二、列出運行中的容器

# 使用 docker ps 命令便可列出運行中的容器
docker ps


# 使用 docker ps -a 命令便可列出全部(包括已中止的)的容器
docker ps -a

    執行命令後,可看到相似於以下的表格:bash

        

    能夠發現,目前沒有運行的 nginx 容器。故,接下來咱們新建並啓動一個 nginx 容器。網絡

        

3、啓動容器,部署nginx並修改配置文件

    一、啓動跑個靜態網頁,測試下 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

        

    訪問 http://Docker宿主機IP:指定的Docker宿主機端口 ,能夠訪問說明架構

        

    二、部署nginx 項目並修改配置文件

    通常狀況下docker啓動時進行配置,只要把配置文件的目錄掛載出來就能夠,可是nginx倒是先加載一個主配置文件nginx.conf,在nginx.conf裏再加載conf.d目錄下的子配置文件(通常最少一個default.conf文件)。 app

# 普通的掛載方式
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 加載自定義配置:tcp

# 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

        

    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

4、經過 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/

相關文章
相關標籤/搜索