我正在运行一个Docker堆栈,使用的是我推送到Artifactory存储库的自定义图像。
docker-compose.yml:
version: "3"
services:
app:
image: repo.example.com/my_image:latest
我可以很好地提取映像,也可以很好地部署堆栈,但是如果我尝试重新部署堆栈,就会得到一个错误。
$ docker stack deploy --with-registry-auth -c docker-compose.yml my_stack
Creating network my_stack_default
Creating service my_stack_app
$ docker stack deploy --with-registry-auth -c docker-compose.yml my_stack
Updating service my_stack_app (id: 8po6oepjdgo8kwsb7n4ig64dt)
unable to pin image repo.example.com/my_image:latest to digest: unauthorized: The client does not have permission for manifest
我希望Docker在我重新部署堆栈时更新镜像,就像我使用Docker Hub的镜像一样。
我以前见过Docker说unable to pin image
,但那是在我没有指定存储库(例如docker.io)的时候。我知道我得到了repo.example.com
的许可,因为我把图像推到了那里,我仍然可以从它中拉出,并且我可以启动堆栈。我就是不能更新。
此client does not have permission for manifest
错误意味着什么,以及如何修复此问题?
发布于 2019-08-07 17:01:14
这看起来像是您的用户没有此存储库的“删除/覆盖”权限。请要求您的Artifactory管理员为您的用户添加此存储库的权限,然后重试。
希望这能有所帮助!
发布于 2022-01-26 16:49:29
问题是我们使用的是Docker Swarm的一个特定的旧版本(我认为是版本13),它有一个导致这个错误的bug。我们被限制在该版本,因为当时的RHEL7仅限于该版本。使用Ubuntu并将Docker更新到更新的版本解决了这个问题。
https://stackoverflow.com/questions/57379476
复制相似问题