Docker如何建立私有倉庫Private Registry

本篇結合了Docker官網架設私人映像庫的文件以及一些個人經驗,希望能夠幫助想要在自己地端架設私有映像庫的人能夠更順利地架設起來。

為什麼要在本地端建立私有映像倉庫

在本地端建立私有的Registry有以下好處:

  1. 私有的Registry更安全,可以透過授權來控制誰可以訪問
  2. 速度,在本地端的私有Registry透過內網Pull的速度更快

如何在本地端建立Registry

docker run -d -p 5000:5000 --restart=always --name registry registry:2

對不用懷疑,Private Server靠這一行就可以建起來囉,反而是在Client的上傳或是下載會稍微多點步驟。

如何上傳到私有庫

  1. 找到你的Container ID
docker ps -a

透過這個指令找到你對應的Container ID之後,最左邊的亂數就是Container的ID,記住這個ID。

  1. 打包正在Run的Container
docker container commit {你的container ID} {設定的Image名稱}:{版本}
# Example
# docker container commit f59e3780aa7b tensorflow:v1
  1. 將Registry建立到Insecure清單

    官方其實建議私有的Docker Registry要使用TLS協議,但這協議大部分是需要花錢的,不過我們可以透過設定來告訴Docker這個Registry是我可以相信的,透過編輯/etc/docker/daemon.json,加入:

    {
        "insecure-registries":["{ip}:{port}"]
    }
    
  2. 將Image連結到遠端的Registry

    假設192.168.53.2是Server的IP,建立在Port 5000上面。

    docker tag {設定的Image名稱}:{版本} {Private Registry IP}:{Port}/{在Registry的        
    映像名稱}
    # Example
    docker tag tensorflow:v1 192.168.53.2:5000/my-tensorflow
    
  3. 將image推至私有倉庫

    docker push {Private Registry IP}:{Port}/{在Registry的映像名稱}
    # Example
    docker push 192.168.53.2:5000/my-tensorflow
    

從遠端私有庫拉取映像檔

```bash
docker pull {Private Registry IP}:{Port}/{在Registry的映像名稱}
# Example
docker pull 192.168.53.2:5000/my-tensorflow
```

查看Private Registry有哪些映像檔

```bash
curl -X GET {Private Registry IP}:{Port}/v2/_catalog
# Example
curl -X GET 192.168.53.2:5000/v2/_catalog
```

就這樣拉,上述的紀錄如有問題,可以再到FB或是IG私訊我哦!

Docker相關文章閱讀

Docker課程推薦

如果Docker在你的工作環境需要長時間使用的,或是你對於虛擬化容器的技術有興趣,我推薦Maximilian在Udemy教學網站上面的課程有一個多小時的免費預覽,特價時只需要三百多台幣,就可以有20多個小時的學習內容,可以學到最新的容器化技術。

歡迎留言分享你/妳的看法唷😀