Docker 注册表上的绑定安装位置导致超时

Bind-mounting location on Docker registry results in timeouts

我在 Mac 上使用 Docker,但在注册表服务器上绑定安装位置时遇到了一些问题 - 我希望这里有人可以提供帮助。

谢天谢地,问题很简单。假设我想要 运行 一个简单的、不安全的 docker 注册表。首先,我确保将适当的 ip:portno 输入到 "insecure registries" 列表中。根据文档,我然后 运行 docker run -d --restart=always --name registry -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 -p 5000:5000 registry:2

当我这样做时,注册表 "just works." 我可以将图像标记为 10.0.3.59:5000/imgname,并正常推送和拉取。

但是,我希望注册表的数据位于主机系统的特定位置,例如 /mnt/registry。我转到 docker 首选项,确保在 mnt 文件夹上启用共享,并删除旧图像和容器

再次按照文档,我运行 docker run -d --restart=always --name registry -v storage:/var/lib/registry/ -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 -p 5000:5000 registry:2。但是,如果我现在尝试执行 docker push 10.0.3.59:5000/imgname,我会收到以下消息

The push refers to a repository [10.0.3.52:5000/cropspokyimage]
74146a4cf164: Retrying in 9 seconds
6c45ce1e774e: Retrying in 9 seconds 
0914c5636fb4: Retrying in 9 seconds
f859b8ada191: Retrying in 9 seconds
b2d02a400fe3: Retrying in 9 seconds
fc0e50be166d: Waiting
a8cfe888247e: Waiting
e745d991dded: Waiting
7b08edaa4533: Waiting
01b4d034aab5: Waiting
d0c686d0df68: Waiting
9deb78b26d56: Waiting
0566c118947e: Waiting
6f9cf951edf5: Waiting
182d2a55830d: Waiting
5a4c2c9a24fc: Preparing
cb11ba605400: Waiting

等了大概一分钟左右,终于打印出如下错误并终止received unexpected HTTP status: 500 Internal Server Error

显然,这让我失去了一些非常想要的功能。谁能帮我找到解决办法?

这里有一些问题。首先是我为卷安装的目录有错误的权限,所以 docker 无法写入它。 cmod 777 解决了这个问题。

使用 docker logs 命令检查注册表日志至关重要。

检查日志还发现,当尝试添加的用户已经存在时,restrict-useradd 脚本出错,因此向脚本中的 return 值添加 || 0固定那个。这也是 restrict-groupadd 的问题