首页 > 解决方案 > Docker Windows 本地注册表:收到意外的 HTTP 状态:500 内部服务器错误

问题描述

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

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

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

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

标签: dockercontainersdocker-registrydocker-for-windows

解决方案


您需要通过allow-nondistributable-artifacts在守护程序配置 JSON 文件中设置“”选项来允许不可分发的工件。

对于 Linux:使用上述选项创建或更新 docker daemon JSON 文件/etc/docker/daemon.json

对于 Windows:

  1. 右键单击系统托盘中的Docker图标并选择设置
  2. 选择守护程序选项卡
  3. 启用高级选项(如果禁用)
  4. 将选项添加allow-nondistributable-artifacts到 JSON Like 中:

    {
        "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是重要的/必需的。


推荐阅读