CentOS 部署容器化 Nginx 指南

1. Dockerfile 编写

创建基础配置文件:

# 使用官方Nginx镜像
FROM nginx:alpine

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

# 添加自定义配置
COPY nginx.conf /etc/nginx/conf.d/

# 暴露80端口
EXPOSE 80

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

创建配套的 nginx.conf 配置文件:

server {
    listen 80;
    server_name localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }
}

2. 镜像构建

执行构建命令:

# 构建镜像(注意最后有个点)
docker build -t my-nginx:v1 .

# 验证镜像
docker images | grep my-nginx

输出示例:

REPOSITORY   TAG    IMAGE ID      CREATED         SIZE
my-nginx     v1     a1b2c3d4e5f   2 minutes ago   23.5MB

3. 容器自启动配置
(1) 直接运行容器
docker run -d \
  --name nginx-container \
  --restart always \  # 关键自启动参数
  -p 8080:80 \
  my-nginx:v1

(2) 通过Systemd管理(推荐生产环境)

创建服务文件 /etc/systemd/system/nginx-container.service

[Unit]
Description=Nginx Container
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker rm -f nginx-container
ExecStart=/usr/bin/docker run --name nginx-container -p 8080:80 my-nginx:v1
ExecStop=/usr/bin/docker stop nginx-container
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

启用服务:

systemctl daemon-reload
systemctl enable nginx-container  # 设置开机自启
systemctl start nginx-container   # 立即启动

4. 验证部署
# 检查容器状态
docker ps -f name=nginx-container

# 测试访问
curl http://localhost:8080

正常应返回Nginx欢迎页面HTML代码。

常见问题处理
  1. 端口冲突

    netstat -tuln | grep 8080  # 检查端口占用
    

    修改 docker run-p 参数或配置文件端口号

  2. 配置更新

    docker exec nginx-container nginx -s reload
    

  3. 日志查看

    docker logs -f nginx-container
    

最佳实践

  • 使用 alpine 版本镜像减小体积
  • 通过 -v 参数挂载配置文件实现热更新
  • 生产环境建议添加TLS证书和访问控制

更多推荐