插件窝 干货文章 CentOS7 Docker Nginx部署及运行实例分析

CentOS7 Docker Nginx部署及运行实例分析

Nginx Docker conf 容器 254    来源:    2025-04-25

CentOS7 Docker Nginx部署及运行实例分析

1. 环境准备

首先确保你的CentOS7系统已经安装了Docker:

# 安装必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
sudo docker --version

2. 拉取Nginx镜像

# 拉取官方Nginx镜像(默认最新版)
sudo docker pull nginx

# 或者指定版本
sudo docker pull nginx:1.21.6

3. 运行Nginx容器

简单运行

# 运行一个简单的Nginx容器
sudo docker run --name my-nginx -p 80:80 -d nginx

带自定义配置运行

  1. 首先创建本地目录存放Nginx配置和网站文件:
mkdir -p ~/nginx-docker/{conf,html,logs}
  1. 获取默认Nginx配置(可选):
# 运行临时容器获取默认配置
sudo docker run --name tmp-nginx -d nginx
sudo docker cp tmp-nginx:/etc/nginx/nginx.conf ~/nginx-docker/conf/
sudo docker cp tmp-nginx:/etc/nginx/conf.d ~/nginx-docker/conf/
sudo docker rm -f tmp-nginx
  1. 创建自定义index.html:
echo "<h1>Welcome to My Nginx Docker Site</h1>" > ~/nginx-docker/html/index.html
  1. 运行带挂载的容器:
sudo docker run --name my-nginx \
  -p 80:80 \
  -v ~/nginx-docker/html:/usr/share/nginx/html \
  -v ~/nginx-docker/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v ~/nginx-docker/conf/conf.d:/etc/nginx/conf.d \
  -v ~/nginx-docker/logs:/var/log/nginx \
  -d nginx

4. 验证运行

# 查看运行中的容器
sudo docker ps

# 检查容器日志
sudo docker logs my-nginx

# 测试访问
curl http://localhost

5. 常见问题分析

端口冲突

错误现象:Bind for 0.0.0.0:80 failed: port is already allocated

解决方案: 1. 停止占用80端口的服务 2. 或者修改映射端口,如 -p 8080:80

权限问题

错误现象:Permission denied 当挂载本地文件时

解决方案: 1. 确保挂载的本地文件有正确权限 2. 或者使用 --privileged=true 参数运行容器(不推荐生产环境)

配置错误

错误现象:容器启动后立即退出

解决方案: 1. 检查Nginx配置文件是否正确 2. 使用 docker logs 查看错误日志 3. 可以进入容器调试: bash sudo docker exec -it my-nginx bash nginx -t # 测试配置

6. 生产环境建议

  1. 使用Docker Compose管理多容器
  2. 创建自定义Dockerfile构建Nginx镜像
  3. 配置日志轮转
  4. 设置资源限制
  5. 使用健康检查

7. 示例Docker Compose文件

version: '3'
services:
  nginx:
    image: nginx:1.21.6
    container_name: my-nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf/conf.d:/etc/nginx/conf.d
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/logs:/var/log/nginx
    restart: unless-stopped
    networks:
      - frontend

networks:
  frontend:
    driver: bridge

8. 自定义Dockerfile示例

FROM nginx:1.21.6

# 移除默认配置
RUN rm /etc/nginx/conf.d/default.conf

# 复制自定义配置
COPY nginx.conf /etc/nginx/nginx.conf
COPY conf.d/ /etc/nginx/conf.d/

# 复制网站文件
COPY html/ /usr/share/nginx/html/

# 暴露端口
EXPOSE 80 443

# 启动命令
CMD ["nginx", "-g", "daemon off;"]

通过以上步骤,你可以在CentOS7上成功部署和运行Docker化的Nginx服务,并根据需要进行定制化配置。