Docker Windows 本地注册表:收到意外的 HTTP 状态:500 内部服务器错误

问题描述 投票:0回答:6

我正在尝试将 Windows 容器的图像推送到 Windows VM 上的“本地”存储库,该存储库具有自己的 IP 地址。

所以当我在我的 VM 上创建注册表时,我可以通过转到 ipaddress:5000 来查看本地机器上的存储库列表。

但是,当我尝试将图像推送到注册表时,它显示要推送的层,但在底部显示收到意外的 HTTP 状态:500 内部服务器错误。

当我切换到 Linux 容器时,这不是问题。我可以从注册表中推送和拉取没问题。

docker containers docker-registry docker-for-windows
6个回答
6
投票

您需要通过在守护程序配置 JSON 文件中设置“

allow-nondistributable-artifacts
”选项来允许不可分发的工件。

对于 Linux: 使用上述选项创建或更新 docker 守护程序 JSON 文件

/etc/docker/daemon.json

对于 Windows:

  1. 右键单击系统托盘中的Docker图标并选择settings
  2. 选择Daemon选项卡
  3. 启用高级选项(如果禁用)
  4. 将选项

    allow-nondistributable-artifacts
    添加到JSON中喜欢:

    {
        "registry-mirrors": [],
        "insecure-registries": [],
        "debug": true,
        "experimental": true,
        "allow-nondistributable-artifacts": [
            "localhost:5000"
        ]
    }
    
  5. localhost
    换成自己的服务器名

  6. 或者,
    daemon.json
    文件位于
    C:\ProgramData\Docker\config\daemon.json

注意:如果您有任何其他设置,只有

allow-nondistributable-artifacts
是重要/必需的。


2
投票

对我来说,问题是我们的注册表已满。我清空了它,它起作用了。


2
投票

就我而言,我只是等了一会儿,然后再试一次。 500 个错误消失了。


1
投票

这可能是因为您要推送图像的远程服务器(或本地服务器)出现错误。在我的例子中,这是一个磁盘空间问题,作为 500 服务器错误抛出。需要在推送图片的服务器上检查问题。

你所有的图片都被推送了,除了少数几个,因为所有其他的都已经被推送了,而新的失败了。


0
投票

如果注册表前面有nginx,nginx 有一个问题,大文件的PATCH 可能会抛出500 Internal server error。这是由于根分区上的磁盘空间不足引起的。

在这里查看如何修复它:https://stackoverflow.com/a/38873781/2032777


0
投票

在我的例子中(使用 Nexus 作为本地注册表)当我检查了 nexus 的日志时,我注意到这个问题是由于缺乏存储。

© www.soinside.com 2019 - 2024. All rights reserved.