RedHat 7.6系统下Docker 20.10.14离线安装全攻略(附避坑指南)
RedHat 7.6系统下Docker 20.10.14离线安装全攻略(附避坑指南)
在企业内网环境中,离线安装Docker是许多运维团队面临的常见挑战。特别是在金融、军工等对网络安全要求严格的行业,服务器往往完全隔离于互联网,传统的一键安装脚本在这里毫无用武之地。本文将手把手带你完成RedHat 7.6系统上Docker 20.10.14的完整离线安装过程,不仅包含标准操作流程,更会分享我在多个企业级项目中积累的实战经验,帮你避开那些容易踩的"坑"。
1. 环境准备与依赖检查
在开始安装前,我们需要确保系统环境满足Docker运行的基本要求。RedHat 7.6虽然是一个相对成熟的系统版本,但仍有一些细节需要注意。
首先确认系统架构和内核版本:
uname -m # 确认是x86_64架构 cat /etc/redhat-release # 确认系统版本Docker 20.10.14对系统有以下硬性要求:
- 内核版本不低于3.10
- 至少2GB内存(生产环境建议4GB以上)
- 磁盘空间不小于20GB
检查内核版本和关键依赖:
rpm -qa | grep -E 'device-mapper|libseccomp' # 检查关键依赖包常见问题排查:
如果发现device-mapper相关包缺失,需要提前准备好这些rpm包:
- device-mapper-1.02.*
- device-mapper-libs-1.02.*
- libseccomp-2.3.*
对于启用了SELinux的环境,建议提前做好配置:
sestatus # 查看SELinux状态 setenforce 0 # 临时关闭(生产环境需谨慎)2. 离线包获取与传输
获取正确的Docker离线包是整个安装过程的第一步,也是容易出错的关键环节。
官方推荐的离线包下载地址为:
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.14.tgz重要提示:在企业环境中,这个下载过程通常需要在有外网权限的跳板机上完成,然后通过安全方式传输到目标服务器。我推荐以下几种传输方法:
| 传输方式 | 适用场景 | 注意事项 |
|---|---|---|
| scp命令 | 服务器间直接传输 | 需要配置SSH密钥认证 |
| 物理介质 | 完全隔离网络 | 需校验文件完整性 |
| 内部仓库 | 大型企业环境 | 需提前搭建yum私有仓库 |
文件完整性验证步骤:
sha256sum docker-20.10.14.tgz # 获取实际校验值 # 对比官方提供的SHA256校验值3. 详细安装步骤
3.1 解压与文件部署
将下载的tar包解压到临时目录:
mkdir -p /tmp/docker-install tar xzvf docker-20.10.14.tgz -C /tmp/docker-install将二进制文件复制到系统目录:
cp /tmp/docker-install/docker/* /usr/bin/关键点:这里容易遇到的权限问题可以通过以下方式预防:
chmod +x /usr/bin/docker*3.2 服务配置与启动
创建systemd服务文件:
vi /etc/systemd/system/docker.service服务文件内容参考(根据实际需求调整):
[Unit] Description=Docker Application Container Engine After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always [Install] WantedBy=multi-user.target设置权限并重载服务:
chmod 644 /etc/systemd/system/docker.service systemctl daemon-reload3.3 启动与验证
启动Docker服务并设置开机自启:
systemctl start docker systemctl enable docker验证安装是否成功:
docker version docker run --rm hello-world4. 常见问题与解决方案
4.1 服务启动失败排查
如果遇到服务启动失败,可以按以下步骤排查:
- 查看详细日志:
journalctl -xe -u docker --no-pager- 常见错误及解决方法:
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| Failed to start Docker | 内核模块缺失 | 加载overlay模块:modprobe overlay |
| Permission denied | SELinux限制 | 临时禁用或配置正确策略 |
| Cannot connect to the Docker daemon | 套接字权限问题 | 将用户加入docker组 |
4.2 离线环境下的镜像管理
在离线环境中,镜像导入导出是常见需求:
导出已有镜像:
docker save -o myimage.tar image:tag导入镜像到离线环境:
docker load -i myimage.tar4.3 存储驱动选择
对于RedHat 7.6,推荐的存储驱动配置:
# 在/etc/docker/daemon.json中添加 { "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] }5. 高级配置与优化
5.1 网络配置调整
对于企业内网环境,可能需要自定义网络设置:
# 创建自定义网桥 docker network create --driver=bridge --subnet=172.28.0.0/16 mynet5.2 资源限制配置
在/etc/docker/daemon.json中添加资源限制:
{ "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 65536, "Soft": 65536 } } }5.3 日志管理
配置日志轮转和大小限制:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }6. 安全加固建议
在离线环境中,安全配置同样重要:
- 用户权限管理:
groupadd docker usermod -aG docker $USER- 配置TLS加密通信(高级):
# 生成CA证书 openssl genrsa -aes256 -out ca-key.pem 4096 # 创建服务端证书 openssl req -new -key server-key.pem -out server.csr- 定期清理无用资源:
docker system prune -af在实际企业环境中,我曾遇到过一个典型案例:某金融客户的测试环境因为磁盘空间不足导致Docker服务异常。通过设置定期清理策略和日志轮转,成功避免了类似问题的再次发生。对于长期运行的离线环境,建议设置每周自动清理的cron任务。
