沒有Docker倉庫還能分發鏡像嗎?

導入與導出

首先明確的是建議優先使用Docker倉庫,特別是對於Docker集羣而言 Docker倉庫非常重要,但是某些應用場景下比如單機環境下使用docker-compse編排應用,如果沒有鏡像倉庫是不是就不能把docker鏡像分發給其它的主機了呢?

答案是否定的,對於這種單機或者小規模環境,我們可以使用 docker savedocker load 命令來完成鏡像的分發,甚至通過Linux SSH與管道技術相結合,只需要一條命令可以直接把鏡像分發給目標主機。

總而言之當遇到上述環境而且沒有鏡像倉庫時,需要把一臺機器上的鏡像拷貝到另一臺機器,試試 docker save 與 docker load 命令吧。

舉個栗子

  • HOST A 導出並壓縮docker 鏡像

    docker save  centos | gzip > img-centos.tar.gz
    scp img-centos.tar.gz root@hostb:/root/
  • HOST B 導入鏡像

    gzip -dc img-centos.tar.gz | docker load
  • 批量操作
    如果你需要批量導出/導入鏡像,可以結合shell 命令與管道完成。

    批量導出

    for i in `docker images | awk '/irm/ {print $3}'`;do echo $i ; docker save $i | gzip > ${i}.gz ;sleep 2 ;done

    其中awk 匹配鏡像名稱的關鍵字,print $3 輸出第三個字段也就是鏡像ID。

    批量導入

    for i in `ls`; do echo $i; gzip -dc $i | docker load ; sleep 5;done

命令幫助

  • save 命令
    沒有Docker倉庫還能分發鏡像嗎?

  • load命令
    沒有Docker倉庫還能分發鏡像嗎?

擴展

結合 ssh 與 pv 命令的話,利用 Linux強大的管道,只用一個命令完成從一個機器將鏡像分發到另一臺機器。

沒有Docker倉庫還能分發鏡像嗎?

注意 pv 命令用於顯示進度條,你可能需要單獨安裝這個命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章