簡體   English   中英

在私人注冊表的docker pull上“標記最新未找到”

[英]“tag latest not found” on docker pull with private registry

我有麻煩將圖像推送到私人注冊表並得到:

標記最新未在存儲庫中找到

我正在使用Docker提供的默認注冊表容器:

# 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

作為測試,假設我想要一個本地版本的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

但是當試圖從另一台服務器運行或拉出它時,我得到“Tag not found not found”

# 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

明確添加“最新”並沒有幫助。 同樣的錯誤。

我可以看到呼叫到達注冊表,所以我不會無意中使用另一個:

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客戶端未通過服務器身份驗證時,或者當SSL握手由於某種原因失敗時,會發生這種情況。 鑒於您沒有使用--insecure-registry,它聽起來像后者。

問題1

它應該是您的遠程私人注冊表中的問題,這可以通過您的命令得到確認

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

問題2

tag只是docker鏡像的別名,如果你在不同的命名中本地運行,它們都是從相同的docker鏡像運行的,沒有區別。

latest的標簽不會在本地丟失,這可以通過您的命令確認

$ docker images

檢查您的docker私有注冊表設置並跟蹤日志以查看問題所在,如果您想完全解決它,您需要在遠程私有注冊表中附加更多調試信息。

此外,遠程注冊表設置如何版本和平台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM