Docker容器迁移之导入和导出容器方式

2023-12-01 0 793
目录
  • Docker容器迁移导入和导出容器
    • 1、导出容器
    • 2、导入容器
  • Docker镜像导出导入以及和容器导出导入的区别
    • 镜像导出
    • 镜像导入
    • 容器导入导出和镜像导入导出的区别
  • 总结

    Docker容器迁移导入和导出容器

    因为本地物理机配置完了,所以要把服务器上的容器移到本机中,此时可以使用docker的导入导出功能,这也是docker自身提供的一个重要特征。

    1、导出容器

    导出容器可以导出一个已经创建的容器到一个文件,不管容器处于什么状态,可以使用docker export 命令。

    命令格式为:

    docker export [-o|–output[=\”\”]] CONTATINER

    其中可以通过-o来指定导出的tar文件名,也可以直接通过重定向来实现。

    看下我的容器列表:

    Docker容器迁移之导入和导出容器方式

    这里我将ubuntu 的容器导出到文件ubuntu_run.tar中:

    Docker容器迁移之导入和导出容器方式

    注:这里可以填容器的name ,也可以填容器id的前三位

    另一种格式为:

    docker export 容器id/name >文件名.tar

    可以使用scp 指令将文件进行传送:

    scp ubuntu_run.tar root@124.207.96.94:/root/

    2、导入容器

    导入的文件可以使用docker import 命令导入变成镜像,该命令的格式为:

    docker import [-c|–change[=[]]] [-m|–message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]

    其中-c 选项可以在导入的同时执行对容器进行修改的Dockerfile指令(网络等修改)

    下面将导出的文件导入到系统中:

    Docker容器迁移之导入和导出容器方式

    导入成功

    另外 docker load 命令也可以导入一个镜像存储文件,但是跟docker import 命令是有区别的:

    • docker import:丢弃了所有的历史记录和元数据信息,仅保存容器当时的快照状态。在导入的时候可以重新制定标签等元数据信息。
    • docker load:将保存完整记录,体积较大。

    Docker镜像导出导入以及和容器导出导入的区别

    镜像导出

    命令

    docker save -o output.tar ID/NAME:VERSION

    docker save > output.tar ID/NAME:VERSION

    其中-o和>表示输出到文件,output.tar为导出的文件的名称(通常导出为.tar文件),ID为镜像id,NAME表示镜像名,VERSION为版本号

    注意:以ID和以NAME的方式导出,它们在导入的时候的效果是不一样的,详细看下面导入的时候的演示。

    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

    Docker容器迁移之导入和导出容器方式

    镜像导入

    命令:

    docker load -i output.tar

    docker load < output.tar

    其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

    eg1 :演示了导入前,查看现存的镜像的信息,然后删除该镜像,再导入之前该镜像以name方式被导出的文件,再查看现存的镜像信息。

    会发现:导入的镜像ID和导入前的镜像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形式导出的文件被导入后的镜像信息:

    会发现镜像信息里头缺失了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

    容器导入导出和镜像导入导出的区别

    1、export命令导出的tar文件略小于save命令导出的

    2、export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出

    3、基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,这块内容在讲解Dockerfile的时候会细说),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。通过命令docker history name:tag可以查看

    建议

    可以依据具体使用场景来选择命令

    若是只想备份images,使用save、load即可

    若是在启动容器后,容器内容有变化,需要备份,则使用export、import

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Linux服务器 Docker容器迁移之导入和导出容器方式 https://www.u-9.cn/server/linux/2735.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务