我们可以使用Skopeo来移动和共享镜像。Skopeo不需要与本地容器存储(overlay2或devicemapper)进行交互,它可以直接在注册表之间,容器引擎存储之间甚至目录之间移动。
远程检查image
首先,让我们从启动Skopeo项目的用例开始。 有时,在将Image下拉到本地缓存之前远程检查Image确实很方便。 这使我们可以检查Image的元数据,并查看是否确实要使用它,而无需将其同步到本地Image缓存:
$ skopeo inspect docker://registry.fedoraproject.org/fedora
{
"Name": "registry.fedoraproject.org/fedora",
"Digest": "sha256:d84ad27a3055f11cf2d34e611b8d14aada444e1e71866ea6a076b773aeac3c93",
"RepoTags": [
"24",
"25",
"26-modular",
"26",
"27-aarch64",
"27-armhfp",
"27-ppc64le",
"27-x86_64",
"27",
"28-aarch64",
"28-armhfp",
"28-ppc64le",
"28-x86_64",
"28",
"29-aarch64",
"29-ppc64le",
"29-s390x",
"29-x86_64",
"29",
"30-aarch64",
"30-ppc64le",
"30-s390x",
"30-x86_64",
"30",
"latest",
"rawhide",
"30-armhfp",
"29-armhfp",
"31-aarch64",
"31-x86_64",
"31",
"31-armhfp",
"31-s390x",
"31-ppc64le",
"32-aarch64",
"32-ppc64le",
"32-s390x",
"32-x86_64",
"32",
"33-aarch64",
"33-ppc64le",
"33-s390x",
"33-x86_64",
"33"
],
"Created": "2020-05-15T06:48:40Z",
"DockerVersion": "1.10.1",
"Labels": {
"license": "MIT",
"name": "fedora",
"vendor": "Fedora Project",
"version": "32"
},
"Architecture": "amd64",
"Os": "linux",
"Layers": [
"sha256:1657ffead82459c68a65ceb4dc6f619b010b96d257f860d7db578ec2b06080e8"
],
"Env": [
"DISTTAG=f32container",
"FGC=f32",
"container=oci"
]
}
我们可以很容易地看到“Architecture”和“ Os”元数据,这些元数据向我们介绍了很多有关Image的信息。我们还可以看到标签,标签被大多数容器引擎使用,并传递给运行时以构造为环境变量。相比之下,这是在运行中的容器中查看它们的方法:podman inspect $(podman create registry.fedoraproject.org/fedora bash)
像Podman一样,Skopeo可用于将Image下拉到本地容器存储中:skopeo copy docker://registry.fedoraproject.org/fedora containers-storage:fedora
也可以用于将它们拉入本地目录:
skopeo copy docker://registry.fedoraproject.org/fedora dir:/root/fedora-skopeo
在容器存储之间移动镜像(Docker和Podman)
现在,让我们看一下Podman和Docker之间的动态Image。我们将Image存储在本地,这很简单:
skopeo copy containers-storage:registry.fedoraproject.org/fedora docker-daemon:registry.fedoraproject.org/fedora:latest
确认存储库现在位于Docker Engine缓存中:
在容器注册中心之间移动
我们从一个注册表复制到另一个注册表。我已经在quay.io上的用户名(fatherlinux)下建立了一个可写的存储库。为此,您必须使用下面提供的凭据。注意,我们使用“ --dest-creds”选项进行身份验证。我们还可以使用“ --source-cred”选项从需要身份验证的注册表中提取信息。这个工具非常灵活。
--kopeo copy containers-storage:registry.fedoraproject.org/fedora docker://quay.io/fatherlinux/fedora --dest-creds fatherlinux+fedora:5R4YX2LHHVB682OX232TMFSBGFT350IV70SBLDKU46LAFIY6HEGN4OYGJ2SCD4HI
该命令仅将fedora存储库从Fedora注册表同步到Quay.io,而无需将其缓存在本地容器存储中。