欧拉操作系统下可以装docker吗?

直接给结论:可以装,而且是目前国内云原生场景下的主流选择之一。

但这里有个概念需要厘清:你问的“欧拉操作系统”通常指的是 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 系的文档。

方法一:通过官方仓库安装(推荐)

这是最规范的做法,后续升级方便。

  1. 安装依赖工具

    sudo dnf install -y dnf-utils device-mapper-persistent-data lvm2
  2. 添加 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 对应的路径,或者直接使用华为云的镜像源。

  3. 安装 Docker Engine

    sudo dnf install -y docker-ce docker-ce-cli containerd.io
  4. 启动并设置开机自启

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 验证安装

    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=y
  • CONFIG_NF_CONNTRACK=y
  • CONFIG_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,并配置 systemd cgroup 驱动。
  • 轻量/安全场景:优先考虑 Podman,它在 openEuler 上的集成度甚至比 Docker 还高。
  • 不要试图去改内核参数强行兼容老旧 Docker 版本,升级到较新的 Docker CE 版本能解决 90% 的问题。

有问题再追问,具体报错日志贴出来,我能帮你精准定位。

未经允许不得转载:CLOUD云枢 » 欧拉操作系统下可以装docker吗?