确保已安装 Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
验证 Docker 安装
docker --version
docker run --name mynginx -p 80:80 -d nginx
创建本地目录存放 Nginx 配置和网站文件
mkdir -p ~/nginx/{conf,html,logs}
获取默认 Nginx 配置文件
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 rm -f tmp-nginx
创建自定义 index.html (可选)
echo "<h1>My Custom Nginx Page</h1>" > ~/nginx/html/index.html
运行带自定义配置的容器
docker run --name mynginx \
-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 \
-d nginx
查看运行中的容器
docker ps
查看容器日志
docker logs mynginx
进入容器内部
docker exec -it mynginx bash
停止容器
docker stop mynginx
启动已停止的容器
docker start mynginx
重启容器
docker restart mynginx
删除容器
docker rm mynginx
拉取最新 Nginx 镜像
docker pull nginx:latest
停止并删除旧容器
docker stop mynginx
docker rm mynginx
使用相同配置重新创建容器
docker run --name mynginx \
-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 \
-d nginx
安装 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:latest
container_name: mynginx
ports:
- "80:80"
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
restart: unless-stopped
启动服务
docker-compose up -d
端口冲突:如果 80 端口被占用,可以改为其他端口如 -p 8080:80
权限问题:如果遇到权限错误,尝试:
sudo chmod -R 755 ~/nginx
配置文件错误:检查 Nginx 配置语法:
docker exec mynginx nginx -t
查看运行中的 Nginx 进程:
docker top mynginx
按照以上步骤,您应该能够在 CentOS 7 上成功部署并运行 Docker 化的 Nginx 服务。