直接给结论:可以装,而且是目前国内云原生场景下的主流选择之一。
但这里有个概念需要厘清:你问的“欧拉操作系统”通常指的是 openEuler(开源 Euler 操作系统),这是华为捐赠给 Linux 基金会的项目。它和 CentOS 一样,底层是 RPM 包管理体系(yum/dnf)。
在 openEuler 上安装 Docker,和你在 CentOS、Ubuntu 上装的逻辑基本一致,但因为内核版本和依赖库的差异,步骤上有些细微差别需要注意。下面我按最稳妥的方式给你梳理一下流程,顺便提几个坑。
1. 确认环境
首先,你的 openEuler 版本是多少?
- 如果是 20.03 LTS SP1/SP2 或更高版本,官方源里其实已经包含了较新的容器运行时支持。
- 推荐使用 Docker CE(社区版),因为它是目前最广泛使用的标准。
先更新一下系统包,避免依赖冲突:
sudo dnf update -y
2. 安装 Docker CE
openEuler 基于 RHEL/CentOS 体系,所以安装方式主要参考 Red Hat 系的文档。
方法一:通过官方仓库安装(推荐)
这是最规范的做法,后续升级方便。
-
安装依赖工具
sudo dnf install -y dnf-utils device-mapper-persistent-data lvm2 -
添加 Docker 官方 YUM 源
你需要下载 Docker 的 repo 文件。由于网络原因,国内服务器可能访问 docker 官方源较慢,建议配置阿里云镜像源或者华为云镜像源提速。以阿里云为例(假设你是 x86_64 架构):
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo注意:虽然 openEuler 不是 CentOS,但 Docker 官方对 RHEL 系的兼容做得很好,直接用 centos 的 repo 通常也能跑通。如果报错,可以尝试手动指定 baseurl 为 openEuler 对应的路径,或者直接使用华为云的镜像源。
-
安装 Docker Engine
sudo dnf install -y docker-ce docker-ce-cli containerd.io -
启动并设置开机自启
sudo systemctl start docker sudo systemctl enable docker -
验证安装
docker version docker run hello-world如果能看到 Hello from Docker!,那就说明搞定了。
方法二:使用 openEuler 自带源(简单粗暴)
如果你不想折腾第三方源,openEuler 的默认软件仓库里也有 docker 或 podman 包。
sudo dnf install -y docker
sudo systemctl start docker
sudo systemctl enable docker
缺点:版本可能比较老,比如还是 20.x 甚至更早,不支持最新的特性(如 BuildKit 默认开启等)。适合测试环境,生产环境建议用方法一。
3. 关键注意事项(避坑指南)
作为老鸟,我得提醒你几个在 openEuler 上容易踩的坑:
A. cgroup 驱动问题
Docker 默认使用 cgroupfs 作为 cgroup 驱动,而 Kubernetes(k8s)推荐使用 systemd。在 openEuler 这种强调与企业级集成的系统中,建议统一使用 systemd 驱动,避免资源调度冲突。
修改 /etc/docker/daemon.json:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
然后重启 Docker:
sudo systemctl restart docker
B. 内核模块加载
openEuler 的内核经过深度优化,某些旧的 Docker 版本可能需要特定的内核模块。确保你的内核版本不低于 4.19(最好 5.10+),并且开启了必要的配置项,比如:
CONFIG_BRIDGE_NETFILTER=yCONFIG_NF_CONNTRACK=yCONFIG_IP_NF_TARGET_MASQUERADE=y
这些通常在 openEuler 的标准内核中都是默认编译进去的,但如果你自己编译内核,就得留意了。
C. 权限问题
不要用 root 直接运行 Docker 命令,除非你把自己加到了 docker 用户组:
sudo usermod -aG docker $USER
然后重新登录生效。
D. 替代方案:Podman
如果你是在做信创项目或者对安全性要求极高,可以考虑 Podman。它是 Docker 的替代品,无守护进程(daemonless),更贴近 k8s 的设计理念。openEuler 对 Podman 的支持非常好,甚至很多发行版默认预装了 Podman。
sudo dnf install -y podman
podman run hello-world
Podman 的命令和 Docker 几乎完全兼容,你可以创建一个别名 alias docker=podman 来无缝切换。
总结
在 openEuler 上装 Docker 完全可行,技术栈成熟。
- 生产环境:建议通过配置阿里云/华为云镜像源安装 Docker CE,并配置
systemdcgroup 驱动。 - 轻量/安全场景:优先考虑 Podman,它在 openEuler 上的集成度甚至比 Docker 还高。
- 不要试图去改内核参数强行兼容老旧 Docker 版本,升级到较新的 Docker CE 版本能解决 90% 的问题。
有问题再追问,具体报错日志贴出来,我能帮你精准定位。
CLOUD云枢