步骤一:先在宿主机创建所需目录结构
首先需要在宿主机的
/opt/docker/nginx 下创建对应的子目录,分别存放配置、网页内容和日志,避免 Docker 启动时因目录不存在而报错(Docker 自动创建目录会是 root 权限,可能引发权限问题)。# 创建主目录和子目录(conf:配置目录,html:网页内容目录,logs:日志目录)
mkdir -p /opt/docker/nginx/{conf,html,logs}
创建完成后,目录结构如下:
/opt/docker/nginx/
├── conf # 存放 Nginx 配置文件
├── html # 存放 Nginx 默认网页内容
└── logs # 存放 Nginx 访问日志、错误日志
步骤二:复制 Nginx 默认配置文件到宿主机(关键)
因为直接挂载空的
conf 目录会覆盖容器内的 Nginx 默认配置,导致 Nginx 无法正常启动,所以需要先启动一个临时 Nginx 容器,将默认配置文件复制到宿主机的 /opt/docker/nginx/conf 目录中。- 启动临时 Nginx 容器(命名为
tmp-nginx):
docker run --name tmp-nginx -d nginx
2.复制容器内的 Nginx 核心配置文件到宿主机的目标目录:
# 复制 nginx.conf(主配置文件)
docker cp tmp-nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf/
# 复制 conf.d 目录(虚拟主机配置目录,默认包含 default.conf)
docker cp tmp-nginx:/etc/nginx/conf.d /opt/docker/nginx/conf/
3.停止并删除临时容器(已完成配置文件复制,无需保留):
docker stop tmp-nginx && docker rm tmp-nginx
步骤三:创建并启动挂载目录的 Nginx 容器
使用
docker run 命令启动 Nginx 容器,同时完成目录挂载、端口映射(宿主机 80 端口映射到容器 80 端口),命令如下:docker run \
--name nginx \
-p 80:80 \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/logs:/var/log/nginx \
--restart=always \
-d nginx