插件窝 干货文章 CentOS7 Docker Nginx如何部署及运行

CentOS7 Docker Nginx如何部署及运行

Nginx Docker conf 容器 46    来源:    2025-04-23

CentOS 7 上 Docker 部署 Nginx 的完整指南

1. 准备工作

1.1 安装 Docker

如果尚未安装 Docker,请先执行以下命令:

# 卸载旧版本(如有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装必要工具
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

1.2 配置 Docker 用户组(可选)

为了避免每次使用 Docker 都需要 sudo,可以将当前用户加入 docker 组:

sudo usermod -aG docker $USER
# 然后需要重新登录使更改生效

2. 部署 Nginx

2.1 拉取 Nginx 镜像

docker pull nginx

2.2 运行 Nginx 容器

基本运行方式:

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

参数说明: - --name my-nginx:为容器指定一个名称 - -d:后台运行 - -p 80:80:将主机的80端口映射到容器的80端口

更推荐的运行方式(挂载配置和日志):

# 创建本地目录用于存放配置和日志
mkdir -p ~/nginx/{conf,html,logs}

# 复制默认配置到本地(可选)
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 ~/nginx/conf/
docker cp tmp-nginx:/usr/share/nginx/html ~/nginx/
docker rm -f tmp-nginx

# 运行容器并挂载本地目录
docker run --name my-nginx -d \
  -p 80:80 \
  -v ~/nginx/html:/usr/share/nginx/html \
  -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v ~/nginx/conf/conf.d:/etc/nginx/conf.d \
  -v ~/nginx/logs:/var/log/nginx \
  nginx

3. 验证安装

# 查看容器运行状态
docker ps

# 检查日志
docker logs my-nginx

# 访问测试
curl http://localhost

4. 常用管理命令

# 停止容器
docker stop my-nginx

# 启动已停止的容器
docker start my-nginx

# 重启容器
docker restart my-nginx

# 进入容器shell
docker exec -it my-nginx bash

# 删除容器
docker rm -f my-nginx

# 删除镜像
docker rmi nginx

5. 配置 HTTPS(可选)

如果需要配置 HTTPS,可以使用 Let's Encrypt 证书:

# 创建目录存放证书
mkdir -p ~/nginx/ssl

# 获取证书(使用certbot或其他方式)
# 假设证书已存放在 ~/nginx/ssl 目录下

# 运行带HTTPS的Nginx
docker run --name my-nginx -d \
  -p 80:80 \
  -p 443:443 \
  -v ~/nginx/html:/usr/share/nginx/html \
  -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v ~/nginx/conf/conf.d:/etc/nginx/conf.d \
  -v ~/nginx/logs:/var/log/nginx \
  -v ~/nginx/ssl:/etc/nginx/ssl \
  nginx

然后在 Nginx 配置中添加 HTTPS 相关配置。

6. 使用 Docker Compose(推荐)

对于更复杂的部署,建议使用 Docker Compose:

  1. 安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. 创建 docker-compose.yml 文件:
version: '3'
services:
  nginx:
    image: nginx
    container_name: my-nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx
      - ./nginx/ssl:/etc/nginx/ssl
    restart: unless-stopped
  1. 启动服务:
docker-compose up -d

这样就完成了在 CentOS 7 上使用 Docker 部署 Nginx 的全部过程。