2023年2月3日 星期五

自架docker registry及基礎用法

 使用情境

  • 內部進行CI/CD使用。主要透過Self-host Gitlab runner進行pipeline
  • 全部在內網進行,沒有常規的SSL可供使用
  • 透過Docker進行架設
  • 已經有內部的DNS可供使用
架設的理由是有些container還是必須寫入一些比較具有開發機密性的內容,而這些內容有些無法避免,有些則是不小心放進去。如果有內部的registry就能比較放心一些。Gitlab的registry主要是透過專案進行管理,有部分的跨專案的使用會稍微不方便。

直接使用docker進行registry架設

registry預設會把推上去的image放在映像檔中  /var/lib/registry ,希望這個位置可以在Server上的/registryt。另外使用到http的話,在節點是專一的狀況下可以直接把server上80 port給占掉,但registry是用5000 port:

sudo docker run -d -v /registry:/var/lib/registry --restart=always -p 443:5000 registry:2

這邊使用的是version 2的registry,因此後面使用的RESTful API也要使用到v2的。

無SSL狀況下使用該registry

預設的docker在推拉image時,會檢查SSL。但是目前在內網無法針對該節點進行SSL認證。因此需要把內部的節點都設定為可以對該registry進行推拉。

修改: /etc/docker/daemon.json (假設沒有這檔案就自行創建。因為這檔案只有在有設定時才會有,而一開始安裝都假設使用者沒有任何設定。)

在檔案中加入:

{
  "insecure-registries" : ["http://myregistrydomain.com"]
}

因為設定是80 port,所以後面不用加上port號碼。如果是用預設的5000,就是要用 http://myregistrydomain.com:5000 。網址跟網址之間可以透過逗號隔開。

後面記得再重啟docker:

sudo service docker restart


查詢registry狀況

預設的docker registry有RESTFul API可以使用,如果有需要可以透過curl來達成。例如要看到目前registry中的image:

curl http://192.168.71.204/v2/_catalog



references
  • https://philipzheng.gitbook.io/docker_practice/repository/local_repo
  • https://docs.docker.com/registry/insecure/
  • https://docs.docker.com/registry/spec/api/
  • https://ithelp.ithome.com.tw/articles/10191285











沒有留言:

張貼留言

iscsi 連線問題筆記

如果要進行umount但是出現target buzy sudo fuser -km 掛載點 sudo umount 掛載點 iSCSI重啟 sudo open-iscsi restart  掛載lun iscsiadm -m discovery -t sendtargets -p...