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
相关文章
|
1月前
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
279 3
|
1月前
|
Docker 容器
docker的导入本地镜像和导出本地镜像
本文介绍了如何使用Docker对本地镜像进行导入和导出操作,包括从本地导入`nginx.tar`镜像以及将`open-webui`镜像导出并压缩为`open-webui.tar.gz`。
91 1
|
28天前
|
JavaScript 前端开发 Docker
拿下奇怪的前端报错(二):nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
本文介绍了在多版本Node.js环境中使用nvm进行版本管理和遇到的问题,以及通过Docker化构建流程来解决兼容性问题的方法。文中详细描述了构建Docker镜像、启动临时容器复制构建产物的具体步骤,有效解决了不同项目对Node.js版本的不同需求。
|
29天前
|
网络虚拟化 Docker 容器
docker Desktop报错 error pulling image configuration 处理
docker Desktop报错 error pulling image configuration 处理
33 0
|
1月前
|
Docker 容器
docker可以通过镜像id导出镜像吗?
docker可以通过镜像id导出镜像吗?
34 0
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
18 2
|
10天前
|
关系型数据库 MySQL API
|
6天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
2天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
10天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
203 7
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库