Docker容器遷移之導(dǎo)入和導(dǎo)出容器方式
Docker容器遷移導(dǎo)入和導(dǎo)出容器
因為本地物理機配置完了,所以要把服務(wù)器上的容器移到本機中,此時可以使用docker的導(dǎo)入導(dǎo)出功能,這也是docker自身提供的一個重要特征。
1、導(dǎo)出容器
導(dǎo)出容器可以導(dǎo)出一個已經(jīng)創(chuàng)建的容器到一個文件,不管容器處于什么狀態(tài),可以使用docker export 命令。
命令格式為:
docker export [-o|--output[=""]] CONTATINER
其中可以通過-o來指定導(dǎo)出的tar文件名,也可以直接通過重定向來實現(xiàn)。
看下我的容器列表:
這里我將ubuntu 的容器導(dǎo)出到文件ubuntu_run.tar中:
注:這里可以填容器的name ,也可以填容器id的前三位
另一種格式為:
docker export 容器id/name >文件名.tar
可以使用scp 指令將文件進行傳送:
scp ubuntu_run.tar root@124.207.96.94:/root/
2、導(dǎo)入容器
導(dǎo)入的文件可以使用docker import 命令導(dǎo)入變成鏡像,該命令的格式為:
docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]
其中-c 選項可以在導(dǎo)入的同時執(zhí)行對容器進行修改的Dockerfile指令(網(wǎng)絡(luò)等修改)
下面將導(dǎo)出的文件導(dǎo)入到系統(tǒng)中:
導(dǎo)入成功
另外 docker load 命令也可以導(dǎo)入一個鏡像存儲文件,但是跟docker import 命令是有區(qū)別的:
docker import
:丟棄了所有的歷史記錄和元數(shù)據(jù)信息,僅保存容器當時的快照狀態(tài)。在導(dǎo)入的時候可以重新制定標簽等元數(shù)據(jù)信息。docker load
:將保存完整記錄,體積較大。
Docker鏡像導(dǎo)出導(dǎo)入以及和容器導(dǎo)出導(dǎo)入的區(qū)別
鏡像導(dǎo)出
命令
docker save -o output.tar ID/NAME:VERSION 或 docker save > output.tar ID/NAME:VERSION
其中-o和>表示輸出到文件,output.tar為導(dǎo)出的文件的名稱(通常導(dǎo)出為.tar文件),ID為鏡像id,NAME表示鏡像名,VERSION為版本號
注意:以ID和以NAME的方式導(dǎo)出,它們在導(dǎo)入的時候的效果是不一樣的,詳細看下面導(dǎo)入的時候的演示。
eg:
C:\Users\32631>docker images REPOSITORY TAG IMAGE ID CREATED SIZE newubuntu latest d60aa43d53cf 11 minutes ago 73.9MB <none> <none> e816e4dc14d5 12 minutes ago 73.9MB ubuntu latest 4e2eef94cd6b 10 days ago 73.9MB C:\Users\32631>docker save -o outputimage.tar 4e2eef94cd6b
鏡像導(dǎo)入
命令:
docker load -i output.tar 或 docker load < output.tar
其中-i和<表示從文件輸入。會成功導(dǎo)入鏡像及相關(guān)元數(shù)據(jù),包括tag信息
eg1 :演示了導(dǎo)入前,查看現(xiàn)存的鏡像的信息,然后刪除該鏡像,再導(dǎo)入之前該鏡像以name方式被導(dǎo)出的文件,再查看現(xiàn)存的鏡像信息。
會發(fā)現(xiàn):導(dǎo)入的鏡像ID和導(dǎo)入前的鏡像ID是一樣的。
C:\Users\32631>docker images REPOSITORY TAG IMAGE ID CREATED SIZE newubuntu latest d60aa43d53cf 21 minutes ago 73.9MB C:\Users\32631>docker image rm d60aa43d53cf Untagged: newubuntu:latest Deleted: sha256:d60aa43d53cfdd69615366b5eb9bdd88f76b78648e0ca57be8851355037f7200 Deleted: sha256:d7c2a25e228ad914795f8f4f1110dcd738819461090bdb27558fc533056a187c C:\Users\32631>docker load -i outputimage1.tar d7c2a25e228a: Loading layer [==================================================>] 76.25MB/76.25MB Loaded image: newubuntu:latest C:\Users\32631>docker images REPOSITORY TAG IMAGE ID CREATED SIZE newubuntu latest d60aa43d53cf 22 minutes ago 73.9MB
eg2 :演示了以id形式導(dǎo)出的文件被導(dǎo)入后的鏡像信息:
會發(fā)現(xiàn)鏡像信息里頭缺失了name和tag的信息。
C:\Users\32631>docker images REPOSITORY TAG IMAGE ID CREATED SIZE newubuntu latest d60aa43d53cf 22 minutes ago 73.9MB C:\Users\32631>docker load -i outputimage.tar 2ce3c188c38d: Loading layer [==================================================>] 75.23MB/75.23MB ad44aa179b33: Loading layer [==================================================>] 1.011MB/1.011MB 35a91a75d24b: Loading layer [==================================================>] 15.36kB/15.36kB a4399aeb9a0e: Loading layer [==================================================>] 3.072kB/3.072kB Loaded image ID: sha256:4e2eef94cd6b93dd4d794c18b45c763f72edc22858e0da5b6e63a4566a54c03c C:\Users\32631>docker images REPOSITORY TAG IMAGE ID CREATED SIZE newubuntu latest d60aa43d53cf 23 minutes ago 73.9MB <none> <none> 4e2eef94cd6b 10 days ago 73.9MB
容器導(dǎo)入導(dǎo)出和鏡像導(dǎo)入導(dǎo)出的區(qū)別
1、export命令導(dǎo)出的tar文件略小于save命令導(dǎo)出的
2、export命令是從容器(container)中導(dǎo)出tar文件,而save命令則是從鏡像(images)中導(dǎo)出
3、基于第二點,export導(dǎo)出的文件再import回去時,無法保留鏡像所有歷史(即每一層layer信息,這塊內(nèi)容在講解Dockerfile的時候會細說),不能進行回滾操作;而save是依據(jù)鏡像來的,所以導(dǎo)入時可以完整保留下每一層layer信息。通過命令docker history name:tag可以查看
建議
可以依據(jù)具體使用場景來選擇命令
若是只想備份images,使用save、load即可
若是在啟動容器后,容器內(nèi)容有變化,需要備份,則使用export、import
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用
這篇文章主要為大家介紹了Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08Docker部署Tomcat及Web應(yīng)用的實現(xiàn)
這篇文章主要介紹了Docker部署Tomcat及Web應(yīng)用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09解決docker 容器設(shè)置中文語言包出現(xiàn)的問題
這篇文章主要介紹了解決docker 容器設(shè)置中文語言包出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03docker容器通信參數(shù)使用及l(fā)ink參數(shù)介紹
這篇文章主要介紹了docker容器通信參數(shù)使用及l(fā)ink參數(shù)介紹,link的原理就是在/etc/hosts里面添加了一個alias的名稱,本文通過案例分析給大家詳細講解,需要的朋友可以參考下2022-09-09docker安裝rocketMQ和安裝過程中出現(xiàn)問題的解決
本文主要介紹了docker安裝rocketMQ和安裝過程中出現(xiàn)問題的解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12