在 openEuler 22.03 LTS 系统上安装 Docker CE 的步骤可以分为以下几个主要阶段。以下是详细的安装流程:
在安装 Docker 之前,确保系统已经更新到最新版本。这可以通过以下命令完成:
sudo dnf update -y
此步骤确保系统中已安装的软件包和依赖项都是最新的,避免潜在的兼容性问题。
为了能够使用 Docker CE 存储库,需要安装一些必要的软件包,例如 dnf-plugins-core:
sudo dnf install -y dnf-plugins-core
这些软件包提供了管理软件仓库的功能,是后续添加 Docker 存储库的前提。
Docker CE 的存储库可以通过以下命令添加:
sudo dnf config-manager --add-repo=https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
为了提高下载速度,建议将存储库中的官方地址替换为华为开源镜像:
sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
此外,由于 $releasever 变量在 openEuler 中无效,可以将其替换为 8:
sudo sed -i 's+$releasever+8+' /etc/yum.repos.d/docker-ce.repo
这一步确保了 Docker 软件包能够正确下载并安装。
在添加了存储库之后,可以使用以下命令安装 Docker CE:
sudo dnf install -y docker-ce
此命令将安装 Docker 引擎及其相关组件。
安装完成后,需要启动 Docker 服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
这将确保 Docker 服务在系统启动时自动运行。
为了确认 Docker 已成功安装,可以运行以下命令:
docker --version
这将显示 Docker 的版本信息。此外,可以通过运行一个测试容器来进一步验证:
sudo docker run hello-world
如果一切正常,您将看到一条欢迎信息,表示 Docker 已成功安装并运行。
如果您需要使用 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,并为其添加执行权限。
安装完成后,可以通过以下命令验证 Docker Compose 的版本:
docker-compose --version
这将显示 Docker Compose 的版本信息。
如果您的系统无法连接互联网,可以使用离线安装包进行安装。以下是离线安装的步骤:
在联网环境中下载 Docker 的离线安装包:
wget https://download.docker.com/linux/static/stable/aarch64/docker-27.5.0.tgz
将下载的文件传输到目标机器的 /opt/docker 目录。
在目标机器上解压安装包:
cd /opt/docker
tar -xzvf docker-27.5.0.tgz
这将解压出 Docker 的二进制文件。
将解压后的二进制文件复制到系统路径:
sudo cp docker/* /usr/bin/
sudo chmod +x /usr/bin/docker*
sudo chmod +x /usr/bin/containerd*
sudo chmod +x /usr/bin/runc
这将确保 Docker 的二进制文件可以被系统识别和执行。
创建 Docker 服务配置文件:
sudo tee /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=containerd.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
这将创建 Docker 服务的配置文件,确保 Docker 服务可以正确启动。
Docker 依赖于 containerd 作为容器运行时,因此需要手动安装 containerd:
cd /opt/docker/docker
sudo cp containerd containerd-shim-runc-v2* /usr/bin/
sudo chmod +x /usr/bin/containerd*
这将确保 containerd 二进制文件可以被系统识别和执行。
创建 containerd 服务文件:
sudo tee /etc/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
EOF
这将创建 containerd 服务的配置文件,确保 containerd 服务可以正确启动。
重新加载 systemd 配置并启动 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl enable --now docker
sudo systemctl start docker
这将确保 Docker 服务在系统启动时自动运行。
验证 Docker 和 containerd 服务的状态:
sudo systemctl status containerd docker
这将显示 Docker 和 containerd 服务的状态,确保它们正常运行。
如果在安装过程中遇到依赖缺失错误,可以尝试手动安装缺失的依赖项。例如:
sudo dnf install -y yum-utils
这将安装 yum-utils,确保 Docker 存储库可以正确添加。
如果 Docker 服务启动失败,可以检查日志以定位问题:
journalctl -u docker --no-pager
这将显示 Docker 服务的日志,帮助您找到问题的根源。
在 openEuler 22.03 LTS 系统上安装 Docker CE 的过程相对简单,主要步骤包括更新系统、安装必要的软件包、添加 Docker 存储库、安装 Docker CE、启动 Docker 服务、验证安装以及(可选)安装 Docker Compose。对于离线安装,需要手动下载和配置 Docker 的二进制文件和依赖项。通过以上步骤,您可以顺利在 openEuler 22.03 LTS 系统上安装和配置 Docker。
在 openEuler 22.03 LTS 系统上安装 Docker CE 时,如果提示缺少 libcgroup 和 container-selinux,可以通过以下方法解决:
由于 openEuler 22.03 LTS 的默认仓库可能不包含所需的 container-selinux 包,可以手动从 CentOS Vault 下载:
wget https://vault.centos.org/7.9.2009/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
使用 rpm 命令安装下载的 container-selinux 包。如果依赖关系无法自动解决,可以使用 --nodeps 选项跳过依赖检查:
sudo rpm -ivh --nodeps container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
为了确保能够安装 libcgroup,可以将系统的默认镜像源替换为阿里云的镜像源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新系统源并清理缓存,以确保能够正确下载和安装软件包:
sudo dnf clean all
sudo dnf makecache
使用 dnf 或 yum 安装 libcgroup:
sudo dnf install -y libcgroup
添加 Docker CE 存储库时,如果遇到 $releasever 问题,可以手动修改存储库文件中的 baseurl,将其替换为 7:
sudo dnf config-manager --add-repo=https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+$releasever+7+' /etc/yum.repos.d/docker-ce.repo
在解决了 container-selinux 和 libcgroup 的依赖问题后,可以安装 Docker CE:
sudo dnf install -y docker-ce
安装完成后,验证 Docker 是否安装成功:
docker --version
运行一个测试容器以进一步验证:
sudo docker run hello-world
为了提高 Docker 镜像的下载速度,可以配置阿里云镜像源。编辑 Docker 的配置文件 /etc/docker/daemon.json,添加以下内容:
{
"registry-mirrors": ["https://<your-aliyun-mirror>.mirror.aliyuncs.com"]
}
然后重启 Docker 服务:
sudo systemctl restart docker
如果在安装过程中仍然遇到依赖缺失错误,可以尝试手动安装缺失的依赖项。例如:
sudo dnf install -y yum-utils
如果 Docker 服务启动失败,可以检查日志以定位问题:
journalctl -u docker --no-pager
在 openEuler 22.03 LTS 系统上安装 Docker CE 时,如果提示缺少 libcgroup 和 container-selinux,可以通过手动下载和安装这些依赖项来解决。此外,可以将系统的默认镜像源替换为阿里云的镜像源,以确保能够顺利安装所需的软件包。通过以上步骤,您可以顺利在 openEuler 22.03 LTS 系统上安装和配置 Docker。
在 openEuler 22.03 LTS 系统上安装 Docker 时,如果遇到 container-selinux 安装失败的问题,通常是因为系统仓库中缺少所需的版本或依赖关系未满足。以下是详细的解决方案和步骤:
container-selinux 是 Docker 和 Kubernetes 等容器技术依赖的一个关键组件,用于提供 SELinux 策略支持。在 openEuler 22.03 LTS 中,官方仓库可能未提供足够新版本的 container-selinux,或者依赖项缺失,导致安装失败。
如果系统仓库中没有合适的 container-selinux 包,可以手动从 CentOS Vault 下载并安装:
wget https://vault.centos.org/7.9.2009/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
sudo rpm -ivh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
如果出现依赖缺失错误,可以使用 --nodeps 选项跳过依赖检查:
sudo rpm -ivh --nodeps container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
如果系统默认的镜像源无法找到 container-selinux,可以将镜像源替换为阿里云的镜像源,以提高软件包的可用性:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo dnf clean all
sudo dnf makecache
然后尝试重新安装 container-selinux:
sudo dnf install -y container-selinux
如果 container-selinux 仍然无法安装,可能是因为缺少依赖项。可以尝试手动安装以下依赖项:
sudo dnf install -y policycoreutils
sudo dnf install -y libsemanage
sudo dnf install -y libselinux-utils
然后再尝试安装 container-selinux。
如果只是在测试环境中使用 Docker,可以跳过 SELinux 支持。修改安装命令,跳过 SELinux 相关的依赖检查:
curl -sfL get.k3s.io | INSTALL_K3S_SKIP_SELINUX_RPM=true sh -
对于 Docker,可以临时关闭 SELinux:
sudo setenforce 0
如果需要永久关闭 SELinux,可以编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled,然后重启系统。
安装完成后,验证 container-selinux 是否已成功安装:
rpm -q container-selinux
如果安装成功,可以继续安装 Docker 或其他依赖 container-selinux 的组件。
如果在安装过程中仍然遇到依赖缺失错误,可以尝试手动安装缺失的依赖项。例如:
sudo dnf install -y yum-utils
如果安装失败,可以尝试从阿里云或其他镜像源手动下载 container-selinux 的 RPM 包并安装。
在 openEuler 22.03 LTS 系统上安装 container-selinux 时,如果遇到安装失败的问题,可以通过手动下载并安装 RPM 包、替换镜像源或跳过 SELinux 支持来解决。对于生产环境,建议使用官方仓库提供的软件包;对于测试环境,可以临时关闭 SELinux 以简化安装过程。通过以上步骤,您可以顺利在 openEuler 22.03 LTS 系统上安装和配置 container-selinux。
在 openEuler 22.03 LTS 系统上安装 container-selinux 时,如果提示缺少 policycoreutils-python,可以通过以下步骤解决依赖问题并成功安装 container-selinux。
container-selinux 是 Docker 和其他容器技术依赖的一个关键组件,用于提供 SELinux 策略支持。在安装过程中,如果系统缺少 policycoreutils-python,会导致安装失败。policycoreutils-python 是 SELinux 管理工具的一部分,用于处理 SELinux 策略和文件上下文。
首先,尝试通过 dnf 或 yum 安装 policycoreutils-python:
sudo dnf install -y policycoreutils-python
如果 dnf 无法找到该包,可以尝试使用 yum:
sudo yum install -y policycoreutils-python
如果仍然无法安装,可以手动下载并安装 policycoreutils-python 的 RPM 包。
如果系统默认的镜像源无法找到 policycoreutils-python,可以手动从阿里云或 CentOS 镜像源下载并安装:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/policycoreutils-python-2.5-29.el7.x86_64.rpm
sudo rpm -ivh policycoreutils-python-2.5-29.el7.x86_64.rpm
如果出现依赖缺失错误,可以使用 --nodeps 选项跳过依赖检查:
sudo rpm -ivh --nodeps policycoreutils-python-2.5-29.el7.x86_64.rpm
如果系统默认的镜像源无法找到 container-selinux,可以手动从阿里云或 CentOS 镜像源下载并安装:
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.107-3.el7.noarch.rpm
sudo rpm -ivh container-selinux-2.107-3.el7.noarch.rpm
如果出现依赖缺失错误,可以使用 --nodeps 选项跳过依赖检查:
sudo rpm -ivh --nodeps container-selinux-2.107-3.el7.noarch.rpm
安装完成后,验证 policycoreutils-python 和 container-selinux 是否已成功安装:
rpm -q policycoreutils-python
rpm -q container-selinux
如果安装成功,可以继续安装 Docker 或其他依赖 container-selinux 的组件。
如果在安装过程中仍然遇到依赖缺失错误,可以尝试手动安装缺失的依赖项。例如:
sudo dnf install -y libsemanage
sudo dnf install -y libselinux-utils
如果安装失败,可以尝试从阿里云或其他镜像源手动下载 policycoreutils-python 和 container-selinux 的 RPM 包并安装。
在 openEuler 22.03 LTS 系统上安装 container-selinux 时,如果提示缺少 policycoreutils-python,可以通过手动下载并安装 policycoreutils-python 和 container-selinux 的 RPM 包来解决。如果依赖项仍然缺失,可以使用 --nodeps 选项跳过依赖检查。通过以上步骤,您可以顺利在 openEuler 22.03 LTS 系统上安装和配置 container-selinux。
这是一个非常常见的问题,特别是在 openEuler 系统中,如果默认的软件仓库中缺少某些软件包(如 policycoreutils-python),手动下载和安装 RPM 包时,确实可能会遇到“依赖地狱”问题。解决这个问题的最有效方法是为 openEuler 系统配置一个可靠的软件源(YUM/DNF 仓库),比如阿里云、华为云、清华源等。
阿里云的 openEuler 镜像源非常稳定,软件包齐全,是目前最推荐的第三方源之一。
sudo mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak
sudo wget -O /etc/yum.repos.d/openEuler.repo http://mirrors.aliyun.com/repo/oe_22.repo
⚠️ 注意:
oe_22.repo是 openEuler 22.03 LTS 的源文件。如果你使用的是其他版本(如 23.09),请访问 阿里云 openEuler 镜像站 选择对应版本的源文件。
sudo dnf clean all
sudo dnf makecache
现在你可以尝试安装 policycoreutils-python,系统会自动处理依赖关系:
sudo dnf install -y policycoreutils-python
安装完 policycoreutils-python 后,继续安装 container-selinux:
sudo dnf install -y container-selinux
如果你不想用阿里云,也可以使用以下源:
sudo wget -O /etc/yum.repos.d/openEuler.repo https://mirrors.huaweicloud.com/repo/oe_22.repo
sudo wget -O /etc/yum.repos.d/openEuler.repo https://mirrors.tuna.tsinghua.edu.cn/help/openeuler/22.03_LTS/
你可以运行以下命令查看当前可用的软件仓库:
dnf repolist
如果看到阿里云或清华源已经生效,说明配置成功。
在配置好源并安装完 container-selinux 和 policycoreutils-python 后,你可以继续安装 Docker:
sudo dnf install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
| 问题 | 解决方案 |
|---|---|
安装 policycoreutils-python 时依赖缺失 |
配置阿里云/华为云/清华源,使用 dnf 自动解决依赖 |
| 手动下载 RPM 包依赖复杂 | 使用官方或第三方源统一管理依赖 |
| openEuler 默认源缺少软件包 | 替换为阿里云等第三方源 |
如果你还有其他软件包安装问题,也可以告诉我,我可以帮你查找对应的源或 RPM 包。