• containerd客户端比较


    命令

    crictl images
    nerdctl images --namespace k8s.io
    
    • 1
    • 2

    1.nerdctl同一版本有无full的区别

    你可以从 nerdctl 的 release中下载最新的可执行文件,每一个版本都有两种可用的发行版:

    nerdctl--linux-amd64.tar.gz : 只包含 nerdctl。

    nerdctl-full--linux-amd64.tar.gz : 包含了 nerdctl 和相关依赖组件(containerd, runc, CNI, …)。

    如果你已经安装了 Containerd,只需要选择前一个发行版,否则就选择完整版。

    # tar -zxvf nerdctl-0.21.0-linux-arm64.tar.gz
    nerdctl
    containerd-rootless-setuptool.sh
    containerd-rootless.sh
    
    
    # tar -zxvf nerdctl-full-0.21.0-linux-arm64.tar.gz
    bin/
    bin/buildctl
    bin/buildg
    bin/buildg.sh
    bin/buildkitd
    bin/bypass4netns
    bin/bypass4netnsd
    bin/containerd
    bin/containerd-fuse-overlayfs-grpc
    bin/containerd-rootless-setuptool.sh
    bin/containerd-rootless.sh
    bin/containerd-shim-runc-v2
    bin/containerd-stargz-grpc
    bin/ctd-decoder
    bin/ctr
    bin/ctr-enc
    bin/ctr-remote
    bin/fuse-overlayfs
    bin/ipfs
    bin/nerdctl
    bin/rootlessctl
    bin/rootlesskit
    bin/runc
    bin/slirp4netns
    bin/tini
    lib/
    lib/systemd/
    lib/systemd/system/
    lib/systemd/system/buildkit.service
    lib/systemd/system/containerd.service
    lib/systemd/system/stargz-snapshotter.service
    libexec/
    libexec/cni/
    libexec/cni/bandwidth
    libexec/cni/bridge
    libexec/cni/dhcp
    libexec/cni/firewall
    libexec/cni/host-device
    libexec/cni/host-local
    libexec/cni/ipvlan
    libexec/cni/loopback
    libexec/cni/macvlan
    libexec/cni/portmap
    libexec/cni/ptp
    libexec/cni/sbr
    libexec/cni/static
    libexec/cni/tuning
    libexec/cni/vlan
    libexec/cni/vrf
    share/
    share/doc/
    share/doc/nerdctl/
    share/doc/nerdctl/README.md
    share/doc/nerdctl/docs/
    share/doc/nerdctl/docs/build.md
    share/doc/nerdctl/docs/builder-debug.md
    share/doc/nerdctl/docs/cni.md
    share/doc/nerdctl/docs/compose.md
    share/doc/nerdctl/docs/config.md
    share/doc/nerdctl/docs/cosign.md
    share/doc/nerdctl/docs/dir.md
    share/doc/nerdctl/docs/experimental.md
    share/doc/nerdctl/docs/faq.md
    share/doc/nerdctl/docs/freebsd.md
    share/doc/nerdctl/docs/gpu.md
    share/doc/nerdctl/docs/ipfs.md
    share/doc/nerdctl/docs/multi-platform.md
    share/doc/nerdctl/docs/ocicrypt.md
    share/doc/nerdctl/docs/registry.md
    share/doc/nerdctl/docs/rootless.md
    share/doc/nerdctl/docs/stargz.md
    share/doc/nerdctl-full/
    share/doc/nerdctl-full/README.md
    share/doc/nerdctl-full/SHA256SUMS
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    2. containerd不同客户端

    ctr

    这个是 containerd 官方的命令行工具,功能相对简单,但是拉取镜像和创建容器等基础功能都有。

    需要注意的是: ctr 支持选择 namespace,这个 namespace 不是 kubernetes 中的 namespace,而是 containerd 中的 namespace,不过这两种 namespace 在概念上是差不多的。一个 namespace 中镜像、容器等资源,在另一个 namespace 中是看不到的。

    默认情况下操作的 都是 default namespace 中的容器和镜像资源,kubernetes 集群中的容器、镜像等资源都放置在 k8s.io 这个 namespace 中。

    我们可以使用 -n namespace 来指定操作的是哪个 namespace,也可以使用 ctr namespace ls 查看有哪些 namespace。比如,加上 -n k8s.io 选项之后就可以查看 kubernetes 中的容器和镜像资源了。

    crictl

    crictl 是 kubernetes cri-tools 的一部分,是专门为 kubernetes 使用 containerd 而专门制作的,提供了 Pod、容器和镜像等资源的管理命令。

    需要注意的是:使用其他非 kubernetes 创建的容器、镜像,crictl 是无法看到和调试的,比如说 ctr run 在未指定 namespace 情况下运行起来的容器就无法使用 crictl 看到。当然 ctr 可以使用 -n k8s.io 指定操作的 namespace 为 k8s.io,从而可以看到/操作 kubernetes 集群中容器、镜像等资源。可以理解为:crictl 操作的时候指定了 containerd 的 namespace 为 k8s.io。

    nerdctl

    ctr 功能简单,而且对已经习惯使用 docker cli 的人来说,ctr 并不友好(比如无法像 docker cli 那样)。这个时候,nerdctl 就可以替代 ctr 了。nerdctl 是一个与 docker cli 风格兼容的 containerd 的 cli 工具,并且已经被作为子项目加入了 containerd 项目中。从 nerdctl 0.8 开始,nerdctl 直接兼容了 docker compose 的语法(不包含 swarm), 这很大程度上提高了直接将 containerd 作为本地开发、测试和单机容器部署使用的体验。

    需要注意的是:安装 nerdctl 之后,要想可以使用 nerdctl 还需要安装 CNI 相关工具和插件。containerd 不包含网络功能的实现,想要实现端口映射这样的容器网络能力,需要额外安装 CNI 相关工具和插件。

    另外 nerdctl 也可以使用 -n 指定使用的 namespace。

    参考

    容器 | Containerd 完整介绍

  • 相关阅读:
    刷爆力扣之较大分组的位置
    云小课|MRS基础原理之MapReduce介绍
    12.cuBLAS开发指南中文版--cuBLAS中的Level-1函数asum()和axpy()
    js常见算法及算法思想-排序
    SpringBoot 集成 IBMMQ 代码示例教程
    vue之使用IntersectionObserver API实现封装滚动动画组件
    在 linux 虚拟机上安装配置 hive
    硬核破解HashMap源码
    第二节:vuex与wabpack基本配置
    如何在Microsoft Exchange 2010中安装SSL证书
  • 原文地址:https://blog.csdn.net/weixin_42072280/article/details/125440662