Docker容器遷移之導(dǎo)入和導(dǎo)出容器方式
Docker容器遷移導(dǎo)入和導(dǎo)出容器
因?yàn)楸镜匚锢頇C(jī)配置完了,所以要把服務(wù)器上的容器移到本機(jī)中,此時(shí)可以使用docker的導(dǎo)入導(dǎo)出功能,這也是docker自身提供的一個(gè)重要特征。
1、導(dǎo)出容器
導(dǎo)出容器可以導(dǎo)出一個(gè)已經(jīng)創(chuàng)建的容器到一個(gè)文件,不管容器處于什么狀態(tài),可以使用docker export 命令。
命令格式為:
docker export [-o|--output[=""]] CONTATINER
其中可以通過(guò)-o來(lái)指定導(dǎo)出的tar文件名,也可以直接通過(guò)重定向來(lái)實(shí)現(xiàn)。
看下我的容器列表:
這里我將ubuntu 的容器導(dǎo)出到文件ubuntu_run.tar中:
注:這里可以填容器的name ,也可以填容器id的前三位
另一種格式為:
docker export 容器id/name >文件名.tar
可以使用scp 指令將文件進(jìn)行傳送:
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 選項(xiàng)可以在導(dǎo)入的同時(shí)執(zhí)行對(duì)容器進(jìn)行修改的Dockerfile指令(網(wǎng)絡(luò)等修改)
下面將導(dǎo)出的文件導(dǎo)入到系統(tǒng)中:
導(dǎo)入成功
另外 docker load 命令也可以導(dǎo)入一個(gè)鏡像存儲(chǔ)文件,但是跟docker import 命令是有區(qū)別的:
docker import
:丟棄了所有的歷史記錄和元數(shù)據(jù)信息,僅保存容器當(dāng)時(shí)的快照狀態(tài)。在導(dǎo)入的時(shí)候可以重新制定標(biā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為版本號(hào)
注意:以ID和以NAME的方式導(dǎo)出,它們?cè)趯?dǎo)入的時(shí)候的效果是不一樣的,詳細(xì)看下面導(dǎo)入的時(shí)候的演示。
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和<表示從文件輸入。會(huì)成功導(dǎo)入鏡像及相關(guān)元數(shù)據(jù),包括tag信息
eg1 :演示了導(dǎo)入前,查看現(xiàn)存的鏡像的信息,然后刪除該鏡像,再導(dǎo)入之前該鏡像以name方式被導(dǎo)出的文件,再查看現(xiàn)存的鏡像信息。
會(huì)發(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)入后的鏡像信息:
會(huì)發(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、基于第二點(diǎn),export導(dǎo)出的文件再import回去時(shí),無(wú)法保留鏡像所有歷史(即每一層layer信息,這塊內(nèi)容在講解Dockerfile的時(shí)候會(huì)細(xì)說(shuō)),不能進(jìn)行回滾操作;而save是依據(jù)鏡像來(lái)的,所以導(dǎo)入時(shí)可以完整保留下每一層layer信息。通過(guò)命令docker history name:tag可以查看
建議
可以依據(jù)具體使用場(chǎng)景來(lái)選擇命令
若是只想備份images,使用save、load即可
若是在啟動(dòng)容器后,容器內(nèi)容有變化,需要備份,則使用export、import
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用
這篇文章主要為大家介紹了Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08docker私有倉(cāng)庫(kù)harbor搭建過(guò)程
這篇文章主要介紹了docker私有倉(cāng)庫(kù)harbor搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Docker部署Tomcat及Web應(yīng)用的實(shí)現(xiàn)
這篇文章主要介紹了Docker部署Tomcat及Web應(yīng)用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09解決docker 容器設(shè)置中文語(yǔ)言包出現(xiàn)的問(wèn)題
這篇文章主要介紹了解決docker 容器設(shè)置中文語(yǔ)言包出現(xiàn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03docker容器通信參數(shù)使用及l(fā)ink參數(shù)介紹
這篇文章主要介紹了docker容器通信參數(shù)使用及l(fā)ink參數(shù)介紹,link的原理就是在/etc/hosts里面添加了一個(gè)alias的名稱,本文通過(guò)案例分析給大家詳細(xì)講解,需要的朋友可以參考下2022-09-09docker安裝rocketMQ和安裝過(guò)程中出現(xiàn)問(wèn)題的解決
本文主要介紹了docker安裝rocketMQ和安裝過(guò)程中出現(xiàn)問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12