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,设置 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 查询
- files:优先读取
- 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 新版本兼容性好
- Ubuntu 官方仓库
- 安装示例(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 的部署与使用,是构建云原生基础设施的核心技能。
更多推荐
所有评论(0)