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 批量指令碼