1、拉取nginx

  1. $ docker pull nginx

2、试运行nginx,并将容器中nginx的相关文件拷贝至本机

  1. $ docker run -itd --name test-nginx -p 6606:80 nginx

2.1、进入容器

  1. $ docker exec -it test-nginx /bin/bash

2.2、查找包含nginx的目录

  1. $ whereis nginx
  2. # nginx环境变量路径
  3. $ which nginx

会显示下方路径

nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx

查看目录结构,若遇到问题,传送门

  1. $ tree

结合windowsnginx目录我们可以在以下四个文件中看出,最主要的是以下两个路径

/etc/nginx:包含所需要的配置文件nginx.conf,conf.d目录下的default.conf /usr/share/nginx/html:包含所需要的启动文件目录

image.png
那还有一点,日志哪去了呢?打开配置文件看看!!!
image.png
从这里可以看出
日志文件在/var/log/nginx目录下面
启动的文件在/var/run/nginx.pid
很重要的一点 最后一行 引入了 /etc/nginx/conf.d/ 文件下所有的配置文件
通过查看default.conf文件的信息 默认的页面路径 /usr/share/nginx/html
退出容器exit,回车

2.3、总结:

最重要的地方为以下四点,需要通过这四点将目录挂载到宿主机,那样妈妈再也不怕我丢失数据了,备份也方便。

  1. # 日志路径
  2. /var/log/nginx
  3. # 启动文件目录
  4. /usr/share/nginx/html
  5. # 配置文件
  6. /etc/nginx/nginx.conf
  7. /etc/nginx/conf.d目录下的所有配置文件

OK,知道了上面这些,接下来正式开始docker配置nginx

3、docker 安装 nginx

3.1 前提准备

将测试容器中的配置文件复制到宿主机中,不然等会挂载目录会报错

  1. $ docker cp 容器名:容器内部目录 宿主机目录
  2. e.g
  3. $ docker cp test-nginx:/etc/nginx/nginx.conf /home/service/nginx/nginx.conf
  4. $ docker cp test-nginx:/etc/nginx/conf.d /home/service/nginx/conf.d
  5. $ docker cp test-nginx:/usr/share/nginx/html /home/service/nginx/html

image.png

3.2、卸载之前的测试容器

  1. $ docker stop test-nginx
  2. $ docker rm test-nginx

3.3、安装nginx

端口映射可以根据实际情况选择

  1. $ docker run -it --name mynginx -p 6606:80 \
  2. -v /home/service/nginx/conf.d:/etc/nginx/conf.d \
  3. -v /home/service/nginx/nginx.conf:/etc/nginx/nginx.conf \
  4. -v /home/service/nginx/log:/var/log/nginx \
  5. -v /home/service/nginx/html:/usr/share/nginx/html \
  6. --restart=always nginx

image.png
image.png
ctrl+c停止运行,重启容器

  1. $ docker restart mynginx

image.png
已经运行成功了,接下来就可以将实际需要启动的项目放到/home/service/nginx/html中,并且修改配置文件启动它。
对宿主机挂载目录的修改会直接同步到容器中。

小知识:

在docker中进行目录挂载后,需要通过nginx发布的项目都需要放到实际宿主机映射的目录,容器内部是无法访问宿主机目录的。
除非是直接在linux上安装nginx

4、参考文档

https://my.oschina.net/u/3690153/blog/4287739