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

nerdctl:与 Docker 兼容的 containerd CLI

nerdctl 是一个用于容器管理的命令行工具,它旨在提供与 Docker CLI 相似的用户体验,但却是为 containerd 这样的低级容器运行时设计的。containerd 是一个行业标准的容器运行时,被广泛用作 Kubernetes 等容器编排平台的一部分。nerdctl 通过简化 containerd 的使用来填补了直接操作 containerd 和使用更高级别抽象(如 Docker)之间的差距。

nerdctl 在 2021 年成为 containerd 的一个子项目,并于 2022 年发布了 v1.0。

主要特点
兼容性:nerdctl 的许多命令和选项与 Docker CLI 非常相似,使得熟悉 Docker 的用户可以快速上手。
轻量级:相比于 Docker,nerdctl 更加轻巧,因为它直接建立在 containerd 之上,没有额外的服务层。
灵活性:允许用户直接利用 containerd 的功能,比如使用不同的快照器、存储驱动等。
安全性:由于减少了组件间的交互,理论上可以减少攻击面,提高安全性。
社区支持:虽然相比 Docker 来说规模较小,但 nerdctl 拥有一个活跃且不断增长的社区。

兼容的 containerd 版本

此版本的 nerdctl 预计将与 containerd v1.6、v1.7 或 v2.0 一起使用。

关于二进制文件

  • 最小(nerdctl-2.0.0-linux-amd64.tar.gz):仅限 nerdctl
  • 完整(nerdctl-full-2.0.0-linux-amd64.tar.gz):包括 containerd、runc 和 CNI 等依赖项

 安装

wget https://github.com/containerd/nerdctl/releases/download/v2.0.1/nerdctl-full-2.0.1-linux-amd64.tar.gztar Cxzvvf /usr/local nerdctl-full-2.0.1-linux-amd64.tar.gz

下载慢的话

sudo nano /etc/hosts
#添加如下
192.30.255.112  github.com git
185.31.16.184 github.global.ssl.fastly.net
 

快速启动

Rootful

$ sudo systemctl enable --now containerd
$ sudo nerdctl run -d --name nginx -p 80:80 nginx:alpine

Rootless

wget https://github.com/containerd/nerdctl/raw/refs/heads/main/extras/rootless/containerd-rootless.shwget https://raw.githubusercontent.com/containerd/nerdctl/refs/heads/main/extras/rootless/containerd-rootless-setuptool.sh

 

$ containerd-rootless-setuptool.sh install
$ nerdctl run -d --name nginx -p 8080:80 nginx:alpine

强烈建议在无根模式下启用 cgroup v2,请参阅[Optional] cgroup v2 | Rootless Containers。

nerdctl 支持以 rootful(需要 root 权限)和 rootless(不需要 root 权限)两种模式启动容器。这两种模式在安全性、权限管理和使用场景上有所不同。下面是它们之间的一些关键区别:

Rootful 模式
权限:以 root 用户身份运行,这意味着它拥有系统的完全控制权。
性能:由于没有额外的权限限制,理论上可以提供更好的性能。
网络配置:能够直接修改系统级别的网络设置,如创建桥接网络接口等。
文件系统访问:可以访问整个文件系统,包括受限目录。
适用性:适用于需要完全控制底层资源的情况,比如开发环境或个人测试。
Rootless 模式
权限:以非特权用户身份运行,这提高了安全性,因为即使容器被攻破,攻击者也无法获得主机系统的 root 访问权限。
性能:可能因用户命名空间和其他安全措施而略有降低。
网络配置:受限于用户命名空间,不能直接修改系统级别的网络配置;通常使用用户命名空间内的网络堆栈。
文件系统访问:只能访问用户有权限访问的部分文件系统。
适用性:推荐用于生产环境以及任何重视安全性的场合。允许普通用户无需 sudo 或其他形式的提升权限即可运行容器。
启动方式
Rootful 模式
默认情况下,如果你以 root 用户身份执行 nerdctl 命令,那么它将以 rootful 模式运行。例如:

sudo nerdctl run -it --rm alpine sh


Rootless 模式
要启用 rootless 模式,你需要先进行一些配置。首先确保你的系统支持用户命名空间,并且已经安装了必要的依赖。然后,你可以按照以下步骤初始化 rootless 环境:

创建一个用户命名空间的配置文件:
 

nerdctl --rootless setup-rootless


使用该用户的 shell 登录或者切换到该用户,然后运行 nerdctl 命令:
 

newgrp docker # 如果你使用的是 Linux 发行版中预设的 docker 组
nerdctl run -it --rm alpine sh


注意:某些功能在 rootless 模式下可能不可用或行为不同,具体取决于操作系统和内核的支持情况。此外,rootless 模式的设置可能会根据不同的发行版和版本有所变化,因此建议查阅最新的官方文档获取准确信息。


http://www.mrgr.cn/news/79069.html

相关文章:

  • qt程序开发环境部署
  • 【ETCD】etcd中配置参数详解
  • 【MySQL 进阶之路】索引的使用
  • 数据结构之算法复杂度(超详解)
  • 书生浦语第四期--基础岛-第二关
  • 「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
  • 【算法】——前缀和(矩阵区域和详解,文末附)
  • Oracle篇—11gRAC安装在linux7之后集群init.ohasd进程启动不了报错CRS-0715问题
  • 音视频入门基础:MPEG2-TS专题(9)——FFmpeg源码中,解码TS Header的实现
  • 简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署
  • MySQL篇—通过官网下载linux系统下多种安装方式的MySQL社区版软件
  • Oracle篇—通过官网下载最新的数据库软件或者历史数据库软件
  • 我的创作纪念日—128天的坚持|分享|成长
  • 洛谷 P5705:数字反转 ← string 类型
  • 剖析一下自己的简历第二条
  • HCIA笔记6--路由基础与静态路由:浮动路由、缺省路由、迭代查找
  • 软件工程——期末复习(2)
  • 【SpringBoot】整合篇
  • 2024第六届金盾信安杯Web 详细题解
  • 软件工程——期末复习(1)
  • 网络命令配置
  • AD学习笔记·空白工程的创建
  • React 第九节 组件之间通讯之props 和回调函数
  • 重生之我在异世界学编程之C语言:深入指针篇(上)
  • 组合问题变式——选数(dfs)
  • 嵌入式硬件面试题【经验】总结----会不断添加更新