«

Docker运行Nginx,挂载配置文件和网页

时间:2026-10-8 08:25     作者:emer     分类: 无


前言

用Docker跑Nginx,想改网站文件、改配置,每次进容器里改太麻烦。挂载出来就方便多了。本文讲怎么挂载网页和配置文件。

一、基本运行

最简单的跑法

docker run -d --name nginx -p 80:80 nginx

问题: 网站文件和配置都在容器里,改起来不方便。

二、挂载网页目录

完整命令

docker run -d \
  --name nginx \
  -p 80:80 \
  -v /data/www:/usr/share/nginx/html \
  nginx

解释

这样直接在宿主机改网页文件,刷新浏览器就生效了。

测试

在宿主机创建index.html:

echo "<h1>Hello Docker Nginx</h1>" > /data/www/index.html

浏览器访问:

http://服务器IP

就能看到了。

三、挂载配置文件

1. 先从容器里拷出默认配置

docker run -d --name nginx nginx
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/nginx.conf
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf.d
docker rm -f nginx

2. 挂载配置文件

docker run -d \
  --name nginx \
  -p 80:80 \
  -v /data/www:/usr/share/nginx/html \
  -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \
  -v /data/nginx/conf.d:/etc/nginx/conf.d \
  nginx

3. 改配置

直接在宿主机改 /data/nginx/conf.d/default.conf,改完重载:

docker exec nginx nginx -s reload

四、挂载日志

docker run -d \
  --name nginx \
  -p 80:80 \
  -v /data/www:/usr/share/nginx/html \
  -v /data/nginx/logs:/var/log/nginx \
  nginx

日志直接在宿主机看:

tail -f /data/nginx/logs/access.log

五、Docker Compose完整配置

version: '3'
services:
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /data/www:/usr/share/nginx/html
      - /data/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /data/nginx/conf.d:/etc/nginx/conf.d
      - /data/nginx/logs:/var/log/nginx

启动:

docker-compose up -d

六、常用操作

重载配置

改了配置文件后:

docker exec nginx nginx -s reload

查看日志

docker logs nginx
# 实时看
docker logs -f nginx

进容器

docker exec -it nginx sh

七、常见坑

坑1:挂载后网站403

原因: 宿主机目录权限不对。

解决:

chmod -R 755 /data/www
chown -R nginx:nginx /data/www

坑2:改了配置不生效

原因: 没重载配置。

解决:

docker exec nginx nginx -s reload

坑3:挂载文件不存在,变成目录

-v /data/nginx.conf:/etc/nginx/nginx.conf

如果 /data/nginx.conf 不存在,Docker会自动建一个叫nginx.conf的目录。

解决: 先创建文件:

touch /data/nginx.conf

坑4:端口被占用

80端口被宿主机的Nginx占了。

解决: 停掉宿主机的Nginx,或者换端口。

坑5:改了代码不生效

如果用了CDN或者浏览器缓存,强刷一下(Ctrl+F5)。

八、多站点配置

在 /data/nginx/conf.d/ 下建多个配置文件:

/data/nginx/conf.d/
├── site1.conf
├── site2.conf
└── default.conf

site1.conf:

server {
    listen 80;
    server_name site1.com;
    root /data/www/site1;
    index index.html;
}

改完重载:

docker exec nginx nginx -s reload

九、HTTPS配置

挂载证书:

docker run -d \
  --name nginx \
  -p 80:80 \
  -p 443:443 \
  -v /data/www:/usr/share/nginx/html \
  -v /data/nginx/conf.d:/etc/nginx/conf.d \
  -v /data/ssl:/etc/nginx/ssl \
  nginx

配置文件里引用证书:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    root /data/www;
}

总结

记住:

  1. 挂载网页目录:-v /data/www:/usr/share/nginx/html
  2. 挂载配置文件:-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf
  3. 挂载日志:-v /data/nginx/logs:/var/log/nginx
  4. 改完配置重载:docker exec nginx nginx -s reload

最常用:

docker run -d --name nginx -p 80:80 \
  -v /data/www:/usr/share/nginx/html \
  -v /data/nginx/conf.d:/etc/nginx/conf.d \
  nginx

遇到问题加QQ23979811 协助处理

标签: Nginx Docker 配置文件 挂载 网页目录