docker images本地遷移的實現(xiàn)
最近在學(xué)習(xí)docker,經(jīng)常遇到的一個問題是,在下載docker image的時候,由于眾所周知的網(wǎng)絡(luò)原因?qū)е率?,雖然網(wǎng)上也有很多解決方案,比如使用Docker Hub Mirror 之類的國內(nèi)鏡像服務(wù),不過由于個人原因(僥幸有一臺國外的VM),我更傾向于不通過docker registry共享下載的image。
問題很明確:
不通過docker registry,將A機(jī)器上的docker image共享給其他機(jī)器,即docker鏡像本地遷移。
方案也很簡單:
使用docker的save 和 load命令, 具體步驟如下
1.在A機(jī)器上列出所有的docker image,并找到你要保存的image名
sudo docker images
2.在A機(jī)器上使用docker save命令,保存image為tar文件
sudo docker save image_name -o file_path
其中,image_name替換為第一步里找到的要保存的image名。file_path是導(dǎo)出的tar文件路徑,比如/home/tmp/image1.tar
3.將導(dǎo)出的image tar文件傳到其他機(jī)器,如機(jī)器B??梢允褂酶鞣N方式,比如scp之類的,在這里不詳述了。
4.在需要使用image的機(jī)器上(如B機(jī)器)使用docker load命令加載image tar文件
sudo docker load -i file_path
注:另外,也可以使用docker 的export和import命令實現(xiàn)類似功能,關(guān)于export/save, import/load的區(qū)別,可以自己上網(wǎng)查,在此不做展開了。
基本區(qū)別就是export出來的是容器(無歷史和層信息),而save出來的是image(具有完整的歷史和層信息,支持層回滾)
補(bǔ)充:Docker的鏡像的備份與遷移
第一步:
使用docker ps -a命令查看所有的容器
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9505a10e6d29 nginx "nginx -g 'daemon of…" 34 minutes ago Exited (0) 8 minutes ago mynginx 4c89fff9ac8c mysql:5.6 "docker-entrypoint.s…" 11 days ago Exited (0) 11 days ago mymysql 0abefefe2592 centos "/bin/bash" 2 months ago Exited (255) 12 days ago mycentos
第二步:
容器保存為對象,docker commit 容器名 要保存的名字
[root@localhost conf]# docker commit mynginx mynginx_backup sha256:a6ca067596a2c319ddcdc9592afa9a7e9be4c157959c0327214d3e577333ed3a
第三步:
查看剛才保存的鏡像
[root@localhost conf]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mynginx_backup latest a6ca067596a2 19 seconds ago 109MB
第四步:
鏡像備份(保存為tar文件),docker save -o 容器名.tar 要保存的名字
[root@localhost ~]# docker save -o mynginx.tar mynginx_backup
第五步:
查看當(dāng)前目錄
[root@localhost ~]# ls anaconda-ks.cfg conf data initial-setup-ks.cfg java logs mynginx.tar original-ks.cfg
第六步:
刪除原來的鏡像并查看
[root@localhost ~]# docker rmi mynginx_backup Untagged: mynginx_backup:latest Deleted: sha256:a6ca067596a2c319ddcdc9592afa9a7e9be4c157959c0327214d3e577333ed3a Deleted: sha256:facd3b28655186bdc7349bc017557ed80f94155831a8a3ed936f498e2f5b6b1c [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
第七步:
鏡像恢復(fù),docker load -i 打包好的容器的文件名.tar
[root@localhost ~]# docker load -i mynginx.tar ea4399e4dbe6: Loading layer [==================================================>] 6.656kB/6.656kB Loaded image: mynginx_backup:latest [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mynginx_backup latest a6ca067596a2 7 minutes ago 109MB
第八步:
使用該鏡像創(chuàng)建容器
[root@localhost ~]# docker run --name mynginx2 -p 80:80 -d mynginx_backup a4809747f3c233d5a8f0c35542449adda10c06305f32c32a55e4842630212760
第九步:
瀏覽器輸入ip地址,看是否成功
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Docker使用Git實現(xiàn)Jenkins發(fā)布、測試項目的詳細(xì)流程
這篇文章主要介紹了Docker使用Git實現(xiàn)Jenkins發(fā)布、測試項目的詳細(xì)流程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04docker中使用mysql數(shù)據(jù)庫詳解(在局域網(wǎng)訪問)
這篇文章主要給大家介紹了在docker中使用mysql數(shù)據(jù)庫,在局域網(wǎng)訪問的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06Docker中如何通過docker-compose部署ELK
Docker?Compose適用于不同的操作系統(tǒng)和云平臺,這篇文章主要介紹了Docker中如何通過docker-compose部署ELK,需要的朋友可以參考下2024-05-05docker prune命令定時清理不常用數(shù)據(jù)的操作方法
使用docker引擎服務(wù)時間久了,會發(fā)現(xiàn)磁盤空間越來越大,現(xiàn)在要刪除關(guān)于docker相關(guān)不用的數(shù)據(jù)來釋放磁盤空間,這篇文章主要介紹了docker prune命令 可定時清理不常用數(shù)據(jù),需要的朋友可以參考下2022-10-10Centos8安裝docker報錯(錯誤提示:All?mirrors?were?tried)的問題
最近總是遇到“All?mirrors?were?tried”的報錯信息,沒辦法,就rm?-rf?/etc/yum.repos.d/*?全部!刪了,下面小編通過本文給大家介紹下Centos8安裝docker報錯(錯誤提示:All?mirrors?were?tried)的問題及解決過程,感興趣的朋友一起看看吧2022-03-03在Linux?Docker中部署RStudio?Server實現(xiàn)遠(yuǎn)程訪問的操作
下面介紹在Linux?docker中安裝RStudio?Server并結(jié)合cpolar內(nèi)網(wǎng)穿透工具,實現(xiàn)遠(yuǎn)程訪問,docker方式安裝可以避免很多問題,一鍵安裝,如設(shè)備沒有安裝docker,需提前安裝docker,對?Docker部署RStudio?Server相關(guān)知識感興趣的朋友一起看看吧2023-12-12