开源欧拉(openEuler)下 Docker 部署与使用【华为根技术】

举报
tea_year 发表于 2026/01/08 22:54:29 2026/01/08
【摘要】 openEuler 作为华为主导的开源操作系统,凭借轻量、高性能、面向鲲鹏架构优化等特性,成为云原生场景的重要选择。Docker 作为容器化核心工具,在 openEuler 中部署和使用需适配系统特性,本文从环境准备、Docker 安装、配置优化到实战使用,全方位讲解 openEuler 下 Docker 的完整使用流程。一、环境准备1. 系统要求操作系统版本:openEuler 20.03...

openEuler 作为华为主导的开源操作系统,凭借轻量、高性能、面向鲲鹏架构优化等特性,成为云原生场景的重要选择。Docker 作为容器化核心工具,在 openEuler 中部署和使用需适配系统特性,本文从环境准备、Docker 安装、配置优化到实战使用,全方位讲解 openEuler 下 Docker 的完整使用流程。

一、环境准备

1. 系统要求

  • 操作系统版本:openEuler 20.03 LTS/22.03 LTS/24.03 LTS(推荐 22.03 LTS 及以上,对容器支持更完善)。
  • 架构支持:x86_64/ARM64(鲲鹏),本文以 x86_64 为例,ARM64 操作一致。
  • 前置条件:系统已配置网络,可访问外网;拥有 root 或 sudo 权限。

2. 系统初始化(可选但推荐)



# 1. 更新系统软件包
dnf update -y

# 2. 关闭防火墙(测试环境,生产环境按需配置规则)
systemctl stop firewalld && systemctl disable firewalld

# 3. 关闭 SELinux(临时生效,重启后需重新设置)
setenforce 0
# 永久关闭 SELinux(修改配置文件)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 4. 关闭 swap(Docker/K8s 推荐,避免内存交换影响性能)
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 5. 加载容器所需内核模块
modprobe overlay
modprobe br_netfilter

# 6. 配置内核参数(优化网络,适配容器网络)
cat > /etc/sysctl.d/docker.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 生效内核参数
sysctl --system


二、Docker 安装

openEuler 优先使用 dnf 包管理器(替代 yum),Docker 安装分为「官方源安装」和「离线安装」,推荐官方源安装。

1. 配置 Docker 官方源



# 安装依赖包
dnf install -y yum-utils device-mapper-persistent-data lvm2

# 添加 Docker 官方 yum 源(适配 openEuler 的 CentOS 兼容源)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 备注:若官方源访问慢,可替换为国内镜像源(如阿里云)
# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


2. 安装指定版本 Docker

openEuler 对新版 Docker 兼容性良好,推荐安装稳定版(如 24.0.x 系列):



# 查看可安装的 Docker 版本
dnf list docker-ce --showduplicates | sort -r

# 安装指定版本(以 24.0.9 为例,适配 openEuler 22.03)
dnf install -y docker-ce-24.0.9 docker-ce-cli-24.0.9 containerd.io docker-buildx-plugin docker-compose-plugin

# 验证安装
docker -v
# 预期输出:Docker version 24.0.9, build cb74dfc


3. 启动并设置开机自启



# 启动 Docker 服务
systemctl start docker

# 设置开机自启
systemctl enable docker

# 检查 Docker 状态
systemctl status docker
# 显示 active (running) 即为正常


4. 非 root 用户使用 Docker(可选)

默认仅 root 可操作 Docker,添加普通用户到 docker 组:



# 创建 docker 组(若不存在)
groupadd docker

# 将当前用户加入 docker 组(替换为你的用户名,如 openeuler)
usermod -aG docker openeuler

# 重新登录生效(或执行以下命令立即生效)
newgrp docker

# 验证:非 root 执行 docker 命令
docker ps


三、Docker 核心配置优化

1. 配置镜像加速(解决拉取镜像慢)

openEuler 访问 Docker Hub 速度较慢,配置国内镜像源:



# 创建 Docker 配置目录
mkdir -p /etc/docker

# 写入镜像加速配置
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://dockerproxy.cn",
    "https://docker.awsl9527.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF


配置项说明:

  • registry-mirrors:国内镜像加速地址,优先选择稳定的源;
  • exec-opts:设置 cgroup 驱动为 systemd,适配 openEuler 系统初始化进程;
  • log-driver/log-opts:限制容器日志大小,避免磁盘占满;
  • storage-driver:使用 overlay2 存储驱动,性能最优。

2. 重启 Docker 使配置生效



# 重新加载配置
systemctl daemon-reload

# 重启 Docker
systemctl restart docker

# 验证配置
docker info | grep -E "Registry Mirrors|Cgroup Driver|Storage Driver"


四、Docker 基础使用实战

1. 镜像操作(核心)



# 1. 拉取镜像(以 Nginx 为例)
docker pull nginx:1.25-alpine  # alpine 版本更轻量

# 2. 查看本地镜像
docker images

# 3. 搜索镜像
docker search mysql

# 4. 标记镜像(用于推送私有仓库)
docker tag nginx:1.25-alpine myregistry.com/nginx:1.25-alpine

# 5. 删除镜像(需先删除依赖容器)
docker rmi nginx:1.25-alpine

# 6. 保存镜像为压缩包(离线迁移)
docker save -o nginx-1.25.tar nginx:1.25-alpine

# 7. 导入离线镜像
docker load -i nginx-1.25.tar


2. 容器操作(核心)



# 1. 启动容器(交互式运行,测试用)
docker run -it --rm centos:7 /bin/bash  # --rm 退出后删除容器

# 2. 后台启动 Nginx 容器(生产常用)
docker run -d \
  --name my-nginx \
  -p 8080:80 \  # 端口映射:主机8080 → 容器80
  -v /data/nginx/html:/usr/share/nginx/html \  # 挂载静态页面目录
  -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \  # 挂载配置文件
  --restart=always \  # 容器异常退出自动重启
  nginx:1.25-alpine

# 3. 查看容器状态
docker ps  # 运行中的容器
docker ps -a  # 所有容器(包括停止的)

# 4. 进入容器内部
docker exec -it my-nginx /bin/sh  # alpine 系统用 sh,而非 bash

# 5. 查看容器日志
docker logs -f my-nginx  # -f 实时跟踪日志

# 6. 停止/启动/重启容器
docker stop my-nginx
docker start my-nginx
docker restart my-nginx

# 7. 删除容器
docker rm my-nginx  # 停止状态才能删除
docker rm -f my-nginx  # 强制删除运行中的容器

# 8. 查看容器资源占用
docker stats my-nginx


3. 容器网络操作



# 1. 查看网络
docker network ls

# 2. 创建自定义网络(桥接模式,容器间互通)
docker network create my-network

# 3. 启动容器并加入自定义网络
docker run -d --name mysql --network my-network -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

# 4. 容器间网络互通(同一网络下可通过容器名访问)
docker run -it --rm --network my-network busybox ping mysql


4. Docker Compose 编排(多容器管理)

Docker Compose 已随安装包自带,通过 docker compose 命令使用:



# 1. 创建 docker-compose.yml 文件
cat > docker-compose.yml << EOF
version: '3.8'
services:
  nginx:
    image: nginx:1.25-alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: always
  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=testdb
    volumes:
      - ./mysql-data:/var/lib/mysql
    restart: always
    networks:
      - my-net
networks:
  my-net:
EOF

# 2. 启动所有服务
docker compose up -d

# 3. 查看服务状态
docker compose ps

# 4. 停止服务(保留数据)
docker compose stop

# 5. 停止并删除容器(保留卷)
docker compose down

# 6. 停止并删除容器+卷
docker compose down -v



五、openEuler 下 Docker 常见问题排查

1. Docker 启动失败

  • 原因:内核模块未加载、selinux 未关闭、cgroup 驱动不兼容。


# 查看启动日志
journalctl -u docker -f

# 重新加载 br_netfilter 模块
modprobe br_netfilter
sysctl --system

# 确认 cgroup 驱动为 systemd
docker info | grep Cgroup

2. 拉取镜像超时

  • 原因:镜像源不可用、网络不通。
  • 解决:更换 daemon.json 中的镜像加速地址,或检查系统防火墙 / 代理配置。

3. 容器无权限访问宿主机文件

  • 原因:openEuler 安全策略限制、挂载目录权限不足。


# 赋予挂载目录权限
chmod 777 /data/nginx/html
# 或指定容器内用户(以 root 运行)
docker run -d --name my-nginx -v /data/nginx/html:/usr/share/nginx/html --user root nginx:1.25-alpine


4. ARM64(鲲鹏)架构镜像兼容

  • 问题:部分 x86 镜像无法在鲲鹏架构运行。
  • 解决:优先拉取 arm64v8 前缀的镜像,如 arm64v8/nginx:1.25-alpine

六、总结

  1. openEuler 下安装 Docker 需先优化系统内核参数、关闭 swap/SELinux,适配容器网络要求;
  2. 核心配置需重点关注镜像加速和 cgroup 驱动(systemd),提升使用体验和系统兼容性;
  3. 基础操作与其他 Linux 发行版一致,需注意 openEuler 用 dnf 替代 yum,鲲鹏架构优先选择 ARM 镜像;
  4. 生产环境建议使用 Docker Compose 编排多容器,结合自定义网络和数据卷保证数据持久化。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。