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

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

@[TOC]

前言

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

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
相关文章
|
2天前
|
网络协议 应用服务中间件 Linux
docker常见报错提示WARNING: IPv4 forwarding is disabled. Networking will not work.或/usr/bin/docker-current:
### 故障与解决方法概览 1. **故障现象**:运行 `docker run -d -P httpd:centos` 时提示“IPv4转发已禁用,网络将无法工作”。 - **解决方法**:通过编辑 `/etc/sysctl.conf` 设置 `net.ipv4.ip_forward=1` 并执行 `sysctl -p` 启用路由转发,然后重启 Docker 服务。
|
12天前
|
Shell 数据安全/隐私保护 Docker
9-2|docker rm报错
9-2|docker rm报错
|
2月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
96 5
|
2月前
|
存储 Ubuntu 应用服务中间件
在Docker中,怎么快速查看本地的镜像和容器?
在Docker中,怎么快速查看本地的镜像和容器?
|
3月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
287 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
3月前
|
Shell 应用服务中间件 nginx
docker 服务,镜像,容器命令总结
docker 服务,镜像,容器命令总结
141 4
|
3月前
|
Java Scala 流计算
实时计算 Flink版产品使用问题之Docker镜像中的Java路径和容器内的Java路径不一致,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
运维 Ubuntu Docker
Docker镜像和容器使用
【7月更文挑战第2天】Docker 概要:Docker 镜像是只读模板,包含运行应用的环境和代码,像蓝图一样。构建镜像可通过基于现有镜像(如 Ubuntu)安装软件后提交,或使用 Dockerfile 定义构建过程。Docker 容器是镜像的运行时实例,`docker run` 命令可创建并运行容器。常用容器操作包括启动/停止、状态检查和交互式进入。通过端口映射,容器服务可从主机访问,促进应用部署和管理的便捷性。
120 3
|
5月前
|
存储 安全 开发者
如何删除 Docker 镜像、容器和卷?
【5月更文挑战第11天】
557 2
如何删除 Docker 镜像、容器和卷?
|
4月前
|
运维 Serverless 文件存储
函数计算产品使用问题之在利用Docker镜像部署应用时,容器内的应用如何能访问函数计算配置的NAS挂载
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。