Docker Hub
目前Docker官方維護了一個公共倉庫Docker Hub,其中已經包括了數量超過15000個鏡像。大部分需求都可以通過在Docker Hub中直接下載下傳鏡像來使用。
注冊登入
可以在
https://hub.docker.com免費注冊一個Docker賬号。在指令行執行docker login輸入使用者名及密碼來完成在指令行界面登記Docker Hub。你可以通過docker logout登出。
拉取鏡像
可以通過docker search指令來查找官方倉庫中的鏡像,并利用docker pull指令來将它下載下傳到本地。
推送鏡像
使用者也可以在登入後通過docker push指令來将自己的鏡像推送到Docker Hub。
修改本地鏡像的名字為賬号名/鏡像名
上傳鏡像到公共倉庫
上傳過後,檢視遠端公共倉庫
私有倉庫
有時候使用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 tag來标記一個鏡像,然後推送它到倉庫。先在本機檢視已有的鏡像。
docker image ls
使用docker tag将session-web:latest這個鏡像标記為127.0.0.1:5000/session-web:latest格式為docker tag IMAGE:TAG/]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
用curl檢視倉庫中的鏡像
curl 127.0.0.1:5000/v2/_catlog
如果可以看到{"repositories":["session-web"]},表明鏡像已經被成功上傳了。
先删除已有鏡像,再嘗試從私有倉庫中下載下傳這個鏡像。
docker image rm 127.0.0.1:5000/session-web:latest
docker pull 127.0.0.1:5000/session-web:latest
注意事項
如果不想使用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"
]
}