日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

我的docker随笔38:用 registry 搭建私有仓库

發布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我的docker随笔38:用 registry 搭建私有仓库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文涉及一種在服務器部使用 registry 署私有鏡像倉庫的方法。經驗證,可達到預期目標,并能應用在實際工作中。

一、引言

由于測試服務器無法使用外部網絡,而又需要容器化部署應用程序。經考慮,使用 registry 搭建 docker 鏡像倉庫服務。當然,能提供類似的軟件很多,功能也比較強大,但時間緊任務重,使用最簡單的方式即可。

二、技術小結

  • 拉取 registry 鏡像。
  • 運行 registry 容器,注意掛載目錄。
  • 編輯daemon.json文件,添加倉庫地址。

三、實踐

3.1 下載、運行

拉取registry鏡像:

docker pull registry:2

注:

實際操作中,因為服務器無法連接外部網絡,因為是先在虛擬機下載好鏡像,再通過docker save導出鏡像,再用scp上傳到服務器,再用docker load導入到服務器,完成“下載”動作。

新建工程目錄,用于存儲配置文件及數據文件。

新建config.yml配置文件:

version: 0.1 log:fields:service: registry storage:delete:enabled: truecache:blobdescriptor: inmemoryfilesystem:rootdirectory: /var/lib/registry http:addr: :5000headers:X-Content-Type-Options: [nosniff] health:storagedriver:enabled: trueinterval: 10sthreshold: 3

注:上述config.yml文件實際是筆者啟動容器后,直接取 /etc/docker/registry/config.yml 文件內容的,因為要加配置,所以單獨拿出掛載。

上述文件加了刪除使能配置。

docker-compose.yaml配置文件:

version: '2'services:ttregistry:image: registry:2container_name: ttregistryrestart: alwaysvolumes:- ./registry_data:/var/lib/registry- ./config.yml:/etc/docker/registry/config.yml environment:- TZ=Asia/Shanghaiports:- "5000:5000"networks:- registry-netnetworks:registry-net:driver: bridge

啟動:

docker-compose up -d

3.2 配置倉庫地址

因為本文registry沒有配置https模式,而docker命令默認是該模式,因此需要設置非安全倉庫地址。在daemon.json 中添加,示例:

$ cat /etc/docker/daemon.json {"registry-mirrors": ["https://a8qh6yqv.mirror.aliyuncs.com","http://hub-mirror.c.163.com"],"insecure-registries": ["http://172.18.18.168:5000"] }

不管推送鏡像還是拉取鏡像,都可能遇到此問題。因此,都要在相應的機器上進行設置。

設置好后,需要重啟docker服務:

sudo systemctl restart docker

如不配置,則在推送或拉取鏡像出錯,示例:

Using default tag: latest Error response from daemon: Get https://172.18.18.168:5000/v2/: http: server gave HTTP response to HTTPS client

3.3 測試

拉取官方鏡像

docker pull busybox

需要將鏡像打上標簽,否則默認上傳到 docker 官方倉庫。

#標記鏡像 $ docker tag busybox 172.18.18.168:5000/busybox

推送鏡像到私有倉庫

$ docker push 172.18.18.168:5000/busybox Using default tag: latest The push refers to repository [172.18.18.168:5000/busybox] 01fd6df81c8e: Pushed latest: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527

在另一機器上嘗試拉取:

docker pull 172.18.18.168:5000/busybox

四、操作

4.1 接口

訪問:http://172.18.18.168:5000/v2/,顯示{},說明服務運行正常。

查詢有哪些鏡像:http://172.18.18.168:5000/v2/_catalog

查詢某個鏡像的版本:http://172.18.18.168:5000/v2/busybox/tags/list

4.2 命令

4.2.1 獲取鏡像信息

curl -H "Accept:application/vnd.docker.distribution.manifest.v2+json" http://172.18.18.168:5000/v2/<鏡像名稱>/manifests/<鏡像版本>

示例:

$curl -H "Accept:application/vnd.docker.distribution.manifest.v2+json" http://172.18.18.168:5000/v2/busybox/manifests/latest{"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1456,"digest": "sha256:beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 772788,"digest": "sha256:5cc84ad355aaa64f46ea9c7bbcc319a9d808ab15088a27209c9e70ef86e5a2aa"}] }

注:

如果curl沒有加-H字段,得到的結果較亂,不太方便分析,因此加上。

在瀏覽器直接訪問亦可,但筆者測試發現,要下載文件再分析,故不采用。

4.2.2 刪除鏡像(測試不成功)

刪除鏡像需指定digest值,從獲取鏡像信息的config字段中找到即可。命令:

curl -X DELETE http://172.18.18.168:5000/v2/<鏡像>/manifests/sha256:<config字段的digest值>

示例:

curl -X DELETE http://172.18.18.168:5000/v2/busybox/manifests/sha256:beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a

垃圾回收:

docker exec -it ttregistry bin/registry garbage-collect /etc/docker/registry/config.yml

4.2.3 刪除鏡像另一法(有效)

些法是直接在物理層面刪除,通過重啟服務方式徹底刪除。可不用上面配置delete功能。

刪除存儲卷上的鏡像:

rm -rf registry_data/docker/registry/v2/repositories/busybox/

執行垃圾回收。

重啟registry容器。

五、小結

本著適目的(其實是時間不足),本文僅使用 registry 即能達到目標,因此不再繼續研究 Harbor 等高端的服務,日后如有必要,再進行亦未晚。實際上,筆者對 Harbor 也有接觸,那時有雄心有干勁(掙錢),但那是很多年前的事了。

李遲 2022.10.20 周四 夜

總結

以上是生活随笔為你收集整理的我的docker随笔38:用 registry 搭建私有仓库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。