活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

手把手教你如何在Red Hat Enterprise Linux系统上成功安装Docker容器引擎并解决常见配置问题

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-10 23:30:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Docker是一个开源的容器化平台,它可以将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后在任何支持Docker的环境中运行。Red Hat Enterprise Linux (RHEL)是企业级Linux发行版,广泛用于服务器和企业环境。在RHEL上安装Docker可以为企业提供更灵活、高效的部署和管理应用程序的方式。

本文将详细介绍如何在RHEL系统上安装Docker容器引擎,包括使用不同安装方法的步骤,以及如何解决安装和配置过程中可能遇到的常见问题。

系统要求

在开始安装Docker之前,请确保您的RHEL系统满足以下要求:

1. 支持的RHEL版本:RHEL 7.x (64位)RHEL 8.x (64位)RHEL 9.x (64位)
2. RHEL 7.x (64位)
3. RHEL 8.x (64位)
4. RHEL 9.x (64位)
5. 系统架构:x86_64 (amd64)arm64 (仅限RHEL 8和9)s390x (仅限IBM Z,RHEL 7和8)ppc64le (仅限POWER,RHEL 7和8)
6. x86_64 (amd64)
7. arm64 (仅限RHEL 8和9)
8. s390x (仅限IBM Z,RHEL 7和8)
9. ppc64le (仅限POWER,RHEL 7和8)
10. 硬件要求:至少2GB RAM至少20GB可用磁盘空间
11. 至少2GB RAM
12. 至少20GB可用磁盘空间
13. 网络要求:稳定的互联网连接,用于下载Docker软件包和依赖项如果使用代理服务器,需要正确配置
14. 稳定的互联网连接,用于下载Docker软件包和依赖项
15. 如果使用代理服务器,需要正确配置
16. 权限要求:具有sudo权限或root用户访问权限
17. 具有sudo权限或root用户访问权限

支持的RHEL版本:

• RHEL 7.x (64位)
• RHEL 8.x (64位)
• RHEL 9.x (64位)

系统架构:

• x86_64 (amd64)
• arm64 (仅限RHEL 8和9)
• s390x (仅限IBM Z,RHEL 7和8)
• ppc64le (仅限POWER,RHEL 7和8)

硬件要求:

• 至少2GB RAM
• 至少20GB可用磁盘空间

网络要求:

• 稳定的互联网连接,用于下载Docker软件包和依赖项
• 如果使用代理服务器,需要正确配置

权限要求:

• 具有sudo权限或root用户访问权限

准备工作

在安装Docker之前,需要进行一些准备工作以确保安装过程顺利进行:

1. 更新系统

首先,更新系统到最新的软件包和安全补丁:
  1. sudo yum update -y
复制代码

或者,如果您使用的是RHEL 8或9,可以使用dnf:
  1. sudo dnf update -y
复制代码

2. 检查内核版本

Docker需要特定的内核功能,确保您的内核版本满足要求:
  1. uname -r
复制代码

对于RHEL 7,建议使用3.10.0-514或更高版本的内核。RHEL 8和9通常已经满足要求。

3. 检查并卸载旧版本

如果系统上已经安装了旧版本的Docker(如docker或docker-engine),请先卸载它们:
  1. sudo yum remove docker \
  2.                   docker-client \
  3.                   docker-client-latest \
  4.                   docker-common \
  5.                   docker-latest \
  6.                   docker-latest-logrotate \
  7.                   docker-logrotate \
  8.                   docker-engine
复制代码

4. 配置存储驱动

Docker支持多种存储驱动,如overlay2、devicemapper等。在RHEL上,overlay2是推荐的选择。确保您的系统支持所选的存储驱动。

5. 配置SELinux

RHEL默认启用SELinux,Docker可以与SELinux一起工作,但需要一些额外的配置。在安装过程中,我们将确保正确配置SELinux策略。

安装步骤

有几种方法可以在RHEL上安装Docker,下面将详细介绍每种方法。

方法一:使用Docker官方仓库安装

这是推荐的方法,因为它可以确保您获得最新版本的Docker。

首先,安装yum-utils软件包,它提供了yum-config-manager工具:
  1. sudo yum install -y yum-utils
复制代码

使用yum-config-manager添加Docker的稳定版仓库:
  1. sudo yum-config-manager \
  2.     --add-repo \
  3.     https://download.docker.com/linux/rhel/docker-ce.repo
复制代码

现在可以安装Docker CE(社区版)了:
  1. sudo yum install -y docker-ce docker-ce-cli containerd.io
复制代码

如果您想安装特定版本的Docker,可以按照以下步骤操作:

首先,列出可用的Docker版本:
  1. yum list docker-ce --showduplicates | sort -r
复制代码

然后,选择一个版本并安装:
  1. sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
复制代码

例如,安装20.10.7版本:
  1. sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io
复制代码

方法二:使用RHEL订阅管理器安装

如果您有有效的RHEL订阅,可以使用Red Hat提供的Docker版本。

如果您的系统尚未注册,请使用以下命令注册:
  1. sudo subscription-manager register
复制代码

附加您的RHEL订阅:
  1. sudo subscription-manager attach --auto
复制代码

根据您的RHEL版本,启用相应的仓库:

对于RHEL 7:
  1. sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
复制代码

对于RHEL 8:
  1. sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
  2. sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms
复制代码

现在可以安装Docker了:

对于RHEL 7:
  1. sudo yum install -y docker docker-registry
复制代码

对于RHEL 8,Red Hat提供了Podman作为Docker的替代品,但如果您仍然想安装Docker,可以按照方法一的步骤进行。

方法三:手动安装RPM包

如果您无法访问互联网或需要离线安装,可以手动下载并安装Docker RPM包。

从Docker官方网站下载所需的RPM包:
  1. wget https://download.docker.com/linux/rhel/7/x86_64/stable/Packages/docker-ce-20.10.7-3.el7.x86_64.rpm
  2. wget https://download.docker.com/linux/rhel/7/x86_64/stable/Packages/docker-ce-cli-20.10.7-3.el7.x86_64.rpm
  3. wget https://download.docker.com/linux/rhel/7/x86_64/stable/Packages/containerd.io-1.4.6-3.1.el7.x86_64.rpm
复制代码

使用yum或rpm命令安装下载的包:
  1. sudo yum install -y ./docker-ce-20.10.7-3.el7.x86_64.rpm ./docker-ce-cli-20.10.7-3.el7.x86_64.rpm ./containerd.io-1.4.6-3.1.el7.x86_64.rpm
复制代码

或者使用rpm:
  1. sudo rpm -ivh docker-ce-20.10.7-3.el7.x86_64.rpm docker-ce-cli-20.10.7-3.el7.x86_64.rpm containerd.io-1.4.6-3.1.el7.x86_64.rpm
复制代码

安装后配置

安装完成后,需要进行一些基本配置以确保Docker正常运行。

1. 启动Docker服务

启动Docker服务并设置为开机自启:
  1. sudo systemctl start docker
  2. sudo systemctl enable docker
复制代码

2. 验证Docker安装

运行hello-world容器来验证Docker是否正确安装:
  1. sudo docker run hello-world
复制代码

如果看到欢迎消息,说明Docker已成功安装。

3. 配置用户权限

默认情况下,只有root用户和docker组的成员才能运行Docker命令。将您的用户添加到docker组,以便在不使用sudo的情况下运行Docker命令:
  1. sudo usermod -aG docker $USER
复制代码

注意:您需要注销并重新登录才能使此更改生效。

4. 配置镜像加速器

如果您在中国大陆或其他Docker Hub访问速度较慢的地区,可以配置镜像加速器。创建或编辑/etc/docker/daemon.json文件:
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.   "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
  5. }
  6. EOF
复制代码

然后重启Docker服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码

5. 配置日志轮转

Docker容器的日志可能会占用大量磁盘空间,配置日志轮转可以帮助管理这些日志:
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.   "log-driver": "json-file",
  5.   "log-opts": {
  6.     "max-size": "10m",
  7.     "max-file": "3"
  8.   }
  9. }
  10. EOF
复制代码

然后重启Docker服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码

6. 配置存储驱动

如果您想使用特定的存储驱动,可以在daemon.json中配置:
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.   "storage-driver": "overlay2"
  5. }
  6. EOF
复制代码

然后重启Docker服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码

7. 配置SELinux

如果您的系统启用了SELinux(RHEL默认启用),您需要确保Docker容器可以正确访问文件系统。您可以使用以下命令检查SELinux状态:
  1. sestatus
复制代码

如果SELinux处于 enforcing 模式,您需要确保容器可以访问所需的文件和目录。您可以使用以下命令为目录设置正确的SELinux上下文:
  1. sudo chcon -Rt svirt_sandbox_file_t /path/to/directory
复制代码

或者,您可以在运行容器时使用–security-opt标签:
  1. docker run --security-opt label=disable ...
复制代码

常见问题及解决方案

在安装和配置Docker时,可能会遇到一些常见问题。下面列出了一些常见问题及其解决方案。

问题1:依赖项错误

问题描述:在安装Docker时,可能会遇到依赖项错误,如”Error: Package: docker-ce-20.10.7-3.el7.x86_64 (…)“。

解决方案:

1. 确保您的系统已更新:sudo yum update -y
2. 安装所需的依赖项:sudo yum install -y device-mapper-persistent-data lvm2
3. 如果问题仍然存在,尝试使用–skip-broken选项:sudo yum install -y docker-ce docker-ce-cli containerd.io --skip-broken
  1. sudo yum update -y
复制代码
  1. sudo yum install -y device-mapper-persistent-data lvm2
复制代码
  1. sudo yum install -y docker-ce docker-ce-cli containerd.io --skip-broken
复制代码

问题2:容器无法连接到网络

问题描述:容器无法访问外部网络或外部无法访问容器。

解决方案:

1. 检查Docker的网络配置:docker network ls
docker network inspect bridge
2. 如果使用防火墙,确保允许Docker的网络流量:sudo firewall-cmd --permanent --zone=public --add-masquerade
sudo firewall-cmd --reload
3. 检查iptables规则:sudo iptables -L -n -v
4. 如果问题仍然存在,尝试重启Docker服务:sudo systemctl restart docker
  1. docker network ls
  2. docker network inspect bridge
复制代码
  1. sudo firewall-cmd --permanent --zone=public --add-masquerade
  2. sudo firewall-cmd --reload
复制代码
  1. sudo iptables -L -n -v
复制代码
  1. sudo systemctl restart docker
复制代码

问题3:存储驱动问题

问题描述:Docker无法启动,日志中显示存储驱动相关错误。

解决方案:

1. 检查系统支持的存储驱动:ls -l /sys/class/block/
2.
  1. 编辑/etc/docker/daemon.json文件,指定正确的存储驱动:sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "storage-driver": "overlay2"
  5. }
  6. EOF
复制代码
3. 重启Docker服务:sudo systemctl daemon-reload
sudo systemctl restart docker
  1. ls -l /sys/class/block/
复制代码
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "storage-driver": "overlay2"
  5. }
  6. EOF
复制代码
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码

问题4:SELinux阻止容器访问文件系统

问题描述:容器无法访问主机上的文件或目录,日志中显示SELinux相关错误。

解决方案:

1. 临时将SELinux设置为permissive模式以测试:sudo setenforce 0
2. 如果问题解决,则为相关目录设置正确的SELinux上下文:sudo chcon -Rt svirt_sandbox_file_t /path/to/directory
3. 或者,在运行容器时使用–security-opt标签:docker run --security-opt label=disable ...
4. 恢复SELinux enforcing模式:sudo setenforce 1
  1. sudo setenforce 0
复制代码
  1. sudo chcon -Rt svirt_sandbox_file_t /path/to/directory
复制代码
  1. docker run --security-opt label=disable ...
复制代码
  1. sudo setenforce 1
复制代码

问题5:Docker服务无法启动

问题描述:Docker服务无法启动,systemctl status docker显示错误。

解决方案:

1. 检查Docker服务状态:sudo systemctl status docker
2. 查看详细日志:sudo journalctl -u docker -n 50
3. 检查Docker配置文件:sudo cat /etc/docker/daemon.json
4. 如果配置文件有问题,修复它并重启Docker服务:sudo systemctl daemon-reload
sudo systemctl restart docker
5. 如果问题仍然存在,尝试手动启动Docker以获取更详细的错误信息:sudo dockerd --debug
  1. sudo systemctl status docker
复制代码
  1. sudo journalctl -u docker -n 50
复制代码
  1. sudo cat /etc/docker/daemon.json
复制代码
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码
  1. sudo dockerd --debug
复制代码

问题6:权限问题

问题描述:非root用户无法运行Docker命令,显示”Got permission denied while trying to connect to the Docker daemon socket”。

解决方案:

1. 将用户添加到docker组:sudo usermod -aG docker $USER
2. 注销并重新登录,或者使用以下命令刷新组权限:newgrp docker
3. 验证用户是否可以运行Docker命令:docker ps
  1. sudo usermod -aG docker $USER
复制代码
  1. newgrp docker
复制代码
  1. docker ps
复制代码

问题7:Docker Hub访问缓慢或失败

问题描述:从Docker Hub拉取镜像时速度慢或失败。

解决方案:

1. 配置镜像加速器,如前面所述。
2.
  1. 如果使用代理服务器,确保Docker服务配置为使用代理:sudo mkdir -p /etc/systemd/system/docker.service.d
  2. sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
  3. [Service]
  4. Environment="HTTP_PROXY=http://proxy.example.com:80"
  5. Environment="HTTPS_PROXY=http://proxy.example.com:80"
  6. EOF
复制代码
3. 重启Docker服务:sudo systemctl daemon-reload
sudo systemctl restart docker
  1. sudo mkdir -p /etc/systemd/system/docker.service.d
  2. sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
  3. [Service]
  4. Environment="HTTP_PROXY=http://proxy.example.com:80"
  5. Environment="HTTPS_PROXY=http://proxy.example.com:80"
  6. EOF
复制代码
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码

问题8:容器日志占用过多磁盘空间

问题描述:容器日志文件过大,占用大量磁盘空间。

解决方案:

1. 配置日志轮转,如前面所述。
2. 清理旧的日志文件:sudo find /var/lib/docker/containers/ -name "*.log" -type f -size +100M -delete
3. 限制特定容器的日志大小:docker run --log-opt max-size=10m --log-opt max-file=3 ...
  1. sudo find /var/lib/docker/containers/ -name "*.log" -type f -size +100M -delete
复制代码
  1. docker run --log-opt max-size=10m --log-opt max-file=3 ...
复制代码

验证安装

完成安装和配置后,您应该验证Docker是否正确安装并运行。

1. 检查Docker版本
  1. docker --version
复制代码

2. 检查Docker系统信息
  1. docker info
复制代码

3. 运行测试容器
  1. docker run hello-world
复制代码

4. 运行一个交互式容器
  1. docker run -it ubuntu bash
复制代码

在容器内,您可以运行一些命令来测试功能:
  1. apt-get update
  2. apt-get install -y curl
  3. curl https://www.google.com
  4. exit
复制代码

5. 构建和运行自定义镜像

创建一个Dockerfile:
  1. mkdir my-docker-app
  2. cd my-docker-app
  3. cat > Dockerfile <<EOF
  4. FROM ubuntu:20.04
  5. RUN apt-get update && apt-get install -y nginx
  6. EXPOSE 80
  7. CMD ["nginx", "-g", "daemon off;"]
  8. EOF
复制代码

构建镜像:
  1. docker build -t my-nginx-app .
复制代码

运行容器:
  1. docker run -d -p 8080:80 --name my-nginx my-nginx-app
复制代码

测试容器:
  1. curl http://localhost:8080
复制代码

总结与后续步骤

本文详细介绍了如何在Red Hat Enterprise Linux系统上安装Docker容器引擎,包括使用不同安装方法的步骤,以及如何解决安装和配置过程中可能遇到的常见问题。通过按照本文的指导,您应该能够在RHEL系统上成功安装并配置Docker。

安装完成后,您可以开始探索Docker的更多功能,例如:

1. 学习Docker命令和操作
2. 创建自定义Docker镜像
3. 使用Docker Compose管理多容器应用
4. 探索Docker网络和存储功能
5. 学习容器编排工具,如Kubernetes

以下是一些有用的资源,可以帮助您进一步学习Docker:

• Docker官方文档
• Docker Hub
• Red Hat容器化文档

希望本文对您在RHEL系统上安装和使用Docker有所帮助。如果您在安装或使用过程中遇到其他问题,可以参考Docker官方文档或寻求社区支持。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则