云原生基石的试金石:基于 openEuler 部署 Docker 与 Nginx 的全景实录

摘要: 随着云原生技术栈的演进,操作系统作为承载上层应用与编排系统的数字底座,其稳定性、兼容性与性能表现愈发关键。openEuler,作为面向数字基础设施的开源操作系统,其在云原生场景下的适配能力备受关注。本文基于 openEuler 24.03 LTS SP2 发行版,完整记录了从 VMware 虚拟机配置、系统安装、K8s 核心运行时(containerd)部署,到最终 Nginx 应用容器化运行的全过程。旨在通过详尽的、可复现的步骤,深度评测 openEuler 24.03 LTS 在云原生基础环境搭建中的表现。

一、 评测环境搭建:虚拟化层准备

一篇严谨的评测始于一个清晰透明的环境配置。我们首先需要一个承载 openEuler 24.03 LTS SP2 的虚拟机环境

1.1 虚拟化平台和镜像源

本次评测选用 VMware Workstation Pro (您也可以使用 VirtualBox,原理相通)

我们来到官网 www.openeuler.openatom.cn/zh/download... 获取 openEuler 的安装镜像,选择 openEuler 24.03 LTS SP2 作为长期稳定的安装版本,架构一般为 x86 64 服务器即可,选择最小的下载就行了

1.2 虚拟机(VM)创建与硬件配置

VMware Workstation 中,我们选择创建新的虚拟机

选择 自定义(高级) 以便精确控制硬件配置,以下将为系统进行详细的部署设置准备:

选择虚拟机硬件兼容性: 点击下一步保持默认的硬件兼容性即可

安装客户机操作系统: 这里选择安装程序光盘程序映像文件,点击浏览导入你刚刚下载的 openEuler-24.03-LTS-SP2-x86_64-dvd.iso 镜像文件,然后点击下一步

选择客户机操作系统: 选择 Linux,版本选择"其他 Linux 5.x 或更高版本 64 位",然后点击下一步

命名虚拟机: 虚拟机名称自己起一个,点击浏览,位置改存到 D 盘或 E 盘,然后点击下一步

处理器配置: 分配 2 个处理器每个处理器 2 个内核 (总共 4 核),以保证 dnf 依赖解析和系统运行的流畅性,然后点击下一步

此虚拟机的内存: 分配 4096 MB (4 GB) 内存,然后点击下一步

网络类型: 关键步骤!选择 "使用桥接网络"。这将使虚拟机在局域网中获得一个独立的 IP 地址,便于后续通过浏览器进行外部访问验证

选择 I/O 控制器类型: 保持默认 LSI Logic SAS,然后点击下一步

选择磁盘类型: 保持默认 SCSI,然后点击下一步

选择磁盘: 选择创建新虚拟磁盘,然后点击下一步

指定磁盘容量: 建议分配 50 GB 空间(选择"将虚拟磁盘存储为单个文件"并"精简置备"),然后点击下一步

指定磁盘文件: 指定磁盘配置文件名,一般保持默认即可,然后点击下一步

已准备好创建虚拟机: 最后检查以下配置,然后点击完成即可,现在就已经完成了所有的配置

1.3 openEuler 24.03 LTS SP2 系统安装

那么接下来就要开始对系统进行安装了,注意可以使用 ctrl + alt 退出虚拟机的鼠标

在左侧就能找到刚才创建的虚拟机,选择开启此虚拟机,进入 openEuler 安装程序

等待程序加载一会儿,然后就会出现这个界面,enter 回车键继续即可,下面的提示点击我已完成安装即可

等待虚拟机安装程序完成至 100%,接下来在安装信息摘要页面,我们需要完成几项基本配置:

语言选择: 中文->简体中文,然后点击继续

然后我们来到这个页面,我们将对这个页面的部分功能进行配置

  1. 软件选择 :进入"软件选择",我们选择 "最小化安装"。这最能模拟服务器的真实环境,也最能体现我们"从零开始"搭建环境的能力
  1. 安装目的地 :选择我们创建的 50GB 虚拟磁盘,使用"自动分区"
  1. 网络和主机名:进入"网络和主机名",打开右上角的以太网开关
  1. 用户设置 :选择 root 账户,设置 root 密码,如果是多账户使用,可以再创建普通用户

这几个关键的设置好了之后,点击开始安装并等待完成后重启系统即可

登入账户: localhost login 一般为 rootPassword 就输入你刚才设置的密码

二、 系统基线核验与环境初始化

系统启动后,我们首先进行基线核验,线核验

2.1 版本与网络核验

首先,确认操作系统版本是否与预期一致:

bash 复制代码
cat /etc/os-release

可以看到的确是 openEulerVERSION="24.03 LTS SP2"

接下来,核验网络连接。查看 IP 地址并测试外网连通性:

bash 复制代码
# 查看 IP 地址
ip addr show

# 测试网络连通性
ping -c 3 openeuler.org

能看到 IP 地址和丢包率为 0% 即可

2.2 DNF 软件源更新

使用 dnf 更新一下软件源缓存,确保我们能获取到最新的软件包列表

bash 复制代码
# 清理并生成缓存
sudo dnf clean all
sudo dnf makecache

三、 容器化引擎部署(containerd + nerdctl)

引擎部署是云原生实践的核心。在 24.03 LTS 这样的现代操作系统上,我们拥有了更前沿的选择

3.1 技术选型:为何选择 containerd?

虽然 docker (Moby) 是最广为人知的容器引擎,但在当今的云原生(尤其是 Kubernetes)生态中,containerd 才是处于"C 位"的核心运行时。docker 本身在后端也依赖于 containerd

因此,本次评测我们"绕过" Docker 的上层封装,直接 containerd。为了方便操作,我们搭配使用 nerdctl------这是一个与 docker CLI 命令和功能高度兼容的客户端工具

这种 containerd + nerdctl 的"K8s 原生"组合,能更纯粹地体验 openEuler 24.03 LTS 对核心运行时的支持

3.2 引擎安装

openEuler 24.03 的官方源中已经包含了 containerdnerdctl,我们可以直接使用 dnf 一键安装。

bash 复制代码
# -y 参数表示自动确认所有依赖项
sudo dnf install containerd nerdctl -y

3.3 守护进程配置与启动

安装完成后,我们需要使用 systemd 来启动 containerd 服务。

bash 复制代码
# 1. 立即启动 containerd 服务
sudo systemctl start containerd

# 2. 设置 containerd 服务开机自启
sudo systemctl enable containerd

systemctl enable 命令的原理是在 /etc/systemd/system/ 目录下的相应 .target(如 multi-user.target.wants/)中创建 containerd.service 的符号链接,确保系统在下次启动到多用户模式时自动拉起该服务

3.4 状态与版本验证

验证 containerd 服务是否按预期运行:

bash 复制代码
# 检查服务状态
systemctl status containerd

同时,我们检查 nerdctl 的版本信息,确认其能与 containerd 正常通信:

bash 复制代码
sudo nerdctl version

四、 云原生应用部署实战 (Nginx)

环境完备,我们开始部署第一个容器化应用 Nginx

4.1 镜像拉取与分层存储

sudo nerdctl pull 命令将从 Docker Hub(默认)拉取 Nginx 的官方镜像。容器镜像采用了联合文件系统(如 OverlayFS),由多个只读层(Layers)构成

bash 复制代码
# 拉取最新的 Nginx 稳定版镜像
sudo nerdctl pull nginx:latest

4.2 容器实例化与端口映射

使用 sudo nerdctl run 命令来启动容器

bash 复制代码
# -d: 后台(Detached)模式运行
# -p 8080:80: 端口映射(Host:Container)
# --name my-web: 指定容器名称
# nginx: 使用的镜像
sudo nerdctl run -d -p 8080:80 --name my-web nginx

-p 880:80是此命令的核心。其底层原理是containerd(及其 CNI 插件,如 bridge)通过 iptables(或 nftables)在宿主机的 NAT 表中添加了一条 DNAT 规则。该规则将所有目标(DST)为宿主机(0.0.0.0:8080)的流量,转发(DNAT to)到 Nginx 容器在内部网络的 80 端口

4.3 运行状态检视

使用 sudo nerdctl ps 查看容器是否按预期运行。

bash 复制代码
sudo nerdctl ps

五、 部署验证与服务访问

我们从本地和外部两个维度验证 Nginx 服务的可用性。

5.1 本地环回测试 (Loopback)

openEuler 终端内,使用 curl 访问宿主机映射的 8080 端口。

bash 复制代码
curl http://localhost:8080

六、总结

从零构建虚拟机、安装 openEuler 24.03 LTS SP2、部署 containerd 运行时,直至运行 Nginx 服务的全过程:

  1. 紧沿,生态完善openEuler 24.03 LTS SP2 作为一个现代化的发行版,其软件源中直接了 containerdnerdctl ,免去了复杂的编译和第三方源配置。这体现了 openEuler 社区对 K8s 和云原生标准生态的迅速跟进与完美支持。

  2. 高度稳定,内核先进 :系统(基于 6.x 内核)对 Cgroups v2Namespaces 的支持更加完善,systemdcontainerd 服务的管理表现得高度稳定,全程无任何报错

  3. 流程标准,体验顺畅 :整个部署流程遵循 Linux 标准实践(dnf, systemctl),全程使用 sudo 也符合服务器安全规范。nerdctl 带来的"Docker 兼容"体验,使得迁移和学习成本几乎为零

  4. 云原生基石稳固 :此次评测成功验证了 openEuler 24.03 LTS 具备了作为"K8s 底座"的全部关键能力:可靠的内核、标准的容器运行时(CRI)、稳健的网络(CNI)能力。这为后续部署 K8s 集群、Service Mesh 甚至 AI(如 Kubeflow)等复杂云原生组件奠定了最坚实的基础

openEuler 24.03 LTS SP2 展现了其作为数字基础设施操作系统的专业性、先进性与可靠性

分享一下 openEuler 相关产品官方信息:​

1.产品地址:www.openeuler.org/​

2.评测地址:www.openeuler.org/​

3.产品使用说明:docs.openeuler.openatom.cn/zh/

相关推荐
oak隔壁找我3 小时前
SpringBoot Starter 进阶教程
java·后端·架构
sp423 小时前
Java 统一文件上传业务组件
后端
10x104 小时前
# Docker 使用笔记:重新理解镜像、容器与数据持久化
后端
Rover.x4 小时前
Spring国际化语言切换不生效
java·后端·spring
IT_陈寒4 小时前
Redis 7个性能优化技巧,让我们的QPS从5k提升到20k+
前端·人工智能·后端
百锦再4 小时前
金仓数据库提出“三低一平”的迁移理念
开发语言·数据库·后端·python·rust·eclipse·pygame
ZHE|张恒5 小时前
深入理解 Spring 原理:IOC、AOP 与事务管理
java·后端·spring
expect7g5 小时前
Flink-To-Paimon 读取机制
大数据·后端·flink