在docker拉与私人registry“标签最新未find”

我有麻烦拉图像推送到私人registry,并得到:

在存储库中标记最新未find的

我正在使用Docker提供的默认registry容器:

# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry latest 7e2db37c6564 8 days ago 411.6 MB janos/wheezy latest 900e813f1fd9 11 months ago 218.6 MB 

作为一个testing,假设我想要一个本地版本的wheezy:

 # docker tag janos/wheezy staging-docker.mysite.nl/myself/wheezy # docker push staging-docker.mysite.nl/myself/wheezy The push refers to a repository [staging-docker.mysite.nl/myself/wheezy] (len: 1) Sending image list Pushing repository staging-docker.mysite.nl/myself/wheezy (1 tags) 7af801e4faa1: Pushing [==================================================>] 226.3 MB/226.3 MB 2014/11/21 16:06:38 

图像似乎在那里:

 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry latest 7e2db37c6564 8 days ago 411.6 MB staging-docker.mysite.nl/myself/wheezy latest 900e813f1fd9 11 months ago 218.6 MB janos/wheezy latest 900e813f1fd9 11 months ago 218.6 MB 

在本地我可以启动它:

 # docker run -i -t staging-docker.mysite.nl/myself/wheezy /bin/bash root@6b5fafe61d88:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var root@6b5fafe61d88:/# exit 

但是,当试图运行或从另一台服务器拉,我得到“标签最新未find”

 # docker pull staging-docker.mysite.nl/myself/wheezy Pulling repository staging-docker.mysite.nl/myself/wheezy 2014/11/21 16:08:15 Tag latest not found in repository staging-docker.mysite.nl/myself/wheezy 

明确添加“最新”不会帮助。 同样的错误。

我可以看到呼叫到达registry,所以我不会无意中使用另一个:

 172.17.42.1 - - [21/Nov/2014:15:08:15 +0000] "GET /v1/_ping HTTP/1.0" 200 1439 "-" "Go 1.1 package http" 172.17.42.1 - - [21/Nov/2014:15:08:15 +0000] "GET /v1/_ping HTTP/1.0" 200 1439 "-" "Go 1.1 package http" 21/Nov/2014:15:08:15 +0000 DEBUG: args = {'namespace': u'myself', 'repository': u'wheezy'} 172.17.42.1 - - [21/Nov/2014:15:08:15 +0000] "GET /v1/repositories/myself/wheezy/images HTTP/1.0" 200 164 "-" "docker/1.3.1 go/go1.3.3 git-commit/4e9bbfa kernel/3.16.0-0.bpo.2-amd64 os/linux arch/amd64" 21/Nov/2014:15:08:15 +0000 DEBUG: args = {'namespace': u'myself', 'repository': u'wheezy'} 21/Nov/2014:15:08:15 +0000 DEBUG: [get_tags] namespace=myself; repository=wheezy 172.17.42.1 - - [21/Nov/2014:15:08:15 +0000] "GET /v1/repositories/myself/wheezy/tags HTTP/1.0" 200 2 "-" "docker/1.3.1 go/go1.3.3 git-commit/4e9bbfa kernel/3.16.0-0.bpo.2-amd64 os/linux arch/amd64" 

当手动检查图像的标签时,它们确实是空的:

 # curl -k https://staging-docker.mysite.nl/v1/repositories/myself/wheezy/tags {} 

问题1 :由于Docker总是使用最新的…

问题2 :如果不知怎的,事情搞糟了,最新的标签确实不见了,我怎么还能在本地启动呢?

Docker版本在两台服务器上都是一样的:

 # docker version Client version: 1.3.1 Client API version: 1.15 Go version (client): go1.3.3 Git commit (client): 4e9bbfa OS/Arch (client): linux/amd64 Server version: 1.3.1 Server API version: 1.15 Go version (server): go1.3.3 Git commit (server): 4e9bbfa 

我已经注意到,Docker客户端失败消息并不总是反映根本原因。 我已经看到这种情况发生在docker客户端未通过服务器authentication时,或者由于某种原因SSL握手失败。 鉴于你没有使用 – securedcureregistry,听起来像后者。

问题1

这应该是您的远程私人registry中的问题,这是用您的命令确认的

 curl -k https://staging-docker.mysite.nl/v1/repositories/myself/wheezy/tags 

问题2

标签只是泊坞窗图像的别名,如果你以不同的命名方式在本地运行,它们都是从相同的泊坞窗图像运行的,没有区别。

latest的标签不会在本地丢失,这是由您的命令确认的

 $ docker images 

检查你的docker私人registry设置,并跟踪日志,看看有什么问题,如果你想完全解决它,你需要在远程私人registry中附加更多的debugging信息。

另外如何远程registry设置是像版本和平台。