Docke搭建:Nginx

12/31/2024 运维操作系统Docker

目录


参考:


# Docke搭建:Nginx

# 环境依赖

软件/系统 版本 架构 包名 备注
Windows 11 x86_64

# 查询镜像

# 查询nginx镜像
docker search nginx
1
2

# 拉取镜像

# 拉取对应的版本镜像
docker pull nginx:latest
1
2
# 检查镜像
docker images
1
2

# 启动容器

创建挂载目录

mkdir -p /data/nginx/{conf,html,log}
mkdir -p /data/nginx/conf/conf.d
1
2

复制配置文件

# 创建临时nginx容器,用于复制配置文件
docker run --name nginx \
           -p 80:80 \
           -d nginx:latest
1
2
3
4
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf

# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/

# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /data/nginx
1
2
3
4
5
6
7
8
#停止并删除创建的临时nginx容器
docker stop nginx
docker rm nginx
1
2
3

创建&启动容器

#创建nginx容器,并将nginx目录映射到宿主机
docker run --name nignx \
           -p 80:80 \
           -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
           -v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
           -v /data/nginx/log:/var/log/nginx \
           -v /data/nginx/html:/usr/share/nginx/html \
           -d nginx:latest
1
2
3
4
5
6
7
8

命令结束,输出的是容器的 ID,表示容器已成功启动。

# 检查容器的状态
docker ps -a
# 查看日志
docker logs nginx
1
2
3
4

访问服务器ip:80例:http://127.0.0.1:80/ (opens new window)

# 进入容器

# 进入Nginx容器
docker exec -it nginx /bin/bash
1
2
#检查配置文件是否正确
nginx -t
1
2
# 不重启重新加载配置文件
nginx -s reload
1
2

# Docker Compose 安装 Nginx 指南

# 一、准备工作

  1. 环境要求

    • Docker 已安装(版本 20.10+)
    • Docker Compose 已安装(版本 v2.20+)
    • 系统:Linux/Windows/macOS(推荐 Linux)
  2. 创建目录结构

    mkdir -p ~/nginx-docker/{conf,conf/conf.d,html,log}
    
    1

# 二、获取 Nginx 默认配置

# 创建临时容器复制配置文件
docker run --name nginx-temp -d nginx:latest
docker cp nginx-temp:/etc/nginx/nginx.conf ~/nginx-docker/conf/
docker cp nginx-temp:/etc/nginx/conf.d/ ~/nginx-docker/conf/
docker cp nginx-temp:/usr/share/nginx/html/ ~/nginx-docker/
docker stop nginx-temp && docker rm nginx-temp
1
2
3
4
5
6

# 三、创建 docker-compose.yml

~/nginx-docker 目录创建文件:

version: '3.8'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"  # 可选 HTTPS 端口
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      - ./conf/conf.d:/etc/nginx/conf.d
      - ./log:/var/log/nginx
      - ./html:/usr/share/nginx/html
    restart: unless-stopped
    networks:
      - nginx-net

networks:
  nginx-net:
    driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 四、启动 Nginx 服务

cd ~/nginx-docker
docker compose up -d
1
2

# 五、验证操作

  1. 检查容器状态

    docker ps -a | grep nginx
    
    1
  2. 测试默认页面: 访问 http://localhost 应显示 Nginx 欢迎页

  3. 查看日志

    docker logs nginx
    
    1
  4. 进入容器

    docker exec -it nginx /bin/bash
    
    1

# 六、管理命令

操作 命令
启动服务 docker compose up -d
停止服务 docker compose down
重启服务 docker compose restart
重载配置 docker exec nginx nginx -s reload
测试配置 docker exec nginx nginx -t

# 七、自定义配置

  1. 修改主配置: 编辑 ~/nginx-docker/conf/nginx.conf

  2. 添加 Server 配置: 在 ~/nginx-docker/conf/conf.d/ 创建 mysite.conf

    server {
        listen 80;
        server_name example.com;
        
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  3. 更新网页内容: 将文件放入 ~/nginx-docker/html/


# 八、反向代理配置示例

location / {
    proxy_pass http://app-server:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
1
2
3
4
5
6
7

:需要确保被代理服务与 Nginx 在同一 Docker 网络中


# 常见问题解决

  1. 端口冲突: 修改 docker-compose.yml 中的端口映射(如 8080:80

  2. 配置错误

    docker exec nginx nginx -t  # 测试配置文件语法
    
    1
  3. 权限问题: 在 Linux 系统添加 :Z 到 volume 路径(如 ./html:/usr/share/nginx/html:Z

此方案结合了链接1的 Docker 部署思路和链接2的配置管理实践,使用 Compose 简化了流程,同时保留了配置灵活性。

上次更新时间: 6/24/2025, 2:51:55 AM