使用 Docker run 部署 Nginx:配置文件挂载的关键操作

Docker 提供了一种轻量级、可移植的方式部署应用,Nginx 作为高性能 Web 服务器,通过 Docker 部署可以极大简化配置管理。以下是使用 docker run 部署 Nginx 并挂载配置文件的具体操作。


拉取 Nginx 官方镜像

从 Docker Hub 获取最新的 Nginx 镜像:

docker pull nginx:latest

验证镜像是否下载成功:

docker images


创建本地配置文件目录

在宿主机上创建目录用于存放 Nginx 配置文件:

mkdir -p ~/nginx/conf
mkdir -p ~/nginx/html

默认配置文件可从容器中复制到宿主机:

docker run --name tmp-nginx -d nginx
docker cp tmp-nginx:/etc/nginx/nginx.conf ~/nginx/conf/
docker cp tmp-nginx:/etc/nginx/conf.d/default.conf ~/nginx/conf/
docker rm -f tmp-nginx


启动容器并挂载配置文件

通过 -v 参数将宿主机目录挂载到容器内:

docker run -d \
  --name my-nginx \
  -p 80:80 \
  -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v ~/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \
  -v ~/nginx/html:/usr/share/nginx/html \
  nginx

参数说明:

  • -p 80:80:将宿主机的 80 端口映射到容器。
  • -v:挂载配置文件及静态资源目录。

验证配置生效

修改宿主机上的 default.conf 文件,例如更改监听端口或添加路由规则:

server {
    listen 8080;
    server_name localhost;
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

重启容器使配置生效:

docker restart my-nginx

访问 http://localhost:8080 测试是否生效。


动态更新配置的小技巧

通过 docker exec 进入容器内部检查配置语法:

docker exec -it my-nginx nginx -t

若配置无误,重新加载 Nginx 而不中断服务:

docker exec my-nginx nginx -s reload


常见问题排查

  1. 权限问题
    确保宿主机挂载目录对容器用户可读:

    chmod -R 755 ~/nginx
    

  2. 配置文件错误
    若容器启动失败,查看日志定位问题:

    docker logs my-nginx
    

  3. 端口冲突
    若宿主机端口被占用,修改 -p 参数为其他端口(如 -p 8080:80)。


完整命令示例

以下为整合后的完整部署命令:

# 拉取镜像
docker pull nginx

# 创建目录并复制默认配置
mkdir -p ~/nginx/{conf,html}
docker run --name tmp-nginx -d nginx
docker cp tmp-nginx:/etc/nginx/nginx.conf ~/nginx/conf/
docker cp tmp-nginx:/etc/nginx/conf.d/default.conf ~/nginx/conf/
docker rm -f tmp-nginx

# 启动容器
docker run -d \
  --name my-nginx \
  -p 80:80 \
  -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v ~/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \
  -v ~/nginx/html:/usr/share/nginx/html \
  nginx

通过上述步骤,可实现灵活的 Nginx 配置管理,同时保留 Docker 的隔离性和便携性。

更多推荐