一、准备镜像
1. 获取nginx镜像
docker searhc nginx
nginx官方镜像网站
https://hub.docker.com/search?q=nginx&type=image
2. 拉取镜像
docker pull nginx
3. 查看镜像
docker image list
二、临时安装
1. docker启动nginx
docker run \
-p 80:80 \
--name nginx \
-d \
nginx
- —name 指定容器名称,此处我指定的是mynginx
- -d 指定容器以守护进程方式在后台运行
- -p 指定主机与容器内部的端口号映射关系,
格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机8888端口,映射容器8888端口
2. 查看容器
3. 访问
- 本地访问
curl 127.0.0.1
- 能看到返回的HTML代码
4. 为正式nginx做准备
4.1 新建挂载目录
在主机 /mnt | /home 任意一个目录下执行命令创建挂载目录
创建文件夹
mkdir -p /mnt/nginx/{conf.d,html,log,cert}
- conf.d - nginx配置
- html - 存放静态html文件
- log - 存放访问日志
- cert - 存放https的ssl证书
4.2 复制nginx容器内文件
从nginx的docker容器中复制原始配置到主机挂载目录里
docker cp nginx:/etc/nginx/nginx.conf /mnt/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d/ /mnt/nginx/conf.d/
docker cp nginx:/usr/share/nginx/html/ /mnt/nginx/html/
docker cp nginx:/var/log/nginx/ /mnt/nginx/logs/
5. 停止容器并删除
docker ps
docker stop ef
docker rm ef
-
三、正式部署nginx
docker run \
--name nginx \
-d \
-p 80:80 \
-p 443:443 \
-v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/nginx/log:/var/log/nginx \
-v /mnt/nginx/html:/usr/share/nginx/html \
-v /mnt/nginx/conf.d:/etc/nginx/conf.d \
-v /mnt/nginx/cert:/etc/nginx/cert \
nginx:latest
—name 指定容器名称,此处我指定的是mynginx
- -d 指定容器以守护进程方式在后台运行
- -p 指定主机与容器内部的端口号映射关系,
格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机8888端口,映射容器8888端口
-v 挂载目录,格式 -v 主机目录:容器内目录
表示将主机目录与容器目录之间进行共享,
—privileged=true
容器内部对挂载的目录拥有读写等特权
四、配置nginx
server
{
listen 80;
server_name xxx.gongshu.gov.cn;
#charset koi8-r;
access_log /var/log/nginx/xxx.gongshu.gov.cn.log main;
location /
{
index index.html index.htm;
}
}
server
{
listen 443 ssl;
server_name xxx.gongshu.gov.cn;
ssl_certificate /etc/nginx/cert/gongshu.gov.cn.crt;
ssl_certificate_key /etc/nginx/cert/gongshu.gov.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/xxx.gongshu.gov.cn.log main;
location /
{
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
location /nginx
{
index index.html index.htm;
}
}