nerdctl 工具(用于 containerd 但兼容 docker CLI 习惯)

news2025/8/7 23:09:08

简介

nerdctl用于 containerd 并且 兼容 docker cli 习惯的管理工具,主要适用于刚从 docker 转到 containerd 的用户,操作 containerd 的命令行工具 ctr 和 crictl 不怎么好用,所以就有了 nerdctl

要特别说明的是:nerdctl 操作的是 containerd 而非 docker,所以 nerdctl imagesdocker images 看到的内容不同,它只是用法保持了 docker cli 的习惯,实质上操作的是 containerd。

nerdctl 的使用和 docker 一致,与 docker 具有相同的体验,主要特征如下:

✅ 与 docker 的 UI/UX 相同
✅ 支持 docker-compose ( 例如:nerdctl compose up)
✅ [可选] 支持 rootless 模式,无 slirp 开销(bypass4netns)
✅ [可选] 支持延迟拉取(Stargz、Nydus、OverlayBD)
✅ [可选] 支持加密镜像(ocicrypt)
✅ [可选] 支持 P2P 镜像分发 (IPFS) (*1)
✅ [可选] 支持容器镜像签名和验证(cosign)
✅ [可选] 支持 containerd 的命名空间查看,nerdctl不仅可以管理Docker容器,也可以直接管理本地的的Kubernetes pod。
✅ [可选] 支持将Docker Image Manifest镜像转换为OCI镜像、estargz镜像。

nerdctl 是 containerd 的非核心子项目,更多资料详见官网。

安装

nerdctl 的安装分为 Minimal 精简安装和包含一些插件的 Full 完整安装。精简版只包含 nerdctl,完整版包含 nerdctl 和 CNI 插件等依赖(当然你也可以在精简安装的基础上再自己添加 CNI 等插件)。

  • Minimal (nerdctl-1.0.0-linux-amd64.tar.gz): nerdctl only
  • Full (nerdctl-full-1.0.0-linux-amd64.tar.gz): Includes dependencies such as containerd, runc, and CNI

下载安装

官方下载地址: https://github.com/containerd/nerdctl/releases,在 Asset 中选择下载精简或者完全安装包(本例精简安装)。

[root@test tmp]# wget https://github.com/containerd/nerdctl/releases/download/v1.0.0/nerdctl-1.0.0-linux-amd64.tar.gz
[root@test tmp]# tar -xzvf nerdctl-*-linux-amd64.tar.gz -C /usr/local/bin/

查看版本号验证安装

[root@test tmp] nerdctl --version
nerdctl version 1.0.0

命令

输入 nerdctl -h 查看帮助,列出所有命令说明,如下:

[root@test tmp]# nerdctl -h
nerdctl is a command line interface for containerd

Config file ($NERDCTL_TOML): /etc/nerdctl/nerdctl.toml

Usage: nerdctl [flags]

Management commands:
  apparmor   Manage AppArmor profiles
  builder    Manage builds
  container  Manage containers
  image      Manage images
  ipfs       Distributing images on IPFS
  namespace  Manage containerd namespaces
  network    Manage networks
  system     Manage containerd
  volume     Manage volumes

Commands:
  build       Build an image from a Dockerfile. Needs buildkitd to be running.
  commit      Create a new image from a container's changes
  completion  Generate the autocompletion script for the specified shell
  compose     Compose
  cp          Copy files/folders between a running container and the local filesystem.
  create      Create a new container. Optionally specify "ipfs://" or "ipns://" scheme to pull image from IPFS.
  events      Get real time events from the server
  exec        Run a command in a running container
  help        Help about any command
  history     Show the history of an image
  images      List images
  info        Display system-wide information
  inspect     Return low-level information on objects.
  internal    DO NOT EXECUTE MANUALLY
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a container registry
  logout      Log out from a container registry
  logs        Fetch the logs of a container. Currently, only containers created with `nerdctl run -d` are supported.
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image from a registry. Optionally specify "ipfs://" or "ipns://" scheme to pull image from IPFS.
  push        Push an image or a repository to a registry. Optionally specify "ipfs://" or "ipns://" scheme to push image to IPFS.
  rename      rename a container
  restart     Restart one or more running containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container. Optionally specify "ipfs://" or "ipns://" scheme to pull image from IPFS.
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more running containers
  stats       Display a live stream of container(s) resource usage statistics.
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update one or more running containers
  version     Show the nerdctl version information
  wait        Block until one or more containers stop, then print their exit codes.

Flags:
  -H, --H string                 Alias of --address (default "/run/containerd/containerd.sock")
  -a, --a string                 Alias of --address (default "/run/containerd/containerd.sock")
      --address string           containerd address, optionally with "unix://" prefix [$CONTAINERD_ADDRESS] (default "/run/containerd/containerd.sock")
      --cgroup-manager string    Cgroup manager to use ("cgroupfs"|"systemd") (default "cgroupfs")
      --cni-netconfpath string   cni config directory [$NETCONFPATH] (default "/etc/cni/net.d")
      --cni-path string          cni plugins binary directory [$CNI_PATH] (default "/opt/cni/bin")
      --data-root string         Root directory of persistent nerdctl state (managed by nerdctl, not by containerd) (default "/var/lib/nerdctl")
      --debug                    debug mode
      --debug-full               debug mode (with full output)
      --experimental             Control experimental: https://github.com/containerd/nerdctl/blob/master/docs/experimental.md [$NERDCTL_EXPERIMENTAL] (default true)
  -h, --help                     help for nerdctl
      --host string              Alias of --address (default "/run/containerd/containerd.sock")
      --hosts-dir strings        A directory that contains <HOST:PORT>/hosts.toml (containerd style) or <HOST:PORT>/{ca.cert, cert.pem, key.pem} (docker style) (default [/etc/containerd/certs.d,/etc/docker/certs.d])
      --insecure-registry        skips verifying HTTPS certs, and allows falling back to plain HTTP
  -n, --n string                 Alias of --namespace (default "default")
      --namespace string         containerd namespace, such as "moby" for Docker, "k8s.io" for Kubernetes [$CONTAINERD_NAMESPACE] (default "default")
      --snapshotter string       containerd snapshotter [$CONTAINERD_SNAPSHOTTER] (default "overlayfs")
      --storage-driver string    Alias of --snapshotter (default "overlayfs")
  -v, --version                  version for nerdctl

Run 'nerdctl COMMAND --help' for more information on a command.

可以通过配置文件 /etc/nerdctl/nerdctl.toml 对 nerdctl 进行更多配置。

手工添加插件(按需可选)

以添加 CNI 插件为例,先到 CNI 插件的官方地址下载插件文件。

CNI 需放在指定目录,默认目录为 /opt/cni/bin (这个默认目录在 nerdctl --help 帮助中 --cni-path 后面有说明),nerdctl 会默认查找该目录。

[root@test tmp]# wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
[root@test tmp]# mkdir -p /opt/cni/bin
[root@test tmp]# tar -xzvf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin
[root@test tmp]# ll /opt/cni/bin/
total 63728
-rwxr-xr-x 1 root root 3780654 Mar 10  2022 bandwidth
-rwxr-xr-x 1 root root 4221977 Mar 10  2022 bridge
-rwxr-xr-x 1 root root 9742834 Mar 10  2022 dhcp
-rwxr-xr-x 1 root root 4345726 Mar 10  2022 firewall
-rwxr-xr-x 1 root root 3811793 Mar 10  2022 host-device
-rwxr-xr-x 1 root root 3241605 Mar 10  2022 host-local
-rwxr-xr-x 1 root root 3922560 Mar 10  2022 ipvlan
-rwxr-xr-x 1 root root 3295519 Mar 10  2022 loopback
-rwxr-xr-x 1 root root 3959868 Mar 10  2022 macvlan
-rwxr-xr-x 1 root root 3679140 Mar 10  2022 portmap
-rwxr-xr-x 1 root root 4092460 Mar 10  2022 ptp
-rwxr-xr-x 1 root root 3484284 Mar 10  2022 sbr
-rwxr-xr-x 1 root root 2818627 Mar 10  2022 static
-rwxr-xr-x 1 root root 3379564 Mar 10  2022 tuning
-rwxr-xr-x 1 root root 3920827 Mar 10  2022 vlan
-rwxr-xr-x 1 root root 3523475 Mar 10  2022 vrf

测试一下

启动一个 nginx 容器,名称为 nginx-test,将宿主机端口 10800 和容器的 80 端口映射

# 启动容器
[root@test tmp]# nerdctl run -d --name nginx-test -p 10800:80 nginx:1.22.1
docker.io/library/nginx:1.22.1:                                                   resolved       |++++++++++++++++++++++++++++++++++++++| 
index-sha256:809f0924101d9c07322d69ab0705e1a0d85b1d0f287e320ae19b0826979c56e9:    done           |++++++++++++++++++++++++++++++++++++++| 
manifest-sha256:fa7e5dee56197a5cbb5b346b3c2c41d91ffa57eb1efcabb5ff09483c87270ccb: done           |++++++++++++++++++++++++++++++++++++++| 
config-sha256:404359394820dad4c8f210f935939f5890a02ccf82302e1a1068bd0723149736:   done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:50b97857b95c8b58fbaa89e528105534fc73606f71e0c4866566b2d6dda2f907:    done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:f3c8f37c59f021e336eb6064cb5ef086a44630c8a1cd0728d9b56d584a89fbaf:    done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:a603fa5e3b4127f210503aaa6189abf6286ee5a73deeaab460f8f33ebc6b64e2:    done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:0edfe97a837abe97ce52b42da5fad5df39a3daccc47b5e4d3bc294375b481a0a:    done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:0bf5e07cb0afcd466f3b9f207c8cbaf77a1d483779f37d0189115282e4374dc1:    done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:f95a257c65b62fcb59f62f64ab3212e47226f460e9cbfa8c9187f2ab1923ca8c:    done           |++++++++++++++++++++++++++++++++++++++| 
elapsed: 20.9s                                                                    total:  30.0 M (1.4 MiB/s)                                       
d550e2afd0c1ac924a3047a559c38697167b6b2317a19b3336e43285c6e558dc

# 查看运行中的容器
[root@test tmp]# nerdctl ps
CONTAINER ID    IMAGE                             COMMAND                   CREATED           STATUS    PORTS                    NAMES
d550e2afd0c1    docker.io/library/nginx:1.22.1    "/docker-entrypoint.…"    32 seconds ago    Up        0.0.0.0:10080->80/tcp    nginx-test

# 根据容器名称删除容器
[root@test tmp]# nerdctl rm -f nginx-test
nginx-test

通过浏览器可以正常访问:

在这里插入图片描述


(END)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

还在每天玩单调的控制台窗口?赶紧进来!!!用EasyX画出自己的优美窗口(万字教程,一文入门)

EasyX图形库教程 本文的封面第三章照片来自博客&#xff1a;爱心气球 文章目录EasyX图形库教程前言1.EasyX是什么&#xff1f;2.EasyX的安装开始教程1.基本概念1.1颜色1.2坐标2.创建窗口 -- 基本框架3.颜色设置3.1背景颜色3.2设置线条颜色3.3设置文本颜色3.4设置填充颜色4样式…

计算机毕业设计之java+ssm家校通网站

项目介绍 随着网络技术的飞速发展&#xff0c;网络已渗透到全人类的各个方面&#xff0c;深刻影响着我们的生活和工作方式。家校通网站给教育带来了更广阔的发展空间。家校通网站有对部分类似网站进行分析&#xff0c;找到规律和方法&#xff0c;吸取其特点&#xff0c;构思自…

Win11关闭Superfetch服务的操作方法分享

Win11关闭Superfetch服务的操作方法分享。有用户发现自己电脑在开机的时候&#xff0c;都会出现Superfetch服务的相关程序进程。为了优化自己的运行内存&#xff0c;想要将这个功能给进行关闭。那么电脑的Superfetch服务怎么去关闭&#xff0c;一起来看看关闭的方法吧。 操作方…

天宇优配|北上广深角逐“国字号”数据交易所 行业爆点

今日&#xff0c;上海数据生意地点揭牌一周年之际&#xff0c;将发动数据生意节&#xff0c;并将探究树立数交所国际板。10天前&#xff0c;深圳数据生意所正式揭牌。至此&#xff0c;北上广深四个一线城市均已树立数据生意所。 数据作为新型生产要素&#xff0c;正成为各地争相…

想过为什么家里的IP是192.168开头的吗?

为什么我们家里的IP都是192.168开头的&#xff1f; 是的&#xff0c;就是我&#xff0c;先不做什么技术博主了&#xff0c;做个老情感博主&#xff08;手动狗头&#xff09;。 来讲个故事。 资深老舔狗小王今天很兴奋&#xff0c;说什么也要请大家喝奶茶。 因为他说他感觉要跟…

基于ModelCoder的汽车悬挂系统建模

悬挂系统是汽车的车架与车桥或车轮之间的一切传力连接装置的总称&#xff0c;其功能是传递作用在车轮和车架之间的力和力矩&#xff0c;并且缓冲由不平路面传给车架或车身的冲击力&#xff0c;衰减由此引起的振动&#xff0c;以保证汽车平顺行驶。 悬挂系统主要功能为支持车身…

事业编招聘:国家无线电监测中心2022年公开招聘

一、单位简介 国家无线电监测中心检测中心是国家无线电监测中心/国家无线电频谱管理中心下属的独立事业法人机构&#xff0c;主要从事无线电技术领域的检测认证、产品研发、科研标准、行业咨询和政府支撑等工作&#xff0c;在北京、河北永清、广东深圳、上海、湖南长沙、四川成…

如何在你的 wordpress 网站中添加搜索框

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且…

计算机毕业设计之java+ssm理发店会员管理系统

项目介绍 本理发店会员管理系统主要包括系统用户管理模块、商品项目模块、会员消费管理、会员信息管理、会员充值管理、登录模块、和退出模块等多个模块。本系统基于SSM(SpringSpringMVCMyBatis)框架,适用于毕业设计&#xff0c;采用javaweb,基于B/S模式,Myeclipse或者eclipse…

HDI激光钻孔和常见问题

随着电子产品不断升级&#xff0c;对pcb工艺也会越来越高。且由于结构空间原因&#xff0c;对pcb的体积也会越来越小。因此pcb的工艺会越来越复杂。 一&#xff0c;什么样的孔才会用激光设备&#xff1f; 很多工程师看到工艺能力的时候&#xff0c;上面写的最小孔0.1mm&#x…

【计算机毕业设计】35.流浪动物救助及领养管理系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;流浪动物救助及领养管理也不例外&#xff0c;但目前国内的有些宠物店仍然都使用人工管理&#xff0c;宠物店的规模越来越大&…

数据结构-期末复习重要知识点总结

目录 第一章-绪论 第二章-线性表 3.顺序表表示 4.顺序表基本运算 5.链表 6.链表的基本运算 7.循环链表 8.双链表 9.静态链表 10.一元多项式表示及相加 第三章-限定性线性表&#xff08;栈与队列&#xff09; 1.顺序栈 2.链栈 3.链队列 4.循环队列 5.习题 第四章…

JavaScript中常用对象方法总结

Object.create()创建对象 该方法用于创建一个新对象&#xff0c;新建对象具有指定原型和若干个指定属性&#xff1b; Object.create(proto) Object.create(proto, propertiesObject) 该方法接收两个参数&#xff0c;第一个参数是新建对象的指定原型对象&#xff0c;第二个参数…

校企合作共建体系:亚马逊云科技的云计算人才培养之道

1984年的一天&#xff0c;有一位老人在参观两名青少年展示计算机操作时&#xff0c;说出了一句被人们传颂至今的名言&#xff1a;“计算机的普及要从娃娃抓起。”数十年后的今天&#xff0c;伴随着云计算在全球的风起云涌&#xff0c;中国对云计算人才的需求也在与日俱增。面对…

RabbitMQ系列【15】AmqpAdmin使用详解

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言1、查询队列信息2、声明、删除交换机3、声明、删除队列4、声明、删除交换机/队列绑定关系5、初始化前言 在之前&#xff0c;我们都是通过注入Bean的方式去声明交换机、队列&#xff0c;应用…

前后端分离架构好用吗?

在数据化发展趋势越来越分明的当下&#xff0c;前后端分离架构可以让前、后端的工程师们做好各自分内的事&#xff0c;专注于各自领域&#xff0c;从而提升整体办公效率和推进数字化进程。说到这&#xff0c;有不少朋友会问我们&#xff0c;前后端分离架构好用吗&#xff1f;要…

WPF的数据绑定

文章目录前言一、WPF数据绑定的概要1. 数据绑定涉及到两个方面&#xff1a;2.对于绑定源&#xff0c;在WPF可以是以下四种&#xff1a;二、 绑定的模式1.根据数据流的方向&#xff0c;WPF中的数据绑定分为以下四种&#xff1a;三.绑定目标值影响绑定源值条件1. UpdateSourceTri…

小程序开发---01小程序初识

本教程主要讲如何开发一个微信小程序&#xff0c;从小程序的注册&#xff0c;开发环境的搭建&#xff0c;基础语法&#xff0c;路由导航&#xff0c;数据请求&#xff0c;分包&#xff0c;组件化等方面详情的接受了小程序开发的一些必备基础知识。 本系列文章使用是的B站黑马教…

OpenGL原理与实践——核心模式(四):摄像机变换理论与应用

目录 变换是什么&#xff1f;对于OpenGL的摄像机又意味着什么&#xff1f; MVP变换 投影变换 正交投影变换 透视投影变换 摄像机/投影矩阵的应用 绘制单个立方体——源码及渲染结果 绘制多个立方体——源码及渲染结果 构建摄像机类——实现控制摄像机移动 摄像机坐标…

全屋智能--智慧家庭新风向

全屋智能是指综合物联网、云计算和人工智能等技术&#xff0c;对该空间场所内的家居设备进行系统化集中管理&#xff0c;并赋予其人与场景交互能力&#xff0c;成为用户看不见的生活管家。全屋智能的核心价值在于自主感知、自主决策、自主控制、自主反馈的生命力。 全屋智能目前…