从一台二手服务器开始:构建私有 AI 平台的真实实践记录(三)
本文记录了我在已有 PVE 虚拟化环境中,从 Ubuntu 24.04 Server 模板克隆第一个可长期使用节点,并完成 Docker 官方标准化安装的全过程。内容聚焦真实运维实践,详细说明了虚拟机克隆策略、节点命名规范、网络配置思路以及 Docker 安装过程中关键命令的实际作用与参数含义。该节点将作为后续私有 AI 平台与容器化服务的基础计算节点,为后续扩展打下稳定、可复用的环境基础
——从 Ubuntu 模板克隆节点到 Docker 环境就绪
为什么今天只做到 Docker
今天的学习时间并不充裕,因此我没有强行推进到 AI 服务部署阶段
相反,我选择把精力集中在一个非常关键、但常被低估的步骤上:
从 Ubuntu 模板克隆出第一个“可长期使用”的 Docker 节点
在实际工程中,很多问题并不是出现在“高级组件”
而是出现在基础节点没有准备干净
这一篇只聚焦两件事:
-
从模板克隆一个规范的虚拟机节点
-
在该节点上完成 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
这条命令会:
-
从官方仓库拉取
hello-world镜像 -
启动一个最小容器
-
输出测试信息后自动退出
看到 Hello from Docker!,说明:
-
Docker 安装成功
-
网络正常
-
权限配置正确
九、当前节点状态总结
截至目前,该节点已具备:
-
✅ Ubuntu 24.04 稳定运行
-
✅ 静态 IP 配置完成
-
✅ 系统补丁更新完成
-
✅ Docker Engine 安装完成
-
✅ docker 用户组权限生效
-
✅ 容器可正常运行
节点角色正式确立为:
通用 Docker 节点
(后续将作为私有 AI 平台的基础计算节点)
学习记录声明
本文内容仅为本人在学习与实践过程中的阶段性记录,用于知识整理与经验分享,不构成任何形式的操作建议或生产指导
不同硬件环境、系统版本与配置差异较大,请读者根据自身情况独立判断并自行承担相关风险
如需在生产环境或关键系统中使用,请务必参考官方文档并进行充分验证
自言自语:由于对Ubuntu的陌生,很多东西都是现学现卖。熟悉各大厂商的基础环境看来还是有必要的。近期公司又上了统信系统,抽空了赶紧看看,以免遇到尴尬的事情
更多推荐



所有评论(0)