Ubuntu 24.04 系统管理与容器运行时实战精要

一、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,设置 addressesroutesnameservers,执行 netplan apply
设置root密码 sudo passwd
允许root SSH登录 修改 /etc/ssh/sshd_configPermitRootLogin yes,重启 ssh 服务
命令提示符 ~/.bashrc 添加自定义 PS1HISTTIMEFORMAT
时间同步 安装 chrony,设置时区 timedatectl set-timezone Asia/Shanghai

二、网络管理核心

1. Netplan(Ubuntu 默认网络配置工具)

  • 配置文件目录:/etc/netplan/*.yaml
  • 后端渲染器:NetworkManagersystemd-networkd(netplan 为前端)
  • 常用命令:netplan apply(应用配置)、netplan get(查看当前配置)

2. 名称解析(NSS 与 systemd-resolved)

  • /etc/nsswitch.confhosts: files dns 决定查询顺序:
    • files :优先读取 /etc/hosts(本地静态映射,无网络依赖)
    • dns :调用 systemd-resolved 进行网络 DNS 查询
  • systemd-resolved 解析顺序 (由高到低):
    1. 本地缓存
    2. 链路级 DNS(网卡专属,如 Netplan 配置的 DNS)
    3. 全局 DNS(/etc/systemd/resolved.confDNS=
    4. Fallback DNS(内置公共 DNS)
  • 查看解析状态:resolvectl statusresolvectl 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.ioregistry.k8s.io)创建子目录,内含 hosts.toml,指定加速器 endpoint。
  • 旧方式(仅 CRI 插件使用,ctr 不认)
    • config.toml[plugins."io.containerd.grpc.v1.cri".registry.mirrors] 中配置 endpoint(containerd 2.x 废弃)。
  • 关键点ctr 命令需加 --hosts-dir 参数才能使用加速;nerdctlcrictl 自动读取 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 imagescrictl pscrictl 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 的部署与使用,是构建云原生基础设施的核心技能。