Docker入門-搭建docker私有倉庫

小碼農薛堯發表於2019-08-17

Docker Hub

目前Docker官方維護了一個公共倉庫Docker Hub,其中已經包括了數量超過15000個映象。大部分需求都可以通過在Docker Hub中直接下載映象來使用。

註冊登入

可以在https://hub.docker.com 免費註冊一個Docker賬號。在命令列執行docker login輸入使用者名稱及密碼來完成在命令列介面登記Docker Hub。你可以通過docker logout退出登入。

Docker入門-搭建docker私有倉庫

拉取映象

可以通過docker search命令來查詢官方倉庫中的映象,並利用docker pull命令來將它下載到本地。

Docker入門-搭建docker私有倉庫

Docker入門-搭建docker私有倉庫

推送映象

使用者也可以在登入後通過docker push命令來將自己的映象推送到Docker Hub。

修改本地映象的名字為賬號名/映象名

Docker入門-搭建docker私有倉庫

上傳映象到公共倉庫

Docker入門-搭建docker私有倉庫

上傳過後,檢視遠端公共倉庫

Docker入門-搭建docker私有倉庫

私有倉庫

有時候使用Docker Hub這樣的公共倉庫可能不方便,使用者可以建立一個本地倉庫供私人使用。比如,基於公司內部專案構建的映象。 docker-registry是官方提供的工具,可以用於構建私有的映象倉庫。

安裝執行docker-registry

可以通過獲取官方registry映象來執行。預設情況下,倉庫會被建立在容器的/var/lib/registry目錄下。可以通過-v引數來將映象檔案存放在本地的指定路徑。

docker run --name registry -d  -p 5000:5000 --restart=always  -v /opt/data/registry:/var/lib/registry registry
複製程式碼

Docker入門-搭建docker私有倉庫

在私有倉庫上傳、搜尋、下載映象

建立好私有倉庫之後,就可以使用docker tag來標記一個映象,然後推送它到倉庫。先在本機檢視已有的映象。

docker image ls
複製程式碼

使用docker tag將session-web:latest這個映象標記為127.0.0.1:5000/session-web:latest格式為docker tag IMAGE[:TAG][REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

docker tag session-web:latest 127.0.0.1:5000/session-web:latest
複製程式碼

使用docker push上傳標記的映象

docker push 127.0.0.1:5000/session-web:latest
複製程式碼

Docker入門-搭建docker私有倉庫

用curl檢視倉庫中的映象

curl 127.0.0.1:5000/v2/_catlog
複製程式碼

如果可以看到{"repositories":["session-web"]},表明映象已經被成功上傳了。

Docker入門-搭建docker私有倉庫

先刪除已有映象,再嘗試從私有倉庫中下載這個映象。

docker image rm 127.0.0.1:5000/session-web:latest
docker pull 127.0.0.1:5000/session-web:latest
複製程式碼

Docker入門-搭建docker私有倉庫

注意事項

如果不想使用127.0.0.1:5000作為倉庫地址,比如想讓本網段的其他主機也能把映象推送到私有倉庫。你就得把例如192.168.1.1:5000這樣的內網地址作為私有倉庫地址,這時你會發現無法成功推送映象。

可以用下面方式解決

對於使用systemd的系統,請在/etc/docker/daemon.json中寫入如下內容(如果檔案不存在請新建該檔案)

{
    "registry-mirror":[
        "http://hub-mirror.c.163.com"
    ],
    "insecure-registries":[
        "192.168.1.1:5000"
    ]
}
複製程式碼

相關文章