我有一个包含一组图像的私人注册表。它可以被视为应用程序存储。 我的应用程序可以获取这些应用程序并在其他计算机上运行它们。 为了实现这一目标,我的应用程序首先从私有注册表中提取映像,然后将其复制到本地注册表以供以后使用。
步骤如下:
docker pull privateregistry:5000/company/app:tag
docker tag privateregistry:5000/company/app:tag localregistry:5000/company/app:tag
docker push localregistry:5000/company/app:tag
然后在我网络中的另一台机器上:
docker pull localregistry:5000/company/app:tag
有没有一种方法可以有效地将图像从存储库复制到另一个存储库,而无需在中间使用 Docker 客户端?
您可以使用
docker save
将图像保存到 tar 存档中,然后将 tar 复制到新主机并使用 docker load
解压它。
阅读以下链接了解更多信息 https://docs.docker.com/engine/reference/commandline/save/
这是使用 skopeo 的一行:
docker run --rm -it -v ${HOME}/.docker/config.json:/config.json:ro quay.io/skopeo/stable:latest copy --authfile /config.json docker://${SRC_IMAGE} docker://${DST_IMAGE}
其中
SRC_IMAGE
和 DST_IMAGE
是 docker 镜像的完整路径,包括注册表 URL、镜像名称和标签。请注意,对于 Docker Hub 链接,您可能需要包含注册表 URL docker.io
,例如docker.io/linuxserver/wireguard:legacy
上述命令假设您用于登录私有注册表的 docker 凭据位于标准位置
~/.docker/config.json