簡體   English   中英

Docker Windows 本地注冊表:收到意外 HTTP 狀態:500 內部服務器錯誤

[英]Docker Windows Local Registry: received unexpected HTTP status: 500 Internal Server Error

我正在嘗試將 windows 容器的圖像推送到 Windows VM 上的“本地”存儲庫,它有自己的 IP 地址。

因此,當我在我的 VM 上創建注冊表時,我可以通過轉到 ipaddress:5000 來查看我本地機器上的存儲庫列表。

但是,當我嘗試將圖像推送到注冊表時,它會顯示要推送的層,但在底部顯示收到意外的 HTTP 狀態:500 內部服務器錯誤。

當我切換到 Linux 容器時,這不是問題。 我可以毫無問題地從注冊表中推送和拉取。

您需要通過在守護程序配置 JSON 文件中設置“ allow-nondistributable-artifacts ”選項來允許不可分發的工件。

對於 Linux:/etc/docker/daemon.json中使用上述選項創建或更新 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是重要的/必需的。

這可能是因為您要推送圖像的遠程服務器(或本地服務器)上的錯誤。 在我的情況下,這是一個磁盤空間問題,作為 500 服務器錯誤拋出。 需要在推送圖像的服務器上檢查該問題。

除了少數圖像之外,您的所有圖像都已被推送,因為所有其他圖像都已被推送,而新的則失敗了。

對我來說,問題是我們的注冊表已滿。 我清空了它,它起作用了。

就我而言,我只是等了一會兒,然后再試一次。 500 個錯誤消失了。

如果注冊表前面有 nginx,nginx 有一個問題,即大文件的 PATCH 可能會拋出 500 Internal server error。 這是由於根分區上的磁盤空間不足引起的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM