首页 > 解决方案 > 从 CI 命令行运行 docker push --insecure-registries 或者至少没有 root 访问权限?

问题描述

首先,这不是关于如何放置的常见问题解答:

{ "insecure-registries" : ["myregistrydomain.com:5000"] }

/etc/docker/daemon.json. 我知道那件事。那行得通。如果你有root权限。我没有。

所以这个问题的一个措辞是:

是否有充分的理由docker push不允许--insecure-registry选择?有没有其他方法可以在没有root访问权限的情况下做到这一点?或者有没有我忽略的方法?

背景:我们希望将图像从构建服务器推送到我们设置的私有注册表。由于各种内部原因,我们无法为私有注册表获取 HTTPS 证书。而且我们没有对构建服务器的 root 访问权限。这意味着我们不能从 docker 推送到我们的私有注册表。

已经开始使用黑客了。我首先构建 docker 映像,然后将映像保存到 tar 文件中

docker image save image:tag >  image.tar

然后复制image.tar到另一台运行 docker 的服务器,在那里我确实具有 root 访问权限并已编辑/etc/docker/daemon.json,然后从那里推送到私有存储库。

这个“其他服务器”可以是真正的其他服务器或短暂的docker 映像,在构建服务器上运行Docker-in-docker aka docker:dind 。

由于我可以在没有 root 访问权限的情况下使用 docker-in-docker 映像来执行此操作,因此似乎没有安全原因docker push --insecure-registry server/image:tag是不可能的。所以现在我想知道:为什么这是不可能的,或者我忽略了什么?

标签: docker

解决方案


推荐阅读