Docker学习笔记三.Docker容器之Nginx

我自己里的Docker容器就是使用Docker镜像启动了一个ke的容器(目前理解,后期再说吧)。


  

1.安装启动nginx容器

#1. 用docker search nginx 命令来查看可用版本
docker search nginx
#2. 这里我们拉取官方的1.8.1版本的镜像:
     docker pull nginx:1.8.1

#3. 安装完成后,我们可以使用以下命令来运行 nginx 容器:
     docker run --name nginx-test -p 80:80 -d nginx:1.8.1

#参数说明:
   #  --name nginx-test:容器名称。
   #  -p 80:80: 端口进行映射,将本地 80 端口映射到容器内部的 80 端口。
   #  -d nginx: 设置容器在在后台一直运行。

#4. 最后可以通过浏览器可以直接访问 80 端口的nginx 服务

以上命令启动了nginx程序!都是初始的配置及文件。

2.docker nginx关键目录映射到本机

mkdir -p /data/nginx/www /data/nginx/logs /data/nginx/conf/conf.d /data/nginx/ssl   #首先在本机创建nginx的一些文件存储目录

www:映射nginx存储网站网页的目录
logs: 映射nginx日志目录
conf: 映射nginx配置文件目录
ssl:   映射ssl文件目录

将nginx-test容器默认的配置文件copy到本地

docker cp nginx-test:/etc/nginx/nginx.conf /data/nginx/conf/ #拷贝nginx容器内的nginx.conf配置文件
docker cp nginx-test:/etc/nginx/conf.d/ /data/nginx/conf/    #拷贝nginx容器内的default.conf,example_ssl.conf配置文件

 使用docker rm nginx-test命令,删除旧的nginx-test容器。(这行划重点!这行划重点!这行划重点!!)

 使用以下命令创建新nginx容器nginx-test并将www,logs,conf目录映射到本地服 

docker run -d -p 80:80 -p 443:443 --name nginx-test 
-v /docker/www:/usr/share/nginx/html 
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d 
-v /docker/nginx/logs:/var/log/nginx 
-v /docker/nginx/ssl:/etc/nginx/ssl 
nginx:1.8.1

#注:上面命令是一行,为了方便理解,换行了!!!换行了!!!换行了!!! 你也可以直接复制使用。

 

 启动nginx(访问80端口应该会报403的错误!需要在/data/nginx/www目录下创建index.html,就可以了,因为他映射到本地而本地没有文件。)

docker start nginx-test

  

3.docker nginx配置https访问

配置文件只需要修改本地目录就可以了,因为上一步已经映射到本地了,要修改的本地配置文件路径:/data/nginx/conf/

首先是nginx.conf文件,这个文件默认的配置就行,可不修改。

我们来修改配置文件/data/nginx/conf/conf.d/default.conf,可以满足我们绝大部分需求。以下沃得配置文件内容:

server {
    listen    80;       #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
    listen    443 ssl;
    server_name  aiho.site;             #域名

    # 增加ssl
    #ssl on;        #如果强制HTTPs访问,这行要打开
    ssl_certificate       /etc/nginx/ssl/aiho.pem;
    ssl_certificate_key   /etc/nginx/ssl/aiho.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    # 指定密码为openssl支持的格式
    ssl_protocols  SSLv2 SSLv3 TLSv1.2;

    ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
    ssl_prefer_server_ciphers  on;   # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码

     # 定义首页索引目录和名称
    location / {
      root   /usr/share/nginx/html;
      index  index.html index.htm;
    }

    #重定向错误页面到 /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
docker restart nginx-test    #重启nginx容器

重启nginx容器后,现在就可以通过https来访问nginx的服务器了。

nginx配置结束了。


-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d

原文地址:https://www.cnblogs.com/chenghu/p/14355157.html