Containerd旨在轻松嵌入到更大的系统中。Docker使用containerd来运行容器。Kubernetes可以通过CRI使用containerd来管理单个节点上的容器。但较小的项目也可以从与containerd集成的便利中受益——例如,faasd使用containerd在独立服务器上运行成熟的功能即服务解决方案。但是,以编程方式使用containerd并不是唯一的选择。它也可以通过可用客户端之一从命令行使用。生成的容器UX可能不如docker客户端提供的那样全面和用户友好,但它仍然有用,例如,用于调试或学习目的。如何将ctr与containerd一起使用ctr是作为containerd项目的一部分提供的命令行客户端。如果你的机器上运行了containerd,那么ctr二进制文件很可能也在那里。ctr界面[显然]与DockerCLI不兼容,乍一看,它似乎对用户不太友好。显然,它的主要受众是测试守护进程的容器开发人员。然而,由于它最接近实际的containerdAPI,因此它是一种很好的探索方式——通过检查可用的命令,您可以大致了解containerd可以做什么和不能做什么。ctr也非常适合学习运行低级[OCI]容器的能力,因为ctr+containerd比docker+dockerd更接近实际容器。使用ctr处理容器镜像拉取镜像时,似乎需要完全限定的引用,因此您不能省略注册表或标签部分:$ctrimagespulldocker.io/library/nginx:1.21$ctrimagespulldocker.io/kennethreitz/httpbin:latest$ctrimagespulldocker.io/kennethreitz/httpbin:latest$ctrimagespullquay.io/quay/redis:latest要列出本地镜像,您可以使用:$ctrimagesls令人惊讶的是,containerd不提供开箱即用的图像构建支持。然而,containerd本身经常被更高级别的工具用来构建镜像。您可以导入使用dockerbuild或其他oci兼容软件构建的现有图像,而不是使用ctr来构建图像:$dockerbuild-tmy-app.$dockersave-omy-app.tarmy-app$ctrimagesimport我的-app.tar有ctr,你也可以挂载镜像$mkdir/tmp/httpbin$ctrimagesmountdocker.io/kennethreitz/httpbin:latest/tmp/httpbin$ls-l/tmp/httpbin/total80drwxr-xr-x2rootroot40962018年10月18日bindrwxr-xr-x2rootroot4096Apr242018bootdrwxr-xr-x4rootroot40962018年10月18日devdrwxr-xr-x1rootrootx40962018年10月24日etcdrwxr2rootroot4096Apr242018homedrwxr-xr-x3rootroot4096Oct242018httpbin...$ctrimagesunmount/tmp/httpbin要使用ctrl删除图像,请运行:$ctrimagesremovedocker.io/library/nginx:1.21使用ctr来处理容器有了本地镜像,你可以通过ctr运行
