#拉取镜像
docker pull nginx:1.19.0
#先启动一个容器
docker run --name nginx -p 80:80 -p 443:443 --privileged=true -d nginx:1.19.0
#创建好需要挂载的目录
mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/conf.d
mkdir -p /usr/local/nginx/logs
mkdir -p /usr/local/nginx/ssl
#拷贝容器中的配置文件到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/
docker cp nginx:/etc/nginx/conf.d/default.conf /usr/local/nginx/conf.d/
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/
#拷贝完成之后停止容器,删除容器
docker stop nginx
docker rm -f nginx
#把ssl证书上传到宿主机(没有就跳过这一步)
#上传到这个目录下面,ssl是我们刚才创建的目录
/usr/local/nginx/ssl
后面配置ssl证书文件需要注意路径
#证书文件名称
ssl_certificate_key
/etc/nginx/ssl/xx
.key;
#私钥文件名称 .crt和.pem都可以用
ssl_certificate
/etc/nginx/ssl/xx
.pem;
*注意:虽然证书存放位置是 /usr/local/nginx/ssl,但是配置里面要写 /etc/nginx/ssl 而不是 /usr/local/nginx/ssl,不然启动会报错,因为配置里面的绝对路径,都是在nginx容器里面的地址,和主机里面的目录地址是两个东西,后面启动目录挂载的时候,是可以读到证书的,不用担心。
#重新启动有挂载目录的新的容器
docker run --name nginx -p 80:80 -p 443:443 -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/logs:/var/log/nginx -v /usr/local/nginx/ssl:/etc/nginx/ssl --privileged=true -d --restart=always nginx:1.19.0
浏览器访问 http://ip:80