在Windows10上推送到本地docker注册表时拒绝权限

时间:2019-07-05 07:09:07

标签: docker docker-registry docker-windows

我正在使用 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
有什么意见吗?我错过了配置吗?

1 个答案:

答案 0 :(得分:0)

检查主机中的文件夹"F:/docker-hub/registry"是否具有用户的写许可权。