信创企业级 openEuler 24 部署 docker-ce 全指南

一、背景认知

1.1 核心术语定义

  • openEuler 24:特指 openEuler 24.03 LTS 系列(含 SP1/SP3),是欧拉社区发布的企业级长期支持版开源操作系统,原生适配鲲鹏、飞腾、海光、兆芯等国产化 CPU,是国内信创项目的主流服务器操作系统。
  • docker-ce:Docker Community Edition(社区版),免费开源的容器化引擎,是企业级应用打包、交付、运行的行业标准,可实现「一次构建,到处运行」,完美适配信创环境下的应用一致性部署需求。

1.2 信创场景部署核心价值

  1. 国产化深度适配:兼容全系列信创 CPU 架构,与 openEuler 内核安全特性深度协同,满足等保 2.0 合规要求;
  2. 应用交付标准化:解决信创环境下「不同服务器、不同架构应用运行不一致」的痛点,大幅降低运维成本;
  3. 资源隔离与高效利用:轻量级容器虚拟化,比传统虚拟机资源占用更低、启动速度更快,适配信创服务器性能优化需求;
  4. DevOps 全流程支持:无缝对接国产化 DevOps 工具链,支撑企业信创应用的快速迭代与发布。

1.3 版本适配与前置前提

  • 版本适配说明:Docker 官方未直接适配 openEuler 系统,openEuler 24.03 LTS 与 CentOS 8/9 系统二进制兼容,因此采用 CentOS 8 稳定版兼容源部署;
  • 架构支持:x86_64(海光、兆芯)、aarch64(鲲鹏、飞腾)全信创架构适配;
  • 初学者前置要求:具备基础 Linux 命令认知,拥有服务器 root 权限,服务器可访问公网,系统为纯净 openEuler 24.03 LTS 环境。

二、核心配置(部署前必做)

2.1 系统与硬件最低要求

配置项 初学者测试环境 信创企业级生产环境
系统版本 openEuler 24.03 LTS 系列 openEuler 24.03 LTS SP3 稳定版
CPU 2 核 4 核及以上
内存 2GB 8GB 及以上
硬盘 20GB 系统盘 40GB 系统盘 + 100GB 独立数据盘
网络 公网访问权限 公网访问权限 + 固定内网 IP

2.2 系统前置核心配置

2.2.1 权限配置

全程使用root 用户操作,避免 sudo 权限不足导致部署失败。初学者登录服务器后,直接执行以下命令切换 root 用户:

复制代码
# 切换root用户,输入root密码后回车
su - root
2.2.2 冲突组件清理

openEuler 默认预装 podman、runc 等容器组件,与 docker-ce 存在文件冲突,必须提前卸载,步骤不可省略:

复制代码
# 卸载所有冲突组件
dnf remove -y podman runc buildah skopeo containers-common
# 清理残留依赖
dnf autoremove -y
2.2.3 系统安全配置
  1. SELinux 配置 :openEuler 默认开启 SELinux,会导致容器权限异常,提供 2 种适配方案(企业级推荐方案 1)

    复制代码
    # 方案1:设置为宽容模式(保留安全能力,不拦截容器操作,永久生效)
    sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
    setenforce 0
    
    # 方案2:完全关闭SELinux(初学者测试用,永久生效)
    # sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    # setenforce 0
  2. 防火墙配置 :企业级不建议直接关闭防火墙,需放行 docker 核心规则;初学者测试可临时关闭

    复制代码
    # 企业级方案:放行docker网桥与核心端口,永久生效
    firewall-cmd --permanent --zone=trusted --add-interface=docker0
    firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=2375/tcp
    firewall-cmd --reload
    
    # 初学者测试方案:临时关闭防火墙(重启后恢复)
    # systemctl stop firewalld
    # 永久关闭防火墙(不推荐生产使用)
    # systemctl disable --now firewalld
  3. Swap 分区关闭 :Docker 官方推荐关闭 Swap,避免容器性能异常与调度问题,步骤不可省略

    复制代码
    # 临时关闭Swap
    swapoff -a
    # 永久关闭Swap(注释fstab中的Swap挂载行)
    sed -i '/swap/s/^/#/' /etc/fstab
2.2.4 系统源优化(国内信创环境必做)

将 openEuler 官方源替换为华为云镜像源,提升包下载速度,避免官方源网络超时:

复制代码
# 1. 备份原有系统源文件
cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

# 2. 配置华为云openEuler 24.03 LTS 镜像源
cat > /etc/yum.repos.d/openEuler.repo << EOF
[openEuler-everything]
name=openEuler-everything
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03/everything/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03/everything/\$basearch/RPM-GPG-KEY-openEuler

[openEuler-EPOL]
name=openEuler-epol
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03/EPOL/main/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03/everything/\$basearch/RPM-GPG-KEY-openEuler

[openEuler-update]
name=openEuler-update
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03/update/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03/everything/\$basearch/RPM-GPG-KEY-openEuler
EOF

# 3. 刷新dnf缓存并更新系统包
dnf makecache
dnf update -y
2.2.5 核心依赖包安装

安装 docker-ce 运行必须的依赖工具,步骤不可省略:

复制代码
# 安装核心依赖,-y 自动确认所有安装项
dnf install -y yum-utils device-mapper-persistent-data lvm2 dnf-utils
  • 依赖说明:
    • yum-utils/dnf-utils:提供仓库管理工具,用于添加 docker 源
    • device-mapper-persistent-data/lvm2:提供 docker 存储驱动的底层支撑

2.3 Docker CE 核心规划

  1. 版本选择:企业级推荐稳定版 24.0.x 系列,不推荐最新开发版,避免兼容性问题;
  2. 数据目录 :企业级必须将 docker 数据目录规划到独立数据盘(如/data/docker),避免系统盘被容器日志 / 镜像占满;
  3. 镜像加速:配置国内镜像加速地址,解决 Docker Hub 访问受限、拉取镜像超时问题;
  4. 网络规划:提前规划 docker0 网桥网段,避免与企业内网网段冲突(默认 172.17.0.0/16)。

三、基础实操(全程可复制,步骤零省略)

步骤 1:配置 Docker CE 软件源

复制代码
# 1. 添加华为云Docker CE镜像源(国内稳定,比官方源速度提升10倍+)
dnf config-manager --add-repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo

# 2. 备份源配置文件(操作失误可恢复,初学者必做)
cp /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/docker-ce.repo.bak

# 3. 源适配openEuler 24.03:替换版本号为8(核心步骤,不可省略)
# 原因:Docker源无openEuler的版本标识,用CentOS 8兼容版本适配
sed -i 's/\$releasever/8/g' /etc/yum.repos.d/docker-ce.repo

# 4. 替换下载地址为华为云镜像,确保国内访问稳定
sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 5. 刷新Docker源缓存,验证源是否可用
dnf makecache

步骤 2:查看可安装的 Docker CE 版本(初学者可选)

执行以下命令可查看所有可安装的稳定版,如需安装指定版本,可复制版本号执行安装:

复制代码
# 按版本倒序排列,查看所有可安装的docker-ce版本
dnf list docker-ce --showduplicates | sort -r

步骤 3:安装 Docker CE 全套组件

复制代码
# 安装最新稳定版(推荐初学者直接执行)
# 包含:docker引擎、命令行工具、容器运行时、构建插件、编排插件
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 安装成功标志:终端输出Complete!,无报错信息。
  • 常见问题解决:若出现依赖冲突,重新执行「2.2.2 冲突组件清理」步骤,卸载 podman 相关组件后重试。

步骤 4:编写 Docker 核心配置文件 daemon.json

这是 docker 的全局配置文件,JSON 格式必须严格正确,否则会导致 docker 服务启动失败,初学者直接复制以下内容即可:

复制代码
# 1. 创建docker配置目录
mkdir -p /etc/docker

# 2. 编写daemon.json配置文件
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.baidubce.com"
  ],
  "data-root": "/var/lib/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "selinux-enabled": true
}
EOF
  • 核心配置项说明(初学者必看):
    • registry-mirrors:国内镜像加速地址,解决镜像拉取超时问题;
    • data-root:docker 数据存储目录,企业级需改为数据盘路径(如/data/docker);
    • log-driver/log-opts:全局日志轮转配置,单日志文件最大 100M,最多保留 3 个,避免日志占满磁盘;
    • storage-driver:overlay2 是 docker 官方推荐的存储驱动,适配 openEuler 内核;
    • selinux-enabled:开启 SELinux 安全支持,适配 openEuler 系统安全策略。

步骤 5:启动 Docker 服务并设置开机自启

复制代码
# 1. 重新加载systemd系统服务配置
systemctl daemon-reload

# 2. 启动docker服务
systemctl start docker

# 3. 设置docker开机自启(服务器重启后自动运行,企业级必做)
systemctl enable docker

# 4. 查看docker服务运行状态
systemctl status docker
  • 成功标志:终端输出active (running),且无红色报错信息,按q退出查看界面。

  • 补充验证:查看依赖的 containerd 运行时状态,确保正常运行

    复制代码
    systemctl status containerd

步骤 6:部署结果全量验证

6.1 版本与信息验证
复制代码
# 查看docker版本,确认安装成功
docker --version

# 查看docker详细信息,验证配置是否生效
docker info
  • 成功标志:docker --version输出完整版本号(如Docker version 26.0.2, build 3c8b0c4);docker info中可看到配置的镜像加速地址、存储驱动、数据目录。
6.2 容器运行能力验证(核心验证)

运行 hello-world 官方测试容器,验证 docker 的镜像拉取、容器创建、运行全流程能力:

复制代码
# 运行hello-world测试容器
docker run --rm hello-world
  • 成功标志:终端输出Hello from Docker! 字样,说明 docker 部署完全成功,可正常使用。
6.3 补充验证命令
复制代码
# 查看本地镜像列表,可看到hello-world镜像
docker images

# 查看容器运行记录,可看到hello-world容器的运行记录
docker ps -a

四、高阶用法(企业级信创场景进阶)

4.1 普通用户免 sudo 操作 Docker 配置

默认只有 root 用户可操作 docker,通过以下步骤可实现普通用户免 sudo 执行 docker 命令,适合企业级多用户运维场景:

复制代码
# 1. 创建docker用户组
groupadd docker

# 2. 将目标普通用户(例如testuser)加入docker组
usermod -aG docker testuser

# 3. 刷新用户权限
newgrp docker

# 4. 验证:切换到普通用户,执行docker命令无需sudo
su - testuser
docker ps
  • 安全提示:docker 组用户等同于 root 权限,企业级环境需严格管控用户准入,仅给运维人员授权。

4.2 Docker 数据目录迁移(企业级必备)

默认数据目录在系统盘/var/lib/docker,企业级环境需迁移到独立数据盘,避免系统盘占满导致服务器故障:

复制代码
# 1. 停止docker服务
systemctl stop docker

# 2. 创建新的数据目录(例如数据盘挂载在/data,创建docker目录)
mkdir -p /data/docker

# 3. 同步原有数据到新目录,避免镜像/容器丢失
rsync -avz /var/lib/docker/ /data/docker/

# 4. 备份原有目录
mv /var/lib/docker /var/lib/docker.bak

# 5. 修改daemon.json中的data-root配置,改为新目录路径
sed -i 's+"data-root": "/var/lib/docker"+"data-root": "/data/docker"+' /etc/docker/daemon.json

# 6. 重新加载配置并启动docker
systemctl daemon-reload
systemctl start docker

# 7. 验证数据目录是否生效
docker info | grep "Docker Root Dir"
  • 成功标志:输出Docker Root Dir: /data/docker,说明迁移成功。

4.3 Docker 安全加固(信创等保合规必备)

4.3.1 开启 TLS 远程加密访问

避免 Docker API 未授权访问漏洞,企业级远程管理必须开启 TLS 加密:

复制代码
# 1. 创建TLS证书存放目录
mkdir -p /etc/docker/tls && cd /etc/docker/tls

# 2. 生成CA根证书
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem

# 3. 生成服务端证书
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=docker-server" -sha256 -new -key server-key.pem -out server.csr
echo subjectAltName = DNS:docker-server,IP:0.0.0.0 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf

# 4. 生成客户端证书
openssl genrsa -out key.pem 4096
openssl req -subj "/CN=docker-client" -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile-client.cnf
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf

# 5. 配置docker开启TLS远程访问
sed -i 's/^ExecStart=.*/ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ -H tcp:\/\/0.0.0.0:2376 --tlsverify --tlscacert=\/etc\/docker\/tls\/ca.pem --tlscert=\/etc\/docker\/tls\/server-cert.pem --tlskey=\/etc\/docker\/tls\/server-key.pem/' /usr/lib/systemd/system/docker.service

# 6. 重启docker服务生效
systemctl daemon-reload
systemctl restart docker
  • 客户端访问方式:需携带 ca.pem、cert.pem、key.pem 三个证书文件,通过 2376 端口加密访问。
4.3.2 容器运行安全加固
  • 禁止容器使用 root 权限运行,示例:

    复制代码
    # 创建普通用户运行nginx容器,禁止root权限
    docker run -d --user 1001 --cap-drop=ALL --security-opt no-new-privileges nginx
  • 核心参数说明:

    • --user 1001:使用普通用户 UID 运行容器
    • --cap-drop=ALL:禁用所有 Linux 内核特权
    • --security-opt no-new-privileges:禁止容器提权

4.4 Docker Compose 多容器编排

Docker Compose 是企业级多容器应用编排工具,步骤 3 已安装docker-compose-plugin,可直接使用:

复制代码
# 1. 验证docker compose是否可用
docker compose version

# 2. 创建编排目录
mkdir -p /opt/docker-compose-demo && cd /opt/docker-compose-demo

# 3. 编写docker-compose.yml编排文件(示例:部署nginx+mysql)
cat > docker-compose.yml << EOF
version: '3.8'
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    restart: always
    volumes:
      - ./nginx/html:/usr/share/nginx/html

  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "Root@123456"
    volumes:
      - ./mysql/data:/var/lib/mysql
EOF

# 4. 启动编排应用
docker compose up -d

# 5. 查看运行状态
docker compose ps

# 6. 查看服务日志
docker compose logs -f
  • 常用命令:
    • docker compose down:停止并删除所有容器
    • docker compose restart:重启所有服务
    • docker compose exec nginx bash:进入 nginx 容器内部

五、拓展建议(信创企业级长期使用)

5.1 信创环境适配优化

  1. 国产化架构优化 :鲲鹏 / 飞腾 arm64 架构服务器,必须使用原生 arm64 镜像,避免 qemu 模拟导致的性能损耗;构建镜像时需适配多架构,使用docker buildx构建跨架构镜像。
  2. 内核特性适配:可对接 openEuler 原生安全特性,如 secGear 机密计算、eBPF 性能监控、iSulad 轻量级容器引擎,提升信创环境安全性与性能。
  3. 存储适配优化:企业级环境对接国产化分布式存储,保持 overlay2 存储驱动,开启磁盘配额,避免单容器占用过多存储资源。

5.2 监控与运维体系搭建

  1. 容器监控 :使用Prometheus + Grafana + cadvisor搭建容器监控体系,监控容器 CPU、内存、磁盘、网络全维度指标,适配信创服务器运维需求。
  2. 日志管理 :使用ELK/EFK栈收集容器日志,实现日志集中存储、检索、审计,满足等保 2.0 日志留存 6 个月以上的合规要求。
  3. 告警配置:配置容器异常退出、服务宕机、磁盘使用率超 85%、CPU / 内存占用持续过高的告警规则,通过邮件 / 企业微信 / 钉钉推送。

5.3 备份与容灾方案

  1. 常规备份
    • 数据备份:定期备份 docker 数据目录、数据卷、编排文件;
    • 镜像备份:将业务镜像推送到私有镜像仓库,避免 Docker Hub 故障导致镜像丢失;
    • 系统备份:定期对 openEuler 系统盘做快照备份,避免系统故障导致业务中断。
  2. 企业级容灾:单节点 docker 无法满足高可用需求,信创生产环境建议搭建 Docker Swarm 集群,或对接 openEuler 原生支持的 Kubernetes 集群,实现业务多节点容灾与负载均衡。

5.4 常见问题排查指南(初学者必备)

  1. Docker 服务启动失败
    • 90% 的原因是daemon.jsonJSON 格式错误,使用jsonlint /etc/docker/daemon.json检查格式;
    • 其次是数据目录权限异常,执行chown -R root:root /var/lib/docker修复权限;
    • 查看报错日志:journalctl -u docker -f,精准定位问题。
  2. 镜像拉取失败
    • 检查镜像加速地址是否配置正确,重启 docker 服务生效;
    • 检查防火墙 / 代理是否限制网络访问,测试公网连通性;
    • 更换镜像源地址,部分镜像源可能存在服务中断。
  3. 容器运行失败
    • 检查端口是否被占用:netstat -tulpn | grep 端口号,更换映射端口;
    • 检查 SELinux 是否拦截,执行setenforce 0临时关闭验证;
    • 查看容器日志:docker logs 容器ID,定位应用内部报错。

5.5 学习路径规划

初学者完成基础部署后,推荐学习路径:

  1. 基础阶段:Docker 核心命令、镜像构建、Dockerfile 编写、数据卷管理;
  2. 进阶阶段:Docker Compose 编排、容器网络、存储进阶、安全加固;
  3. 企业级阶段:信创云原生对接、Kubernetes 集群搭建、DevOps 流水线、等保合规落地。
相关推荐
小猿姐1 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
阿里云云原生2 天前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造