gpt4 book ai didi

docker - 通过 Docker API 将私有(private)镜像推送到 Docker Registry

转载 作者:行者123 更新时间:2023-12-02 18:28:29 24 4
gpt4 key购买 nike

我正在使用 Docker SDK for Python将本地镜像存储库推送到 Docker Registry(在我的例子中是 DockerHub。)

我在文档 here 中描述的“client.images”上使用“推送”方法.

不幸的是,所有已发布的存储库都是公开的。似乎没有标志可以推送到私有(private)存储库或确保推送的存储库是私有(private)的。这可以通过 Docker Python API 实现吗?

我尝试了三种不同的方式(所有方式都只产生一个公共(public) repo ):

  1. 方法一:单独登录(有效,但会导致公共(public) repo ):
client = docker.from_env()   
auth_client = client.login(username = "kelly_peyton",
password = "nightingale",
email = "kpeyton@prophet5.org",
registry = "docker.io",
reauth = True)
# other code here, not shown, to validate login succeeded

cli = APIClient(base_url="unix:///var/run/docker.sock")
br = cli.build(path = temp_local,
dockerfile = f"{temp_local}/Dockerfile",
tag = docker_repo_reference_tagged)
# other code here, not shown, to validate build succeeded

push_res = cli.push(repository = f"{docker_repo_reference}",
tag = docker_repo_tag,
stream = False,
decode = False)
  1. 方法二:传递给推送调用的凭据(有效,但会导致公共(public) repo ):
client = docker.from_env()   
cli = APIClient(base_url="unix:///var/run/docker.sock")
br = cli.build(path = temp_local,
dockerfile = f"{temp_local}/Dockerfile",
tag = docker_repo_reference_tagged)
# other code here, not shown, to validate build succeeded

push_res = cli.push(repository = f"{docker_repo_reference}",
tag = docker_repo_tag,
stream = False,
auth_config = {
"username" : "kelly_peyton",
"password" : "nightingale",
"email" : "kpeyton@prophet5.org",
"registry" : "docker.io"
},
decode = False)
  1. 方法三:命令行登录(不是通过代码)(有效,但会导致公共(public) repo ):
client = docker.from_env()   
cli = APIClient(base_url="unix:///var/run/docker.sock")
br = cli.build(path = temp_local,
dockerfile = f"{temp_local}/Dockerfile",
tag = docker_repo_reference_tagged)
# other code here, not shown, to validate build succeeded

push_res = cli.push(repository = f"{docker_repo_reference}",
tag = docker_repo_tag,
stream = False,
decode = False)

所有这三种方法都有效,因为图像确实被推送到注册表(在我的例子中是 DockerHub),并且显然 auth 有效,因为我推送到我的私有(private) DockerHub 帐户。但是,图像始终是公开的。

最佳答案

您不能通过将凭据设置为 API 来将存储库设为私有(private)。它使您只能将图像推送到您的仓库。

您应该创建或将存储库转换为私有(private)存储库。请阅读documentation知道怎么做。通常,只有您可以推送到 repo 协议(protocol)。如果 repo 公开那么每个人都可以下载,如果 repo 私有(private)那么只有你可以下载。

关于docker - 通过 Docker API 将私有(private)镜像推送到 Docker Registry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com