背景
现在国产化系统在各行各业普及,而Docker部署在欧拉系统上与主流的CentOS、Redhat、Ubuntu 在一些细节上有所差异,正好有项目用到,于是把经验分享一下。
整体架构流程
- 欧拉系统环境下载和检测
- docker安装
- docker-compose安装
技术名词解释
欧拉系统(openEuler)
欧拉系统是由华为开发的开源Linux发行版,基于CentOS构建,面向企业级应用场景。其特点包括支持ARM/x86/GPU等多种架构,提供高性能、高安全性及长周期维护支持。主要应用于云计算、大数据和边缘计算领域。
CentOS
CentOS(Community Enterprise Operating System)是基于Red Hat Enterprise Linux(RHEL)源代码重新编译而成的免费Linux发行版。其优势在于完全兼容RHEL的稳定性和企业级功能,但无官方商业支持。2020年后转为CentOS Stream,变为RHEL的上游开发分支。
Red Hat Enterprise Linux(RHEL)
RHEL是由Red Hat公司开发的商业Linux发行版,针对企业服务器和工作站设计。提供长期技术支持(通常10年)、安全更新及专业服务,需订阅授权。其稳定性与安全性使其成为金融、电信等行业的主流选择。
Ubuntu
Ubuntu是由Canonical公司维护的Debian系Linux发行版,以用户友好性和丰富的软件生态著称。提供LTS(长期支持)版本(5年维护周期)和半年更新版本。广泛应用于桌面环境、云服务(如OpenStack)及物联网领域。
Docker
Docker 是一种开源的容器化平台,允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。容器在运行时与其他容器隔离,共享主机操作系统内核,但拥有独立的文件系统、网络和进程空间。
- 容器(Container):运行时的实例,基于镜像创建。容器是轻量级的,启动快速,资源占用少。
- 镜像(Image):容器的静态模板,包含运行应用程序所需的代码、库和环境配置。镜像是只读的,通过分层存储实现高效复用。
- Dockerfile:文本文件,定义如何构建镜像。包含一系列指令(如
FROM
、RUN
、COPY
)。 - Docker Hub:公共镜像仓库,提供官方和社区维护的镜像,支持镜像的拉取和推送。
Docker Compose
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 YAML 文件(默认名 docker-compose.yml
)配置服务、网络和卷,实现一键启动、停止和管理容器组。
- 服务(Service):在
docker-compose.yml
中定义的一个容器化应用。一个服务可以包含多个相同镜像的容器实例(通过扩展实现)。 - 项目(Project):由一组关联的服务组成,通过
docker-compose
命令管理。项目名称默认为当前目录名,也可通过-p
指定。 - 网络(Network):Compose 自动为项目创建专用网络,服务间可通过服务名通信,无需暴露端口到主机。
- 卷(Volume):用于持久化数据或共享数据 between 容器。Compose 支持定义命名的卷或绑定主机目录。
Docker与Docker Compose关键区别
- Docker:专注于单容器的生命周期管理(构建、运行、分发)。
- Docker Compose:专注于多容器应用的编排,简化复杂应用的依赖管理和部署流程。
技术细节
欧拉系统环境下载和检测
准备一台电脑,内存至少8G,cpu i5, 存储建议至少500G
U盘: 驱动USB2.0/3.0, 存储最少16GB
去 openEuler社区 下载ISO,我用的是openEuler 24.09, 通过刻盘工具把ISO写入到U盘,这里不做介绍,有空出一篇。
安装后,通过ssh工具登录,执行如下命令检查
[root@localhost ~]# cat /etc/os-release
NAME="openEuler"
VERSION="24.09"
ID="openEuler"
VERSION_ID="24.09"
PRETTY_NAME="openEuler 24.09"
ANSI_COLOR="0;31"
Docker安装
查看yum镜像源
[root@localhost ~]# ll /etc/yum.repos.d/
总计 16
-rw-r--r--. 1 root root 2027 2024年11月21日 docker-ce.repo
-rw-r--r--. 1 root root 2027 2024年12月16日 docker.repo
-rw-r--r--. 1 root root 2587 2024年 9月18日 openEuler.repo.bak
-rw-r--r--. 1 root root 105 2024年11月21日 openEuler_x86_64.repo
[root@localhost ~]# cat /etc/yum.repos.d/openEuler_x86_64.repo
[repository]
name=openEuler
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.09/OS/x86_64/
发现地址是https://mirrors.huaweicloud.com/openeuler/openEuler-24.09/OS/x86_64/
检索需要安装的docker名称
[root@localhost ~]# yum search docker
\Repository docker-ce-stable is listed more than once in the configuration
Repository docker-ce-stable-debuginfo is listed more than once in the configuration
Repository docker-ce-stable-source is listed more than once in the configuration
Repository docker-ce-test is listed more than once in the configuration
Repository docker-ce-test-debuginfo is listed more than once in the configuration
Repository docker-ce-test-source is listed more than once in the configuration
Repository docker-ce-nightly is listed more than once in the configuration
Repository docker-ce-nightly-debuginfo is listed more than once in the configuration
Repository docker-ce-nightly-source is listed more than once in the configuration
Last metadata expiration check: 3:28:00 ago on 2025年09月04日 星期四 13时29分13秒.
======================================================================================== Name Exactly Matched: docker ========================================================================================
docker.x86_64 : The open-source application container engine
======================================================================================= Name & Summary Matched: docker =======================================================================================
docker-buildx-plugin.x86_64 : Docker Buildx plugin for the Docker CLI
docker-ce-rootless-extras.x86_64 : Rootless support for Docker
docker-client.x86_64 : Docker client binary and related utilities
docker-compose.noarch : Multi-container orchestration for Docker
docker-compose-plugin.x86_64 : Docker Compose (V2) plugin for the Docker CLI
docker-model-plugin.x86_64 : Docker Model Runner plugin for the Docker CLI
docker-scan-plugin.x86_64 : Docker Scan plugin for the Docker CLI
pcp-pmda-docker.x86_64 : Performance Co-Pilot (PCP) metrics from the Docker daemon
python3-docker.noarch : A Python library for the Docker Engine API.
python3-docker-pycreds.noarch : Python bindings for the docker credentials store API
python3-dockerpty.noarch : Python library to use the pseudo-tty of a docker container
============================================================================================ Name Matched: docker ============================================================================================
docker-ce.x86_64 : The open-source application container engine
docker-ce-cli.x86_64 : The open-source application container engine
docker-engine.x86_64 : The open-source application container engine
发现有几个docker-ce docker-ce-cli docker-engine
安装Docker引擎
yum install docker-engine docker-ce docker-ce-cli
启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
验证版本和安装
sudo docker -v
sudo docker run hello-world
设置Docker镜像加速(可选)
编辑配置文件/etc/docker/daemon.json
:data-root一般选择磁盘空间较大的那个分区
[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://dockerhub.icu",
"https://docker.rainbond.cc"
],
"data-root": "/data/docker"
}
重载配置并重启:
sudo systemctl daemon-reload
sudo systemctl restart docker
注意事项
- 24.09这个版本,docker的日志类型默认是journald,通过/etc/docker/daemon.json配置为json会导致报错,可能需要运行时指定
- docker的ulimit同样需要docker run才能指定,配置会报错
- 这时命令示例
docker run xxx --ulimit nofile=65536:65536 --ulimit nproc=65536:65536 --log-driver=json-file --log-opt max-size=50m --log-opt max-file=10
docker-compose安装
在安装 docker-compose 之前,需确保 Docker 已正确安装。
下载 docker-compose 二进制文件
从 GitHub 官方仓库下载最新版本的 docker-compose 二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋予执行权限
为下载的二进制文件添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
验证安装
通过检查版本号确认安装是否成功:
docker-compose --version
配置用户权限(可选)
若希望非 root 用户使用 docker-compose,需将用户加入 docker 组:
sudo usermod -aG docker $USER
newgrp docker
总结
最近一直在欧拉系统上使用docker安装各种镜像,与主流的CentOS、Redhat、Ubuntu相比,并无差异,并且感觉性能似乎更好一点。