首页 > 解决方案 > 在 windows10 上推送到本地 docker 注册表时权限被拒绝

问题描述

我正在使用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

有什么意见吗?我错过了一个配置??

标签: dockerdocker-registrydocker-for-windows

解决方案


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


推荐阅读