我正在使用 Windows 10 ,这是我的守护程序配置:
{
"registry-mirrors": [],
"insecure-registries": [
"blah.hub:5000"
],
"debug": true,
"experimental": true,
"allow-nondistributable-artifacts": [
"blah.hub:5000"
]
}
我也使用 Docker Desktop 并在 Windows模式(不是Linux)上工作。
blah.hub 是在我的etc / hosts文件中定义的名称,并映射到我的注册表计算机。
我通过运行以下命令创建的注册表映像来创建私有注册表:
docker run -d -p 5000:5000 -v F:/docker-hub/registry:/var/lib/registry --restart=always --name blah.hub registry
通过这些步骤,我可以成功访问路径http://blah.hub:5000/v2/_catalog。
但是当我想将我标记的图像推送为blah.hub:5000/myImg
时,它不起作用:
docker push blah.hub:5000/myImg
The push refers to repository [blah.hub:5000/myImg]
af0b15c8625b: Retrying in 6 seconds
当我探索与注册表机共享的注册表的容器卷时,在v2/repositories/myImg/_uploads
中创建了一个文件夹,其中包含一个名为staredat
的零尺寸文件。
这是我推送时注册表容器的日志:
11.5.2.117 - - [05/Jul/2019:06:42:36 +0000] "POST /v2/myImg/blobs/uploads/ HTTP/1.1" 500 255 "" "docker/18.09.1 go/go1.10.6 git-commit/4c52b90 os/windows arch/amd64 UpstreamClient(Docker-Client/18.09.1 \\(windows\\))"
time="2019-07-05T06:42:36.4979957Z" level=error msg="response completed with error" err.code=unknown err.detail="filesystem: truncate /var/lib/registry/docker/registry/v2/repositories/myImg/_uploads/5c131802-afcc-484b-841b-4eb08a07d7a5/startedat: permission denied" err.message="unknown error" go.version=go1.11.2 http.request.host="blah.hub:5000" http.request.id=ba0c22c5-4c3d-4426-abe9-3fb609532a9a http.request.method=POST http.request.remoteaddr="10.1.2.117:32186" http.request.uri="/v2/myImg/blobs/uploads/" http.request.useragent="docker/18.09.1 go/go1.10.6 git-commit/4c52b90 os/windows arch/amd64 UpstreamClient(Docker-Client/18.09.1 \(windows\))" http.response.contenttype="application/json; charset=utf-8" http.response.duration=34.1269ms http.response.status=500 http.response.written=255 vars.name=myImg
有什么意见吗?我错过了配置吗?
答案 0 :(得分:0)
检查主机中的文件夹"F:/docker-hub/registry"
是否具有用户的写许可权。