【问题标题】:Pull Docker from my private docker-registry without specifying the host从我的私有 docker-registry 中提取 Docker 而不指定主机
【发布时间】:2014-08-06 07:57:01
【问题描述】:

我正在使用 docker-registry 来拉取我自己的 docker 镜像,但我想这样做而不需要指定主机。意思: 而不是写:

docker pull <host>:<port>/<dockerImage>

我想写:

docker pull <dockerImage>

首先它会尝试从我的私有注册表中拉取 docker,然后再尝试从公共 docker 注册表中拉取它。

有可能吗?

我尝试将DOCKER_INDEX_URL 更改为[my_docker_registry_host]:[port],但不起作用。

【问题讨论】:

    标签: docker docker-registry


    【解决方案1】:

    您可以修改或添加您的/etc/sysconfig/docker

    ADD_REGISTRY='--add-registry 192.168.0.169:5000'
    INSECURE_REGISTRY='--insecure-registry 192.168.0.169:5000'
    

    然后修改/etc/systemd/system/docker.service/usr/lib/systemd/system/docker.service

    ExecStart=/usr/bin/dockerd --registry-mirror=http://192.168.0.169:5000
    

    当您拉取镜像时,docker 会先从您的私有注册表中拉取它,如果在您的私有注册表中没有找到,然后再从 docker hub 拉取。我正在开发 CentOS 7 Docker 1.12。

    【讨论】:

    • 这正是我想要的
    【解决方案2】:

    不,我认为它尚不支持(1.1.2 as write)。我想主要原因是

    本地私有注册表不是来自公共注册表的镜像,因此逻辑上不是如果在本地找不到它,则它会转到公共注册表。他们完全不同。

    因此,如果我们设置自己的私有 docker 存储库但保持相同的命名,它会搞砸。

    当您执行docker images 并看到ubuntu 时,您怎么知道它来自您当地的私人注册中心还是公共注册中心。

    更新:添加一个示例案例

    另外,如果我们有Dockerfile,则将tomcatit 使用tomcat7 作为基础

    FROM tomcat7
    

    你怎么知道这个构建来自于?

    如果我们想对私有仓库和公共仓库之间的映射有严格的流程或控制,那就很复杂了。

    技术上是可行的,但收益较少。它失去了 docker(社区)的力量

    其他包系统也是类似情况,需要包的唯一名称。

    【讨论】:

    • 他想将默认公共更改为他自己的注册表。
    • 我理解这一点,因为我也想这样做。但如果这样做,它会混淆系统。他们希望将其作为一种独特的命名空间来控制。
    • @LarryCai 以完全相同的方式显示它,但先让 docker 检查私有存储库。在那种情况下,ubuntu 将始终来自公共存储库。但是,docker run ubuntu 将安装 privaterepo/ubuntu(如果可用),但仍显示为 privaterepo/ubuntu
    • @Reece45 这可能是一个解决方案,您可以将其作为一种解决方案留在那里以查看其他人的 cmets,我仍然认为它会弄乱命名系统 ;-)
    猜你喜欢
    • 1970-01-01
    • 2017-02-24
    • 2015-09-04
    • 2019-08-16
    • 2023-02-10
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多