一、准备镜像

1. 获取nginx镜像

  1. docker searhc nginx

nginx官方镜像网站

https://hub.docker.com/search?q=nginx&type=image

2. 拉取镜像

  1. docker pull nginx

3. 查看镜像

docker image list
image.png

二、临时安装

1. docker启动nginx

  1. docker run \
  2. -p 80:80 \
  3. --name nginx \
  4. -d \
  5. nginx
  • —name 指定容器名称,此处我指定的是mynginx
  • -d 指定容器以守护进程方式在后台运行
  • -p 指定主机与容器内部的端口号映射关系,

格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机8888端口,映射容器8888端口

2. 查看容器

docker ps
image.png

3. 访问

  • 本地访问

curl 127.0.0.1

  • 能看到返回的HTML代码

4. 为正式nginx做准备

4.1 新建挂载目录

在主机 /mnt | /home 任意一个目录下执行命令创建挂载目录

创建文件夹

  1. mkdir -p /mnt/nginx/{conf.d,html,log,cert}
  • conf.d - nginx配置
  • html - 存放静态html文件
  • log - 存放访问日志
  • cert - 存放https的ssl证书

    4.2 复制nginx容器内文件

    从nginx的docker容器中复制原始配置到主机挂载目录里

  1. docker cp nginx:/etc/nginx/nginx.conf /mnt/nginx/conf/nginx.conf
  2. docker cp nginx:/etc/nginx/conf.d/ /mnt/nginx/conf.d/
  3. docker cp nginx:/usr/share/nginx/html/ /mnt/nginx/html/
  4. docker cp nginx:/var/log/nginx/ /mnt/nginx/logs/

5. 停止容器并删除

  1. docker ps
  2. docker stop ef
  3. docker rm ef
  • 注:ef 为容器id 例如: nginx

    三、正式部署nginx

    1. docker run \
    2. --name nginx \
    3. -d \
    4. -p 80:80 \
    5. -p 443:443 \
    6. -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf \
    7. -v /mnt/nginx/log:/var/log/nginx \
    8. -v /mnt/nginx/html:/usr/share/nginx/html \
    9. -v /mnt/nginx/conf.d:/etc/nginx/conf.d \
    10. -v /mnt/nginx/cert:/etc/nginx/cert \
    11. nginx:latest
  • —name 指定容器名称,此处我指定的是mynginx

  • -d 指定容器以守护进程方式在后台运行
  • -p 指定主机与容器内部的端口号映射关系,

格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机8888端口,映射容器8888端口

  • -v 挂载目录,格式 -v 主机目录:容器内目录

    表示将主机目录与容器目录之间进行共享,

  • —privileged=true

容器内部对挂载的目录拥有读写等特权

四、配置nginx

  1. server
  2. {
  3. listen 80;
  4. server_name xxx.gongshu.gov.cn;
  5. #charset koi8-r;
  6. access_log /var/log/nginx/xxx.gongshu.gov.cn.log main;
  7. location /
  8. {
  9. index index.html index.htm;
  10. }
  11. }
  12. server
  13. {
  14. listen 443 ssl;
  15. server_name xxx.gongshu.gov.cn;
  16. ssl_certificate /etc/nginx/cert/gongshu.gov.cn.crt;
  17. ssl_certificate_key /etc/nginx/cert/gongshu.gov.cn.key;
  18. ssl_session_timeout 5m;
  19. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  20. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  21. ssl_prefer_server_ciphers on;
  22. access_log /var/log/nginx/xxx.gongshu.gov.cn.log main;
  23. location /
  24. {
  25. proxy_pass http://127.0.0.1:8080/;
  26. proxy_set_header X-Real-IP $remote_addr;
  27. proxy_set_header Host $host;
  28. }
  29. location /nginx
  30. {
  31. index index.html index.htm;
  32. }
  33. }

参考资料