macos 搭建 docker registry 倉庫,出現 "received unexpected HTTP status: 500 Internal Server Error" 錯誤


最近學習 docker 和 k8s; 由於 k8s 部署 Deployment 的時候,從 docker.io 拉取鏡像容易超時,於是考慮搭建一個本機的 docker hub。了解到 docker 有一個 registry 鏡像,遂學習之: Deploy a registry server

在 mac 上新建了一個 registry 項目,編寫 Makefile 如下

REGISTRY_REPO=/var/lib/registry/docker/registry/v2/repositories
LOCAL_REPO=`pwd`/data/v2/repositories
IMAGE=registry
CONTAINER=registry

build:
	@if [ ! -d $(LOCAL_REPO) ]; then mkdir -p $(LOCAL_REPO); fi
	@echo LOCAL_REPO=$(LOCAL_REPO)
	docker run -d -p 5000:5000 -v $(LOCAL_REPO):$(REGISTRY_REPO) --privileged=true  --restart always --name $(CONTAINER) $(IMAGE)
start:
	docker start $(CONTAINER)
stop:
	docker stop $(CONTAINER)
delete:
	docker rm -f $(CONTAINER)

執行 make build 運行了 registry 鏡像,但是 push 本地 image 到 registry 出現問題:

[16:09:11 registry] $ docker push localhost:5000/my-getting-started:3000
The push refers to repository [localhost:5000/my-getting-started]
398786771e51: Pushing  7.052MB
bef245e6b7fc: Retrying in 18 seconds 
788783bb5410: Pushing  178.7kB
9b2457fcc1c5: Pushing  2.048kB
c5088e2ef878: Pushing  3.584kB
12587d8b4618: Retrying in 5 seconds 
738f7039e20b: Pushing  22.79MB/77.6MB
8d3ac3489996: Retrying in 5 seconds 
received unexpected HTTP status: 500 Internal Server Error

屢試屢錯。

后來嘗試將 Makefile 中的變量修改如下:

REGISTRY_REPO=/var/lib/registry
LOCAL_REPO=`pwd`/data

刪除現有的 registry 容器,重新build,再次嘗試push,就好使了。
再仔細看官方文檔 Customize the storage location, 里面也是綁定的 /var/lib/registry 目錄。

查看本機的 registry 項目目錄,可以看到 data/docker/registry/v2 目錄下除了 repositories 目錄,還有 blobs 目錄。而最初我們只綁定了容器里的 /var/lib/registry/docker/registry/v2/repositories 目錄,這或許就是失敗的原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM