gpt4 book ai didi

docker - 在运行docker pull时如何使用不同的基本路径?

转载 作者:行者123 更新时间:2023-12-02 20:52:44 27 4
gpt4 key购买 nike

我们将根据环境将docker镜像存储在各个注册表中。例如,开发docker镜像存储在https:// dev-artifactory / docker-repository / centos:latest中,产品docker镜像存储在https:// prod-artifactory / docker-registry / centos:latest中。
由于连接方面的挑战,我们正在使用不同的 Artifact 实例。
我们想要在某种环境变量中指定docker镜像(dev-artifactory或prod-artifactory)的基本路径,以便我们只需运行 docker pull centos:latest并根据环境类型自动检测dev-artifactory或prod-artifactory 。

  • 这可能吗?
  • 我们该怎么做?
  • 最佳答案

    对于低级docker CLI,无法可靠地完成此操作。如果没有注册表前缀,则Docker和其他容器运行时会假定您要使用Docker Hub。从理论上讲,您可以使用注册表镜像设置来配置Docker引擎,但这很容易出错(本地注册表中的任何拉取失败都将退回到Docker Hub),不适用于push命令,并导致Dockerfile的生成方式不同取决于它构建的节点。
    因此,在Docker CLI中,您需要在该前缀中添加以下命令:

    docker pull dev-artifactory/docker-repository/centos:latest
    建议您不要在用于自动构建和部署容器的各种配置文件中进行设置,而不要尝试设置注册表镜像之类的黑客。在构建时,此操作在Dockerfile中作为ARG值完成,在第一行FROM行之前,因此您可以在构建中指定镜像时使用它。例如。
    ARG REGISTRY=dev-artifactory/docker-repository
    FROM ${REGISTRY}/centos:latest
    对于运行容器,请在docker-compose.yml文件中使用一个变量。例如。
    version: 2
    services:
    app:
    image: ${REGISTRY:-dev-artifactory/docker-repository}/app:latest
    ....
    与kubernetes类似,将使用处理yml文件的工具来为注册表添加前缀,例如envsubst,掌 Helm 或kustomize。

    关于docker - 在运行docker pull时如何使用不同的基本路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64620610/

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