信创企业级 openEuler 24 部署 docker-ce 全指南
特指 openEuler 24.03 LTS 系列(含 SP1/SP3),是欧拉社区发布的企业级长期支持版开源操作系统,原生适配鲲鹏、飞腾、海光、兆芯等国产化 CPU,是国内信创项目的主流服务器操作系统。docker-ce:Docker Community Edition(社区版),免费开源的容器化引擎,是企业级应用打包、交付、运行的行业标准,可实现「一次构建,到处运行」,完美适配信创环境下的应用
一、背景认知
1.1 核心术语定义
- openEuler 24:特指 openEuler 24.03 LTS 系列(含 SP1/SP3),是欧拉社区发布的企业级长期支持版开源操作系统,原生适配鲲鹏、飞腾、海光、兆芯等国产化 CPU,是国内信创项目的主流服务器操作系统。
- docker-ce:Docker Community Edition(社区版),免费开源的容器化引擎,是企业级应用打包、交付、运行的行业标准,可实现「一次构建,到处运行」,完美适配信创环境下的应用一致性部署需求。
1.2 信创场景部署核心价值
- 国产化深度适配:兼容全系列信创 CPU 架构,与 openEuler 内核安全特性深度协同,满足等保 2.0 合规要求;
- 应用交付标准化:解决信创环境下「不同服务器、不同架构应用运行不一致」的痛点,大幅降低运维成本;
- 资源隔离与高效利用:轻量级容器虚拟化,比传统虚拟机资源占用更低、启动速度更快,适配信创服务器性能优化需求;
- 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 系统安全配置
- 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 - 防火墙配置:企业级不建议直接关闭防火墙,需放行 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 - 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 核心规划
- 版本选择:企业级推荐稳定版 24.0.x 系列,不推荐最新开发版,避免兼容性问题;
- 数据目录:企业级必须将 docker 数据目录规划到独立数据盘(如
/data/docker),避免系统盘被容器日志 / 镜像占满; - 镜像加速:配置国内镜像加速地址,解决 Docker Hub 访问受限、拉取镜像超时问题;
- 网络规划:提前规划 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 信创环境适配优化
- 国产化架构优化:鲲鹏 / 飞腾 arm64 架构服务器,必须使用原生 arm64 镜像,避免 qemu 模拟导致的性能损耗;构建镜像时需适配多架构,使用
docker buildx构建跨架构镜像。 - 内核特性适配:可对接 openEuler 原生安全特性,如 secGear 机密计算、eBPF 性能监控、iSulad 轻量级容器引擎,提升信创环境安全性与性能。
- 存储适配优化:企业级环境对接国产化分布式存储,保持 overlay2 存储驱动,开启磁盘配额,避免单容器占用过多存储资源。
5.2 监控与运维体系搭建
- 容器监控:使用
Prometheus + Grafana + cadvisor搭建容器监控体系,监控容器 CPU、内存、磁盘、网络全维度指标,适配信创服务器运维需求。 - 日志管理:使用
ELK/EFK栈收集容器日志,实现日志集中存储、检索、审计,满足等保 2.0 日志留存 6 个月以上的合规要求。 - 告警配置:配置容器异常退出、服务宕机、磁盘使用率超 85%、CPU / 内存占用持续过高的告警规则,通过邮件 / 企业微信 / 钉钉推送。
5.3 备份与容灾方案
- 常规备份:
- 数据备份:定期备份 docker 数据目录、数据卷、编排文件;
- 镜像备份:将业务镜像推送到私有镜像仓库,避免 Docker Hub 故障导致镜像丢失;
- 系统备份:定期对 openEuler 系统盘做快照备份,避免系统故障导致业务中断。
- 企业级容灾:单节点 docker 无法满足高可用需求,信创生产环境建议搭建 Docker Swarm 集群,或对接 openEuler 原生支持的 Kubernetes 集群,实现业务多节点容灾与负载均衡。
5.4 常见问题排查指南(初学者必备)
- Docker 服务启动失败
- 90% 的原因是
daemon.jsonJSON 格式错误,使用jsonlint /etc/docker/daemon.json检查格式; - 其次是数据目录权限异常,执行
chown -R root:root /var/lib/docker修复权限; - 查看报错日志:
journalctl -u docker -f,精准定位问题。
- 90% 的原因是
- 镜像拉取失败
- 检查镜像加速地址是否配置正确,重启 docker 服务生效;
- 检查防火墙 / 代理是否限制网络访问,测试公网连通性;
- 更换镜像源地址,部分镜像源可能存在服务中断。
- 容器运行失败
- 检查端口是否被占用:
netstat -tulpn | grep 端口号,更换映射端口; - 检查 SELinux 是否拦截,执行
setenforce 0临时关闭验证; - 查看容器日志:
docker logs 容器ID,定位应用内部报错。
- 检查端口是否被占用:
5.5 学习路径规划
初学者完成基础部署后,推荐学习路径:
- 基础阶段:Docker 核心命令、镜像构建、Dockerfile 编写、数据卷管理;
- 进阶阶段:Docker Compose 编排、容器网络、存储进阶、安全加固;
- 企业级阶段:信创云原生对接、Kubernetes 集群搭建、DevOps 流水线、等保合规落地。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)