首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将容器映像移动到不同的命名空间?

如何将容器映像移动到不同的命名空间?
EN

Stack Overflow用户
提问于 2022-11-28 02:51:15
回答 1查看 65关注 0票数 1

我目前正在设置一个带有windows节点的Kubernetes集群。我意外地在默认名称空间中创建了一个本地图像。

ctr image ls所示,我的图像位于默认命名空间中。

代码语言:javascript
复制
REF                                 TYPE                                                   DIGEST       SIZE      PLATFORMS     LABELS
docker.io/library/myimage:latest   application/vnd.docker.distribution.manifest.v2+json   sha256:XXX   6.3 GiB   windows/amd64 -

因此,Kubernetes 在创建pod (ErrImageNeverPullimagePullPolicy设置为Never)时无法找到图像。原因是,图像不在正确的名称空间k8s.io

命令ctr --namespace k8s.io image ls显示基本的Kubernetes图像:

代码语言:javascript
复制
REF                                                  TYPE                                                       DIGEST       SIZE       PLATFORMS                               LABELS
mcr.microsoft.com/oss/kubernetes/pause:3.6           application/vnd.docker.distribution.manifest.list.v2+json  sha256:XXX   3.9 KiB    linux/amd64,linux/arm64,windows/amd64   io.cri-containerd.image=managed
mcr.microsoft.com/oss/kubernetes/pause@sha256:DIGEST application/vnd.docker.distribution.manifest.list.v2+json  sha256:XXX   3.9 KiB    linux/amd64,linux/arm64,windows/amd64   io.cri-containerd.image=managed
...

我尝试过的最直接的方法是导出图像,删除图像,并使用不同的命名空间导入图像。(正如在在cri-tools项目中的Github注释上提到的)

代码语言:javascript
复制
ctr --namespace k8s.io image import --base-name foo/myimage container_import.tar

它起作用了。但是我想知道,是否有比重新导入图像更短(更省时)的方法。(可能通过运行一个简单的命令或更改一个文本文件。)

编辑:来澄清我的问题:我有一个节点,其容器存储在名称空间"default“中。我希望同一个容器存储在同一个节点上的名称空间"k8s.io“中。我还能做什么,而不是运行以下两个(缓慢)命令?

代码语言:javascript
复制
ctr -n default image export my-image.tar my-image
ctr -n k8s.io image import my-image.tar

我认为命名空间重命名的方法更快,因为它只是编辑一些元数据。

EN

回答 1

Stack Overflow用户

发布于 2022-11-28 12:38:06

正如@P所建议的那样,podman savepodman load命令允许您在多个服务器和系统之间共享图像,而这些映像在本地或远程都不可用。

您可以使用波德曼来管理图像和容器。

podman命令将图像保存到存档中,使其可以加载到另一台服务器上。

例如,要在名为servera的主机上保存一组图像:

代码语言:javascript
复制
[servera]$ podman save --output images.tar \
docker.io/library/redis \
docker.io/library/mysql \
registry.access.redhat.com/ubi8/ubi \
registry.access.redhat.com/ubi8/ubi:8.5-226.1645809065 \
quay.io/centos7/mysql-80-centos7 docker.io/library/nginx

完成后,您可以将文件images.tar用于ser谓词,并使用podman加载它:

代码语言:javascript
复制
[serverb]$ podman load --input images.tar

新发布的波德曼4.0包含新的podman image scp命令,这是一个有用的命令,可以帮助您管理和传输容器映像。

使用podman的podman图像scp,您可以在本地和远程机器之间传输图像,而无需图像注册。

Podman利用它的SSH支持在机器之间复制图像,它还允许本地传输。在几个关键场景中,无寄存器图像传输非常有用:

在一个通过网络共享图像的系统上在用户之间进行本地传输

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74595501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档