一、背景认知

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 流水线、等保合规落地。
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐