如果尚未安装 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
为了避免每次使用 Docker 都需要 sudo
,可以将当前用户加入 docker 组:
sudo usermod -aG docker $USER
# 然后需要重新登录使更改生效
docker pull 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
# 查看容器运行状态
docker ps
# 检查日志
docker logs my-nginx
# 访问测试
curl http://localhost
# 停止容器
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
如果需要配置 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 相关配置。
对于更复杂的部署,建议使用 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
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
docker-compose up -d
这样就完成了在 CentOS 7 上使用 Docker 部署 Nginx 的全部过程。