docker与containerd镜像获取及导出导入的区别与注意事项(报错信息:ctr: content digest sha256........ac47: not found)

前言

解决报错的方法在文章末尾

docker与containerd的关系

Docker:
Docker是一个开源的容器化平台,用于开发、打包和运行应用程序。它提供了一整套工具和平台,使得容器的创建、部署和管理变得简单和高效。Docker引擎(Docker Engine)是Docker平台的核心部分,负责管理容器的生命周期,包括创建、运行、停止和删除容器等操作。在Docker Engine中,包含了很多组件,其中的一个核心组件就是containerd。

containerd:
containerd是一个开源的容器运行时(container runtime),它负责管理容器的生命周期,如启动、停止和删除容器。containerd最初是作为Docker引擎中的一个子项目,后来成为了一个独立的项目,并被广泛地用于各种容器平台和工具中。

关系说明:
Docker Engine包含了多个组件,其中之一就是containerd。

具体来说,Docker Engine使用containerd来执行容器相关的底层操作,如镜像管理、容器生命周期管理等。

Docker Engine提供了更高层次的抽象和功能,例如Docker CLI(命令行工具)和Docker Compose(用于多容器应用的编排工具)。这些工具使得开发者可以方便地进行容器的构建、编排和管理。

containerd则是Docker Engine中负责执行容器运行时职责的底层组件,它和Linux操作系统的内核(如cgroups和namespace)交互,实现了容器的隔离和资源管理。

镜像获取

docker的镜像获取
Docker使用Docker Hub作为默认的镜像仓库,其中包含了大量的公共镜像供开发者使用。
获取Docker镜像通常通过docker pull命令来完成
例如
获取nginx的最新镜像(如果没有标签则默认为latest)

docker pull nginx

containerd的镜像获取
containerd并没有默认的镜像仓库,它更多地关注容器运行时的底层操作。
如果需要获取镜像,一般通过ctr images pull命令来获取
需要注意的是: containerd获取镜像需要写上镜像仓库获取路径。
例如
获取Docker官方仓库中nginx的最新镜像

ctr images pull  docker.io/library/nginx:latest

注; latest不能省略

镜像导出

Docker的镜像导出
Docker的镜像导出一般通过docker save -o 命令来实现
例如
将本地的nginx:latest镜像打包成nginx.tar

docker save -o nginx.tar nginx:latest

containerd的镜像导出
containerd的镜像导出与docker基本一样,通过ctr images export 命令来实现
例如
将docker.io/library/nginx.latest这个镜像打包成nginx.tar

ctr images export nginx.tar docker.io/library/nginx:latest

镜像导入

docker的镜像导入
docker的镜像导入一般通过docker load -i 命令来实现
例如
将刚刚打包好的nginx.tar导入(记得提前删除本地镜像)

docker load -i nginx.tar

containerd的镜像导入
containerd的镜像导入一般通过 ctr images import 命令来实现

跟docker区别在于,containerd的镜像导入需要在后面加上 –platform linux/amd64 用于指定要构建或运行的镜像适用的平台架构,不然就会报错
报错信息如下

ctr: content digest sha256:64211d1abd8afd2ac0f49ce2c13a6f978b2f8d5b22fd9a1aee0bdf5575c2ac47: not found

正确举例
将刚刚打包好的nginx.tar导入(记得提前删除本地镜像)

ctr images import nginx.tar  --platform linux/amd64
  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
错误消息"Failed to start docker.service: Unit containerd.service not found."表示在启动docker服务时出现了问题,因为系统找不到containerd.service单元。这可能是由于未正确安装Containerd引起的。 要解决这个问题,你可以尝试以下步骤: 1. 确保已正确安装Docker CE。你可以使用命令`sudo yum install -y docker-ce docker-ce-cli containerd.io`来安装Docker CE。 2. 检查docker.service文件是否存在。你可以使用命令`ls /usr/lib/systemd/system/`来检查是否存在docker.service文件。如果docker.service文件不存在,你可以尝试重新安装Docker CE。 3. 检查containerd.service文件是否存在。你可以使用命令`ls /usr/lib/systemd/system/`来检查是否存在containerd.service文件。如果containerd.service文件不存在,你可以尝试重新安装Containerd。 4. 如果你已经正确安装了Docker CE和Containerd,但仍然出现这个错误,可能是由于其他配置问题导致的。你可以尝试重新配置DockerContainerd,或者查看系统日志以获取更多详细信息。 总结:要解决"Failed to start docker.service: Unit containerd.service not found."错误,你可以尝试重新安装Docker CE和Containerd,并确保相关的服务文件存在。如果问题仍然存在,你可以尝试重新配置DockerContainerd,或者查看系统日志以获取更多详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [linux安装docker异常:Failed to restart docker.service: Unit docker.service not found.](https://blog.csdn.net/qq_39387849/article/details/120769985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Docker安装Failed to start docker.service: Unit docker.service not found.](https://blog.csdn.net/weixin_53592309/article/details/124695944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值