——从 Ubuntu 模板克隆节点到 Docker 环境就绪


为什么今天只做到 Docker

今天的学习时间并不充裕,因此我没有强行推进到 AI 服务部署阶段
相反,我选择把精力集中在一个非常关键、但常被低估的步骤上:

从 Ubuntu 模板克隆出第一个“可长期使用”的 Docker 节点

在实际工程中,很多问题并不是出现在“高级组件”
而是出现在基础节点没有准备干净

这一篇只聚焦两件事:

  1. 从模板克隆一个规范的虚拟机节点

  2. 在该节点上完成 Docker 的官方、标准化安装

为后续所有 AI、Kubernetes、服务编排打好地基


一、背景说明

在前两篇中,我已经完成了:

  • 空有想法

  • Ubuntu 24.04 模板的制作

因此,直接进入真实运维中更高频、更有价值的阶段:

模板 → 节点 → 环境准备


二、从 Ubuntu Template 克隆虚拟机

2.1 克隆方式选择

本次选择:

  • 完整克隆

原因很明确:

  • 完整克隆会生成独立磁盘

  • 不与模板共享任何数据

  • 更贴近真实生产环境

  • 后续可随意销毁、重装、调整,不影响模板本身

节点才是“消耗品”


2.2 虚拟机命名规范(非常重要)

本次克隆得到的虚拟机命名为:

pve-ubuntu2404-docker-lab-01

为什么这样命名还需要说吗,如下:

  • pve:运行平台(便于多环境区分)

  • ubuntu2404:系统版本

  • docker:节点角色

  • lab:实验 / 学习环境

  • 01:节点编号,便于横向扩展

命名不是为了好看
而是快速定位“这台机器是干嘛的”


三、虚拟机首次启动与基础确认

克隆完成后,启动虚拟机,通过 PVE 控制台或 SSH 登录系统

首先确认系统版本:

lsb_release -a

这条命令是做什么的?

  • lsb_release:用于查询 Linux 系统发行版信息

  • -a:输出所有可用的发行版信息

用途很简单,但很关键:

  • 确认当前节点是否真的来自 Ubuntu 24.04 模板

  • 避免后续因系统版本差异导致的 Docker / 组件问题


四、网络配置:从 DHCP 切换为静态 IP

模板阶段使用 DHCP 是正确选择
但节点一旦承担长期角色,就必须使用静态 IP

Ubuntu 24.04 使用 Netplan 管理网络配置

配置文件路径一般为:

/etc/netplan/*.yaml

修改完成后,应用配置:

sudo netplan apply

这条命令做了什么?

  • netplan apply
    将 YAML 中的网络配置转译为底层网络服务配置(systemd-networkd 或 NetworkManager)

⚠️ 注意事项:

  • 该命令会瞬间重载网络

  • SSH 连接可能会短暂中断

  • 使用 PVE 控制台操作是最安全的方式

怎么验证改后的 ip 还需要说吗,如下:

ip a

五、系统基础更新

sudo apt update && sudo apt -y upgrade

命令拆解说明:

  • apt update

    • 更新本地软件包索引

    • 不安装任何软件

  • apt upgrade

    • 将已安装的软件升级到可用的新版本

这样做的目的:

  • 避免 Docker 与旧内核 / 旧库不兼容

  • 减少后续排查“玄学问题”的概率


六、安装 Docker 所需的基础工具

sudo apt install -y \
  curl \
  ca-certificates \
  gnupg \
  lsb-release

各组件作用说明:

  • curl

    • 用于从网络获取 Docker 官方安装脚本

  • ca-certificates

    • 提供 HTTPS 证书校验能力

    • 否则可能无法安全访问官方仓库

  • gnupg

    • 用于验证软件包签名

    • 确保安装内容未被篡改

  • lsb-release

    • Docker 安装脚本会读取系统发行版信息

    • 用于自动选择正确的仓库与版本

如果系统提示 already the newest version,说明该组件已满足要求


七、Docker 安装

7.1 安装 Docker

curl -fsSL https://get.docker.com | sudo sh

这是 Docker 官方推荐的安装方式

参数说明:

  • -f:静默失败(避免输出 HTML 错误页面)

  • -s:静默模式,减少无关输出

  • -S:显示错误信息

  • -L:自动跟随重定向

该脚本会自动完成:

  • 添加 Docker 官方 APT 仓库

  • 安装 docker-ce(Docker Engine)

  • 安装 containerd

  • 配置 systemd 服务

  • 设置 Docker 开机自启

本质上,这是把一整套生产级安装流程封装成了一条命令


7.2 将当前用户加入 docker 用户组

sudo usermod -aG docker $USER

拆解:

  • usermod:修改用户属性

  • -a:追加(append),而不是覆盖

  • -G docker:加入 docker 用户组

  • $USER:当前登录用户

目的:

  • 允许普通用户直接使用 docker 命令

  • 避免每次都加 sudo

  • 符合长期运维与开发习惯


7.3 登出并重新登录(非常容易被忽略)

exit

然后重新登录系统。

原因是:

  • Linux 的用户组变更 不会对当前会话立即生效

  • 必须重新登录,才能获得新的权限

如果跳过这一步,后续极易遇到:

permission denied while trying to connect to the Docker daemon

八、Docker 安装验证

8.1 验证 Docker 版本

docker version

正常情况下应看到:

  • Client 版本信息

  • Server 版本信息


8.2 运行测试容器

docker run hello-world

这条命令会:

  1. 从官方仓库拉取 hello-world 镜像

  2. 启动一个最小容器

  3. 输出测试信息后自动退出

看到 Hello from Docker!,说明:

  • Docker 安装成功

  • 网络正常

  • 权限配置正确


九、当前节点状态总结

截至目前,该节点已具备:

  • ✅ Ubuntu 24.04 稳定运行

  • ✅ 静态 IP 配置完成

  • ✅ 系统补丁更新完成

  • ✅ Docker Engine 安装完成

  • ✅ docker 用户组权限生效

  • ✅ 容器可正常运行

节点角色正式确立为:

通用 Docker 节点
(后续将作为私有 AI 平台的基础计算节点)


学习记录声明

本文内容仅为本人在学习与实践过程中的阶段性记录,用于知识整理与经验分享,不构成任何形式的操作建议或生产指导
不同硬件环境、系统版本与配置差异较大,请读者根据自身情况独立判断并自行承担相关风险
如需在生产环境或关键系统中使用,请务必参考官方文档并进行充分验证

自言自语:由于对Ubuntu的陌生,很多东西都是现学现卖。熟悉各大厂商的基础环境看来还是有必要的。近期公司又上了统信系统,抽空了赶紧看看,以免遇到尴尬的事情

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐