1. 程式人生 > >docker 從公共倉庫拉取,並上傳到私有倉庫

docker 從公共倉庫拉取,並上傳到私有倉庫

主要流程

1.使用一臺既能連通私有倉庫harbor又能連通外網的主機,並安裝上docker。

2.拉去映象 docker pull [選項] [Docker Registry 地址[:埠號]/]倉庫名[:標籤]

方法一:” docker pull 映象地址:tag”

docker pull gcr.io/istio-release/pilot:1.0.0

方法二 :”docker pull 映象地址:映象名稱”

docker pull gcr.io/istio-release/pilot@sha256:f3a834841bfa2879900c849b3d8398b584950aa5f61fc1061a03ed6d5a3f5805

如何僅僅是使用”docker pull gcr.io/istio-release/pilot” 預設是拉取tag為latest的映象包

docker@default:~$ docker pull gcr.io/istio-release/pilot
Using default tag: latest

3.將拉去下來的映象重新打上tag(gcr.io表示映象的Docker的Registry地址,10.255.1.25是使用的私有倉庫的地址)

docker tag gcr.io/istio-release/pilot:1.0.0  10.255.1.25/istio-release/pilot:1.0
.0

可以通過 docker images命令 檢視本docker擁有的映象

4 push 到私有倉庫
client與Registry互動,為了安全,預設將採用https訪問, 但我們在搭建私有倉庫時並未配置指定任何tls相關的key和crt檔案,https訪問定然失敗。所以直接

  docker push 10.255.1.25/istio-release/pilot:1.0.0

是無法將這個映象push到私有倉庫的。需要在docker的配置檔案/etc/docker/daemon.json (沒有的話需要新建)中增加 “insecure-registries“引數配置

#啟用不安全的登錄檔
{ "insecure-registries" : ["10.255.1.25"] }

啟用不安全的登錄檔後,Docker將執行以下步驟: 首先,嘗試使用HTTPS。 如果HTTPS可用但證書無效,請忽略有關證書的錯誤。 如果HTTPS不可用,會回退到HTTP
重新載入配置檔案,重啟docker服務使配置生效

#systemctl daemon-reload 
#systemctl resatrt docker

登入到私有docker

docker login 10.255.1.25 
//...輸入使用者名稱
//....密碼

或則直接如下命令來登入
docker login -u username -p password  RegistryIp

登入成功後 再執行push

docker push 10.255.1.25/istio-release/pilot:1.0.0

備註:使用docker tag更改標籤帶上了映象倉庫地址,原來的gcr.io更改為10.255.1.25,所以在使用映象時,也要將原來的gcr.io/istio-release/pilot:1.0.0變為10.255.1.25/istio-release/pilot:1.0.0 不然還是會從gcr.io倉庫拉去映象。

docker save and docker load

Docker 還提供了 docker load 和 docker save 命令,用以將映象儲存為一個 tar 檔案,然後傳輸到另一個位置上,再載入進來。這是在沒有 Docker Registry 時的做法,現在已經不推薦,映象遷移應該直接使用 Docker Registry,無論是直接使用 Docker Hub 還是使用內網私有 Registry 都可以。這種方式可以用來在再無法聯網的情況下部署。詳細見
docker save and docker load
save and load 批量指令碼