从我的私有docker-registry中拉出Docker而不指定主机

Muk*_*uky 10 docker docker-registry

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

docker pull <host>:<port>/<dockerImage>
Run Code Online (Sandbox Code Playgroud)

我想写:

docker pull <dockerImage>
Run Code Online (Sandbox Code Playgroud)

首先它会尝试从我的私人注册表中拉出docker,然后尝试从公共docker注册表中提取它.

可能吗?

我试图更改DOCKER_INDEX_URL[my_docker_registry_host]:[port],但它不起作用.

pig*_*fly 5

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

ADD_REGISTRY='--add-registry 192.168.0.169:5000'
INSECURE_REGISTRY='--insecure-registry 192.168.0.169:5000'
Run Code Online (Sandbox Code Playgroud)

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

ExecStart=/usr/bin/dockerd --registry-mirror=http://192.168.0.169:5000
Run Code Online (Sandbox Code Playgroud)

当你拉取一个镜像时,docker会首先从你的私有注册表中拉取它,如果在你的私有注册表中找不到的话,然后从docker hub中拉取它。我正在使用CentOS 7 Docker 1.12。


Lar*_*Cai 1

不,我认为尚不支持(1.1.2 为写入)。我想主要原因是

本地私有注册表不是公共注册表的镜像,因此逻辑并不是如果在本地找不到它,那么它就转到公共注册表。他们是完全不同的。

因此,如果我们设置自己的私有 docker 存储库但保持相同的命名,就会变得混乱。

当您这样做时docker images,您会发现ubuntu,您如何知道它是来自您当地的私人注册表还是公共注册表。

更新:添加一个示例案例

另外,如果我们有一个Dockerfile,请将 tomcatit 用作tomcat7基础

FROM tomcat7
Run Code Online (Sandbox Code Playgroud)

你怎么知道这个build来自哪里?

如果我们想对私有仓库和公共仓库之间的映射进行严格的处理或控制,那就会很复杂。

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

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