当前位置: 首页 > news >正文

containerd-rootless安装实战:从零到Hello World的完整指南

1. 为什么需要containerd-rootless?

最近在帮朋友部署一个测试环境时,遇到了一个经典问题:如何在普通用户权限下运行容器?传统方案要么需要sudo权限,要么就得把用户加入docker组,这两种方式都存在安全隐患。这时候containerd-rootless模式就成了我的救命稻草。

containerd作为行业标准的容器运行时,其rootless模式允许普通用户无需root权限就能创建和管理容器。这种设计带来了三大核心优势:

  1. 安全性提升:容器进程以普通用户身份运行,即使容器被攻破,攻击者也无法获取主机root权限
  2. 权限隔离:不同用户之间的容器环境完全隔离,避免相互干扰
  3. 合规性:满足企业安全规范中对最小权限原则的要求

实测下来,rootless模式的性能损耗仅在5%左右,对于大多数开发测试场景完全可以接受。下面我就以CentOS 7为例,带你完整走通从安装到运行Hello World的全流程。

2. 环境准备与依赖安装

2.1 基础环境检查

首先确认你的CentOS 7系统版本:

cat /etc/redhat-release

建议使用7.7及以上版本,我测试用的是7.7.1908。内核版本也很重要:

uname -r

需要3.10.0-1062或更高版本,否则可能会遇到内核模块不兼容的问题。

2.2 创建专用用户

为避免污染root环境,我们新建一个测试用户:

sudo useradd -m -s /bin/bash containerd-user sudo passwd containerd-user # 设置密码

这里有个小技巧:使用-m参数会自动创建用户家目录,省去后续权限配置的麻烦。

2.3 安装必要依赖

切换到新用户前,先用root安装基础依赖:

sudo yum install -y iproute fuse-overlayfs slirp4netns

这几个包的作用分别是:

  • iproute:容器网络配置工具
  • fuse-overlayfs:用户空间overlay文件系统
  • slirp4netns:用户模式网络栈

特别提醒:如果遇到fuse-overlayfs包找不到的情况,可能需要先启用EPEL仓库:

sudo yum install -y epel-release

3. containerd-rootless安装实战

3.1 获取安装包

切换到普通用户:

su - containerd-user

下载最新版nerdctl-full套件(包含containerd):

wget https://github.com/containerd/nerdctl/releases/download/v1.6.2/nerdctl-full-1.6.2-linux-amd64.tar.gz tar -xzf nerdctl-full-1.6.2-linux-amd64.tar.gz

解压后会得到包含bin和lib的目录结构,建议放在用户主目录下。

3.2 配置环境变量

临时生效的配置方式:

export PATH=$PATH:~/containerd/bin export CONTAINERD_ROOTLESS_ROOT=~/containerd

建议将这两行加入~/.bashrc实现永久生效:

echo 'export PATH=$PATH:~/containerd/bin' >> ~/.bashrc echo 'export CONTAINERD_ROOTLESS_ROOT=~/containerd' >> ~/.bashrc source ~/.bashrc

3.3 运行安装脚本

关键的一步来了:

containerd-rootless-setuptool.sh install

这个脚本会自动:

  1. 生成containerd配置文件
  2. 创建systemd用户服务单元
  3. 设置cgroup v2委托

常见报错处理:

  • 如果提示systemctl --user不可用,需要先执行:
    sudo loginctl enable-linger $(whoami)
  • 遇到cgroup相关错误时,可以尝试:
    sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1" sudo reboot

4. 网络配置与权限调优

4.1 CNI网络插件配置

默认情况下containerd会查找/opt/cni/bin下的插件,但我们没有写入权限。解决方案是自定义CNI路径:

mkdir -p ~/containerd/cni/bin wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz tar xvf cni-plugins-linux-amd64-v1.1.1.tgz -C ~/containerd/cni/bin

然后设置环境变量:

export CNI_PATH=~/containerd/cni/bin

4.2 解决挂载权限问题

运行容器时可能会遇到:

FATA[0000] failed to mount /run/user/1000/containerd-mount2759511587: operation not permitted

这是因为默认的overlayfs需要root权限。改用fuse-overlayfs:

nerdctl run --snapshotter=fuse-overlayfs hello-world

如果想永久生效,可以修改~/.config/containerd/config.toml

[plugins."io.containerd.snapshotter.v1"] snapshotter = "fuse-overlayfs"

5. 验证与Hello World

5.1 启动containerd服务

先确保服务正常运行:

systemctl --user start containerd systemctl --user enable containerd

检查状态:

systemctl --user status containerd

正常应该看到"active (running)"状态。

5.2 运行测试容器

终于到了见证奇迹的时刻:

nerdctl run --rm hello-world

如果看到经典的Hello World输出,恭喜你!如果失败,可以尝试以下调试命令:

nerdctl info # 查看运行时信息 nerdctl images ls # 检查镜像列表 journalctl --user -u containerd -f # 查看实时日志

5.3 日常使用技巧

  1. 镜像加速配置:
    nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
  2. 查看容器资源占用:
    nerdctl stats
  3. 进入运行中容器:
    nerdctl exec -it [容器ID] sh

整个安装过程最耗时的是解决各种权限问题,特别是当企业环境有严格的权限管控时。我在某次客户现场部署时,花了3小时才搞定所有目录权限和SELinux配置。建议提前准备好以下信息:

  • 用户家目录的剩余空间(至少10GB)
  • 防火墙规则(需要放行容器通信端口)
  • 代理服务器配置(如有)
http://www.jsqmd.com/news/565965/

相关文章:

  • 数字逻辑电路实战解析:从组合电路到触发器的设计与应用
  • Qwen3-ASR-0.6B与Java集成:企业级语音处理方案
  • 揭秘低查重AI教材编写秘诀,AI教材写作工具大揭秘!
  • 颠覆式LaTeX识别工具:MixTeX实现零门槛科研文档处理
  • 2026年3月五大线上拆盲盒/抽盲盒/开盲盒/在线拆盒/欧气盲盒平台综合评估与选择指南 - 2026年企业推荐榜
  • LFM2.5-1.2B-Thinking-GGUF实战教程:用curl测试top_p=0.9稳定性
  • Qwen3.5-2B开源镜像教程:基于Docker Compose的一键部署与多实例管理方案
  • 树莓派实战:基于PCF8591与光敏传感器的智能光照监测系统
  • 2026年管材管件/卫浴五金/家装建材门店推荐:天元五金全品类供应,覆盖厨卫、管道五金全场景 - 品牌推荐官
  • Hunyuan-MT-7B开源镜像免配置部署:像素语言传送门一键启动教程(含GPU适配)
  • OpenSceneGraph:高性能3D图形引擎的现代化解决方案
  • OpCore-Simplify:黑苹果配置自动化解决方案——从技术困境到智能配置的革新之路
  • AI赋能OpenSpec开发:让快马智能评审规范并生成企业级最佳实践代码
  • 苹果50周年,国行AI姗姗来迟能否扳回一局?
  • Qt实战:用QCustomPlot+QThread搞定工业级实时数据大屏(附缓存池模板)
  • 前端工具链:别让你的开发环境变成一团糟
  • 接口测试--Day2
  • 2026聚乙二醇300品牌深度评测,优选品牌推荐,市面上专业的聚乙二醇厂家优质企业盘点及核心优势详细解读 - 品牌推荐师
  • 保姆级教程:用闲置极空间NAS自建加密语音频道(Mumble+Docker全流程)
  • Steam成就管理终极指南:如何快速解锁和修改Steam游戏成就
  • Qwen2.5模型精度测试完全手册:从ATB推理到MindIE服务部署
  • 文献格式规范化全攻略:从问题诊断到自动化解决方案
  • FC游戏Hack实战:从零开始修改《忍者神龟3》无限生命
  • 2026年3月全球幼猫猫粮品牌推荐:五大口碑产品评测对比知名 - 品牌推荐
  • 【CKA】从考场惊魂到顺利通关:我的第二次CKA实战复盘与避坑指南
  • 2026年跳槽必看!AI大模型风口已至,高薪转型指南_抓紧时间学AI大模型抓住金三银四机会
  • 解锁创作自由:SRWE让每个创作者掌控窗口分辨率
  • 沉浸式翻译扩展故障排除与优化指南
  • 充电站加盟品牌哪家好?2026年3月推荐评测口碑对比知名五家盘点 - 品牌推荐
  • 2026年石材加工厂家推荐:福建省南安市鸿达建材有限公司,花岗岩全品类覆盖 - 品牌推荐官