1. RHEL8环境下Docker引擎部署指南
在Red Hat Enterprise Linux 8(RHEL8)系统中部署Docker引擎是现代化应用容器化的基础步骤。作为企业级Linux发行版,RHEL8默认采用Podman作为容器解决方案,但Docker仍然是业界广泛使用的容器运行时工具。以下是经过生产环境验证的标准安装流程:
1.1 系统环境预检
首先确认系统架构和版本兼容性:
cat /etc/redhat-release uname -m注意:RHEL8要求订阅有效才能访问官方软件源。若使用开发者订阅,需先执行
sudo subscription-manager register完成注册。
1.2 依赖包安装
Docker需要以下基础依赖:
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2特别需要检查container-selinux策略包版本:
sudo dnf list installed | grep container-selinux若版本低于2:2.95,需手动升级:
sudo dnf update -y container-selinux2. Docker官方仓库配置
2.1 添加Docker CE仓库
不同于社区版Linux,RHEL需要显式添加Docker官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo2.2 解决依赖冲突
由于RHEL8默认使用podman-docker兼容层,需先移除冲突包:
sudo dnf remove -y podman buildah然后安装containerd运行时:
sudo dnf install -y containerd.io3. Docker引擎安装与调优
3.1 核心组件安装
执行完整安装命令:
sudo dnf install -y docker-ce docker-ce-cli验证安装版本:
rpm -qi docker-ce | grep Version3.2 存储驱动配置
编辑/etc/docker/daemon.json优化存储驱动:
{ "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] }3.3 系统服务管理
启用并启动Docker服务:
sudo systemctl enable --now docker验证服务状态:
sudo systemctl status docker | grep Active4. Nginx容器化部署实战
4.1 镜像拉取策略
建议使用官方Nginx镜像并指定版本标签:
sudo docker pull nginx:1.21-alpine验证镜像完整性:
sudo docker image inspect nginx:1.21-alpine | grep -i checksum4.2 容器运行参数
生产环境推荐运行配置:
sudo docker run -d \ --name nginx-prod \ -p 80:80 \ -p 443:443 \ -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /path/to/html:/usr/share/nginx/html \ --restart unless-stopped \ --memory 512m \ --cpus 1 \ nginx:1.21-alpine关键参数说明:
--memory:限制容器内存使用--cpus:限制CPU核心数--restart:定义容器退出时的重启策略
4.3 性能调优建议
修改Nginx容器内核参数:
sudo sysctl -w net.core.somaxconn=65535 sudo sysctl -w net.ipv4.tcp_max_syn_backlog=655355. 常见问题排查手册
5.1 网络连接问题
若容器无法访问外部网络:
sudo firewall-cmd --permanent --zone=public --add-masquerade sudo firewall-cmd --reload5.2 存储驱动故障
当出现overlay2相关错误时:
- 清理现有容器:
sudo docker system prune -a -f- 重建存储目录:
sudo rm -rf /var/lib/docker/overlay2 sudo systemctl restart docker5.3 SELinux冲突解决
针对权限拒绝问题:
sudo chcon -Rt svirt_sandbox_file_t /path/to/volume或临时放宽策略:
sudo setenforce 06. 生产环境最佳实践
6.1 镜像安全扫描
定期扫描镜像漏洞:
sudo docker scan nginx:1.21-alpine6.2 资源监控方案
部署cAdvisor监控容器资源:
sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest6.3 日志管理策略
配置JSON文件日志驱动:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }查看日志:
sudo docker logs --tail 100 -f nginx-prod我在实际运维中发现,RHEL8上的Docker性能调优需要特别注意SELinux策略与cgroups v2的兼容性。建议定期执行sudo ausearch -m avc -ts recent审查安全事件,并通过sudo dnf update保持系统补丁最新状态。对于关键业务容器,应考虑部署DRBD实现存储高可用。