一、Ubuntu 24.04 安装与初始化
1. 安装要点
- 断网安装:防止安装过程中自动更新软件包,待系统就绪后再配置网络。
- 镜像源 :安装时选用国内镜像(阿里云
mirrors.aliyun.com 或华为云 mirrors.huaweicloud.com)加速软件包下载。
- 安装完成后重启,若遇
Failed unmounting /dev/cdrom 提示直接回车忽略。
2. 安装后基础配置
| 配置项 |
命令/操作 |
| 安装常用工具 |
apt install -y vim bash-completion |
| 静态IP配置 |
编辑 /etc/netplan/00-installer-config.yaml,设置 addresses、routes、nameservers,执行 netplan apply |
| 设置root密码 |
sudo passwd |
| 允许root SSH登录 |
修改 /etc/ssh/sshd_config 中 PermitRootLogin yes,重启 ssh 服务 |
| 命令提示符 |
在 ~/.bashrc 添加自定义 PS1 和 HISTTIMEFORMAT |
| 时间同步 |
安装 chrony,设置时区 timedatectl set-timezone Asia/Shanghai |
二、网络管理核心
1. Netplan(Ubuntu 默认网络配置工具)
- 配置文件目录:
/etc/netplan/*.yaml
- 后端渲染器:
NetworkManager 或 systemd-networkd(netplan 为前端)
- 常用命令:
netplan apply(应用配置)、netplan get(查看当前配置)
2. 名称解析(NSS 与 systemd-resolved)
/etc/nsswitch.conf 中 hosts: files dns 决定查询顺序:
- files :优先读取
/etc/hosts(本地静态映射,无网络依赖)
- dns :调用
systemd-resolved 进行网络 DNS 查询
- systemd-resolved 解析顺序 (由高到低):
- 本地缓存
- 链路级 DNS(网卡专属,如 Netplan 配置的 DNS)
- 全局 DNS(
/etc/systemd/resolved.conf 中 DNS=)
- Fallback DNS(内置公共 DNS)
- 查看解析状态:
resolvectl status、resolvectl query <域名>
三、软件包管理
1. dpkg 体系
| 工具 |
用途 |
dpkg-query |
查询已安装包信息(-l 列表,-s 状态,-L 文件清单,-S 文件归属) |
dpkg-deb |
分析 .deb 文件(-c 内容,-I 元数据,-e 提取 DEBIAN 目录,-x 提取安装文件) |
dpkg |
安装/卸载/验证(-i 安装,-r 卸载,-V 验证),无法自动处理依赖 |
2. apt(推荐高级包管理工具)
| 命令 |
功能 |
对应旧命令 |
apt update |
更新软件仓库索引 |
apt-get update |
apt install |
安装包 |
apt-get install |
apt remove / purge |
卸载 / 卸载并清除配置 |
apt-get remove/purge |
apt upgrade |
升级所有包 |
apt-get upgrade |
apt autoremove |
删除不再需要的依赖 |
apt-get autoremove |
apt search / show |
搜索 / 查看包详情 |
apt-cache search/show |
apt list |
列出包(支持 --installed、--upgradable) |
新增 |
apt edit-sources |
编辑源列表 |
新增 |
- 软件源格式 :
deb 镜像URL 版本代号 分类(main/restricted/universe/multiverse)
- 源配置文件:
/etc/apt/sources.list 及 /etc/apt/sources.list.d/*.list
3. apt-file(查找包内文件)
apt-file update 更新缓存
apt-file list <包名> 列出包中文件
apt-file search <文件模式> 查找提供该文件的包
四、Containerd 容器运行时
1. 概述
- Containerd 是 CNCF 毕业的工业级容器运行时,Kubernetes 1.24+ 默认使用(移除 dockershim)。
- 架构分层:客户端层(kubelet/nerdctl/crictl)→ gRPC API → 服务层 → 核心组件(镜像、容器、快照、CRI 插件)→ 底层(runc/CNI/CSI)
2. 安装与配置(Ubuntu 24.04)
- 版本选择 :
- Ubuntu 官方仓库
containerd(1.6.x/2.2.x):稳定,与系统捆绑
- Docker CE 仓库
containerd.io(1.7.x/2.x):迭代快,与 K8s 新版本兼容性好
- 安装示例(1.7.12):
apt install -y containerd=1.7.12-0ubuntu4
- 生成默认配置:
containerd config default > /etc/containerd/config.toml
3. 镜像加速配置(重点)
- 新方式(推荐,适用于 containerd 1.6+ 及 2.x) :
- 设置
config_path = "/etc/containerd/certs.d"
- 为每个镜像仓库(如
docker.io、registry.k8s.io)创建子目录,内含 hosts.toml,指定加速器 endpoint。
- 旧方式(仅 CRI 插件使用,ctr 不认) :
- 在
config.toml 的 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 中配置 endpoint(containerd 2.x 废弃)。
- 关键点 :
ctr 命令需加 --hosts-dir 参数才能使用加速;nerdctl 和 crictl 自动读取 certs.d。
五、Containerd 客户端工具对比
| 工具 |
适用场景 |
特点 |
ctr |
底层调试 |
containerd 原生 CLI,命令不友好,不读取 CRI 配置 |
nerdctl |
日常管理推荐 |
兼容 Docker 命令语法,支持 certs.d 加速,功能全面(镜像/容器/网络/卷) |
crictl |
K8s 节点调试 |
遵循 CRI 接口,用于检查 kubelet 管理的容器和 Pod,不用于日常创建 |
1. nerdctl 常用命令(类 Docker)
| 操作 |
命令 |
| 拉取镜像 |
nerdctl pull busybox |
| 查看镜像 |
nerdctl images |
| 运行容器 |
nerdctl run -d --name nginx nginx |
| 查看容器 |
nerdctl ps -a |
| 进入容器 |
nerdctl exec -it nginx bash |
| 停止/启动 |
nerdctl stop/start nginx |
| 查看网络 |
nerdctl network ls |
| 管理卷 |
nerdctl volume ls |
2. crictl 配置与使用
- 配置 endpoint:
crictl config --set runtime-endpoint=unix:///var/run/containerd/containerd.sock
- 常用命令:
crictl images、crictl ps、crictl pods(查看 Pod 沙箱)、crictl inspect 等。
六、网络与存储补充
- 容器网络 :nerdctl 默认创建
bridge 网络(对应主机 nerdctl0 网桥),分配 10.4.0.0/24 子网。
- 数据持久化 :
- 绑定挂载:
-v /host/path:/container/path
- 卷管理:
nerdctl volume create 创建命名卷,容器内挂载。
总结:掌握 Ubuntu 系统初始化、Netplan 网络配置、apt/dpkg 包管理,以及 containerd + nerdctl 的部署与使用,是构建云原生基础设施的核心技能。