首頁>技術>

私有倉庫: 在本地(區域網)搭建的一個類似公共倉庫的東西,我們可以將映象提交到私有倉庫中,供區域網內的其它人拉取使用。 本文以 Registry 為例,並在提供私有倉庫的主機上操作

拉取私有倉庫映象

請先確保你當前擁有的映象有 registry

如果沒有,可以先拉取下來

docker image pull registry
設定私有倉庫地址
vim /etc/docker/daemon.json

修改 insecure-registries 的值,提供私有倉庫的主機的ip地址和埠

{  ...  "insecure-registries":[    "192.168.1.234:5000"  ],  ...}

Mac軟體版

修改後重新啟動 docker 服務

執行私有倉庫映象資源

將 registry 映象生成一個容器並執行起來

# -p 5000:5000 # 第一個是容器使用的埠,第二個是本地埠,這裡是本地埠對映到把容器的埠docker run -d -p 5000:5000 registry
~/lxf ❯ docker ps❯ docker psCONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS      NAMESf12ad7ae43ca   registry   "/entrypoint.sh /etc…"   9 minutes ago   Up 9 minutes   5000/tcp   nostalgic_elion

此時你可以訪問如下地址,如果看到 {} 就說明 Registry 執行正常

http://192.168.1.234:5000/v2/
上傳映象

比如此時我要將 ubuntu 這個映象上傳到私有倉庫

# 給ubuntu映象打一個tag,命名需為 私有倉庫主機ip:埠/映象名:[版本號,不加預設為latest]docker tag ubuntu:latest 192.168.1.234:5000/ubuntu:v0.1

開始上傳映象至本地的私有倉庫中

# docker push <registry_ip>:<registry_port>/<image_name>:<image_tag>docker push 192.168.1.234:5000/ubuntu:v0.1
拉取映象

先將本地的 v0.1 刪掉

docker rmi 192.168.1.234:5000/ubuntu:v0.1

拉取私有倉庫中 ubuntu 的 0.1 版本映象

# docker pull <registry_ip>:<registry_port>/<image_name>:<image_tag>docker pull 192.168.1.234:5000/ubuntu:v0.1
搜尋映象

Registry 不支援透過 docker search 這種方式去搜索映象,會報 404 的錯誤

需要使用 V2 API 去查詢

列出倉庫中所有的映象
curl 192.168.1.234:5000/v2/_catalog
列出指定映象的所有標籤
# curl -X GET http://<registry_ip>:<registry_port>/v2/<image_name>/tags/listcurl 192.168.1.234:5000/v2/lxf/tags/list

先執行命令找到該映象的 digest

curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET  http://192.168.1.234:5000/v2/lxf/manifests/0.2 2>&1 | grep Docker-Content-Digest | awk '{print ($3)}'

得到輸出值

curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE http://192.168.1.234:5000/v2/lxf/manifests/sha256:4e4bc990609ed865e07afc8427c30ffdddca5153fd4e82c20d8f0783a291e241

需要在執行 Registry 容器時設定REGISTRY_STORAGE_DELETE_ENABLED 為 true

舉例

docker-compose.yaml:設定環境變數

environment:    REGISTRY_STORAGE_DELETE_ENABLED: "true"

docker run:新增引數

# -e REGISTRY_STORAGE_DELETE_ENABLED="true"docker run -d -p 5000:5000 -e REGISTRY_STORAGE_DELETE_ENABLED="true" registry
垃圾回收

執行垃圾回收,上述刪除的映象才會真正從硬碟上移除

docker exec -it registry的容器名 /bin/registry garbage-collect /etc/docker/registry/config.yml

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 什麼是NIO?NIO和BIO,AIO之間的區別是什麼?