bui*_*tro 4 docker docker-registry
从私有 V2 注册表中拉取时,docker 1.9.1 在 centos7 上拉取失败。
$ docker -v
Docker version 1.9.1, build 78ee77d/1.9.1
$ docker pull web-docker.bin-repo.hostname.com/web-dev:latest
Trying to pull repository web-docker.bin-repo.hostname.com/web-dev ...
failed
manifest invalid: manifest invalid
Run Code Online (Sandbox Code Playgroud)
相同的命令在 docker 1.10.3 的 osx 上运行良好。谁能告诉我为什么这不起作用以及如何进一步排除故障?
更新:这是它试图提取的清单。它可以拉取 v1 清单,但在 v2 清单上失败,如下所示。
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/octet-stream",
"size": 7503,
"digest": "sha256:58672cb2c8c6d44c1271a5ca38e60a4ab29fb60050bc76995ce662c126509036"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 32,
"digest": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 72038766,
"digest": "sha256:35d9d5d11536c0c6843ecd106dc710b5c54b8198aa28710e73dba2cbe555847f"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 19361671,
"digest": "sha256:f7de7971859186e93100b41fbba5513771737ba65f57c62404130646bd41b96b"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 108814795,
"digest": "sha256:0041a80e34f1271571619554f6833c06e0ef75d39f152f5fe44ba75bf7e25ae2"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 157895786,
"digest": "sha256:ec3cfa9c22f7e6497a0eacf85c86bf8eb5fdec35d096298f9efb43827a393472"
}
]
}
Run Code Online (Sandbox Code Playgroud)
对于这个问题,我观察到的是,每当您第二次使用相同的 SHA 推送相同的图像工件时,我们都会观察到这个问题。
为了解决这个问题,我建议授予覆盖/删除 artifactory 中的 mainifest 文件的权限。
这肯定会解决这个问题。
升级到新版本的 Docker 后问题自行解决。(Docker version 1.10.3, build 20f81dd) 标准 yum repo 版本落后,因此添加 docker repo 并获取最新版本的 docker:
sudo yum update
Run Code Online (Sandbox Code Playgroud)
添加 yum 存储库:
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
Run Code Online (Sandbox Code Playgroud)
安装 docker 引擎:
sudo yum install docker-engine
Run Code Online (Sandbox Code Playgroud)
启动守护进程:
sudo service docker start
Run Code Online (Sandbox Code Playgroud)
添加不安全注册表标志(如果 priv 注册表没有证书)
sudo vi /usr/lib/systemd/system/docker.service
Run Code Online (Sandbox Code Playgroud)
ExecStart=/usr/bin/docker daemon --insecure-registry web-docker.bin-repo.hostname.com -H fd://
重新加载守护进程:
sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)
从私有注册表中提取:
sudo docker pull web-docker.bin-repo.hostname.com/web-dev:latest
latest: Pulling from web-dev
a3ed95caeb02: Pull complete
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8006 次 |
| 最近记录: |