我这样做:
docker pull my-private-repo.xyz.com:443/platform/abc
我收到以下错误:
Pulling repository my-private-repo.xyz.com:443/platform/abc
Error: Status 400 trying to pull repository platform/abc: "{\n \"errors\" : [ {\n \"status\" : 400,\n \"message\" : \"Unsupported docker v1 repository request for 'my-private-repo'\"\n } ]\n}"
我的docker守护程序配置如下:
{
"insecure-registries" : [
"my-private-repo.xyz.com:443"
],
"experimental" : false
}
这是我的码头信息:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 15
Server Version: 1.13.0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 22
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.4-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.952 GiB
Name: moby
ID: WW55:6DVS:DJCJ:3NXI:2CDX:44JW:F6IK:P2JU:LM7X:B76Y:HC3G:RCEU
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 16
Goroutines: 27
System Time: 2017-01-24T21:30:22.279581628Z
EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
my-private-repo.xyz.com:443
127.0.0.0/8
Live Restore Enabled: false
添加了上面的泊坞广告信息。有解决方案吗指出我可能做错了什么?
docker客户端版本是这样的:
13:39 $ docker --version
Docker version 1.13.0, build 49bf474
更新:
解决。当存储库中不存在图像时,看起来Docker会抛出含糊不清的错误消息。当我这样做时:
docker pull my-private-repo.xyz.com:443/platform/abc
我希望能够下载带有“最新”标签的图片。在存储库中,此标记不存在此类图像。但抛出的错误是错误的。
此外,我还根据对此的评论中的建议更改了我的守护程序配置:
{
"experimental" : false,
"disable-legacy-registry" : true,
"insecure-registries" : [
"my-private-repo.xyz.com:443"
]
}
现在我能够拉出图像了。
答案 0 :(得分:3)
当您使用Docker客户端从注册表中提取图像时,客户端将首先尝试向注册表发送V2版本请求。如果此请求返回错误(即图像不存在或请求未经授权),则docker客户端将退回并尝试发送另一个V1版本请求。
由于您的注册表处于较新版本,并且它不再支持V1 API,因此注册表将在第二个V1请求尝试中抛出错误,例如“不支持的docker v1存储库请求”。
为避免这种情况,Docker开发人员计划默认将--disable-legacy-registry
选项添加到Docker客户端。如果此选项已设置为true,则Docker客户端将不会尝试再次发送V1版本请求,但会从初始V2请求返回原始错误消息。
有关详情,请查看此问题:https://github.com/docker/docker/issues/26142#issuecomment-271867508
答案 1 :(得分:0)
如果你这意味着你使用Docker少于1.9版本。 Docker已弃用此版本的v1注册表。请检查以下内容
docker --version
和docker info
docker run --rm --pid = host alpine ps aux | grep dockerd
上面的命令将显示系统中配置了多少Docker注册表。如果有多个,请逐个删除和配置进行检查。
因此,如果它有多个注册表设置,请检查每个注册表并检查配置是否支持v2。
如果您只配置了一个注册表并面临此问题,我建议将Docker的版本升级到大于1.9。
答案 2 :(得分:0)
添加到所选的答案和使用的解决方法中:
使用JSON文件配置Docker守护程序,在Linux系统上的/etc/docker/daemon.json或Windows下的C:\ ProgramData \ docker \ config \ daemon.json中创建文件。在MacOS上,通过任务栏>“偏好设置”>“守护程序”>“高级”进入鲸鱼。