docker 本地保存镜像方法--docker export 和docker save 使用介绍

这篇具有很好参考价值的文章主要介绍了docker 本地保存镜像方法--docker export 和docker save 使用介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在很多环境中,由于网络问题,无法docker pull 镜像,就需要tar包方式获取镜像,以下就制作tar包的方式和区别加以介绍:

一、docker commit && docker save && docker load 保存容器内容为镜像

docker run -itd redis:6.0.16 /bin/bash
721156a2acb38fc8391c36c409c9cb6ab8942fcda78a828af2e32b9c5b842612

docker commit 721156a2acb38fc8391c3 redis_use
sha256:6044d3a75a1706d67b5e49650ca749aa1dfc3ed95bc8f44043d9d0d0c2bdc971


docker save -o redis_use.tar redis_use

docker save -o redis_test.tar redis_use

ll
total 112676
-rw------- 1 root root 115378688 Nov  7 11:18 redis_test.tar

# 把tar 包发送到其他机器加载

docker load -i redis_test.tar 
3070f050ae24: Loading layer [==================================================>]  4.096kB/4.096kB
Loaded image: redis_use:latest


docker images | grep redis
redis_use       latest     6044d3a75a17        16 minutes ago      112MB

如果要定义tag,如下操作

docker run -itd redis:6.0.16 /bin/bash
acd739e8fead16c20e553dc916440054c03c3e44ad40b020db1391aaa94e7a99

docker commit acd739e8fead16c20e553 redis_use:v1
sha256:46e1e86e2562b227c3ced13c7c5e97af0d0321d6b4a10a224a416f753515d1cf

docker save -o redis_use_v1.tar redis_use:v1
 
# 把tar 包发送到其他机器加载
 
docker load -i redis_use_v1.tar 
1d2d823b0f8c: Loading layer [==================================================>]  4.096kB/4.096kB
Loaded image: redis_use:v1

docker images | grep redis
redis_use       v1         46e1e86e2562        10 minutes ago      112MB

二、docker export && docker import 保存容器内容为镜像

docker run -itd redis:6.0.16 /bin/bash
7cbed6522d8a0e7f4d0b85b069cd199c70401d3d4a650347e7d6b51280503a02

docker export -o redis_use_v2.tar 7cbed6522d8a0e7f4d0b85


docker import redis_use_v2.tar redis:v2
sha256:a78a9f22b085edae03eb1248a6e84d82ff6ed0ed353446e3af4cd2fe182b5b79

docker images | grep redis
redis           v2         a78a9f22b085        5 seconds ago       108MB

三、异常情况

3.1、docker import docker save的包

docker import redis_use_v1.tar redis:v1
sha256:f079d70bb557518c9f7215f80720c4a9b13a48fe728c86dfb6800c015f7b9389

docker images | grep redis
redis           v1         f079d70bb557        4 seconds ago        115MB

#可以加载,但是没有办法使用
docker run -itd redis:v1 /bin/bash
d48784a1618cc7c03c6571bec6c1ecb1cd9905adcfec18ff105a8da63a9512aa
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown.


docker inspect redis:v1
[
    {
        "Id": "sha256:f079d70bb557518c9f7215f80720c4a9b13a48fe728c86dfb6800c015f7b9389",
        "RepoTags": [
            "redis:v1"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "Imported from -",
        "Created": "2022-11-07T07:06:39.683003465Z",
        "Container": "",
        "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": null,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "DockerVersion": "18.09.9",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": null,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 115356256,
        "VirtualSize": 115356256,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/iso2/root/var/lib/docker/overlay2/ac95e2b15114808fa46c93855f1edbd8d7dc1972421482f2f7e392993ce25604/merged",
                "UpperDir": "/iso2/root/var/lib/docker/overlay2/ac95e2b15114808fa46c93855f1edbd8d7dc1972421482f2f7e392993ce25604/diff",
                "WorkDir": "/iso2/root/var/lib/docker/overlay2/ac95e2b15114808fa46c93855f1edbd8d7dc1972421482f2f7e392993ce25604/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:9df4129a40789ea469a97ec538470791e9c9a531c514f02f9188ec3ac145ef93"
            ]
        },
        "Metadata": {
            "LastTagTime": "2022-11-07T15:06:39.695859731+08:00"
        }
    }
]

# 可以看到没有镜像元信息,无法使用

3.2、docker load docker export 的包

docker load -i redis_use_v2.tar 
open /iso2/root/var/lib/docker/tmp/docker-import-109823248/bin/json: no such file or directory

# 报错

四、docker save 和docker export 区别总结

docker save 保存镜像为镜像文件,使用docker load 加载,docker export 保存容器为镜像文件,使用docker import 加载
docker commit 与docker save结合,也可实现导出容器为镜像文件
docker export 导出的镜像是不带历史记录的,导入后镜像变为一层,docker commit 会保留原有镜像层,经过commit后增加一层
docker exportdocker save的包要小,原因是save的是一个分层的文件系统,export导出的只是一层文件系统

五、docker load 和docker import 区别总结

docker load 加载docker save 保存的镜像,docker import 加载docker export保存的镜像
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称

六、参考文档

1、https://blog.csdn.net/Wqr_18390921824/article/details/123083151

2、https://blog.csdn.net/JineD/article/details/118761569

3、https://m.php.cn/article/452245.html文章来源地址https://www.toymoban.com/news/detail-717576.html

到了这里,关于docker 本地保存镜像方法--docker export 和docker save 使用介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker save和docker export区别

    两者区别: 一、导出镜像: docker save 命令 导出一个或多个镜像到文件, 对应导入命令为docker load docker save -o image.tar image1:v1 例: 将kuboard镜像打包至/tmp目录下, 不指定目录默认导出到当前目录 : 使用 docker load 命令进行镜像导入 二、导出容器 docker export 命令 导出容器当前

    2024年02月05日
    浏览(17)
  • Docker保存镜像到本地并载入本地镜像文件

    目录 一、适用情况 二、镜像保存到本机  1、查看已有的镜像文件 2、将镜像保存为本地文件 保存指令一 保存指令二 测试根据镜像ID保存镜像 三、载入本地镜像 载入指令一 载入指令二 载入通过镜像ID保存的本地镜像 四、批量保存和载入镜像脚本 批量保存镜像到本地脚本

    2024年02月13日
    浏览(26)
  • Docker将镜像保存到本地

    Docker是一种流行的容器化平台,它能够简化应用程序的部署和管理过程。在使用Docker时,镜像是一个关键概念,它包含了应用程序运行所需的所有依赖项。本文将介绍如何将Docker镜像保存到本地。 拉取镜像 首先,我们需要从Docker Hub或其他可用的镜像仓库中拉取需要保存的镜

    2024年02月06日
    浏览(27)
  • 将 docker 镜像保存到本地

     1.       使用vscode 链接容器  2.        3.     4.      5.      6. 将生成的tar包拉到本地文件夹就好了也可以用 命令  

    2024年02月12日
    浏览(24)
  • Docker(三)使用 Docker 镜像:从仓库获取镜像;管理本地主机上的镜像;介绍镜像实现的基本原理

    作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 在之前的介绍中,我们知道镜像是 Docker 的三大组件之一。 Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 本章将介绍更多关于镜

    2024年01月20日
    浏览(29)
  • dockers镜像传输:docker save和docker load命令的使用

    docker save 和 docker load 是用于导出和导入Docker镜像的命令。这对于在不同的Docker环境之间共享和迁移镜像非常有用。下面是这两个命令的使用方法: docker save 命令用于将一个或多个Docker镜像保存到一个压缩的tar文件中: 其中, OPTIONS 是一些可选参数, IMAGE 是要保存的镜像的名

    2024年04月29日
    浏览(29)
  • Docker镜像保存和保存到指定位置并导出到本地

    1,查看docker有哪些镜像 2,打包保存命令:docker save -o 导出打包名称.tar 仓库/标签 或 docker save 导出打包名称.tar 仓库:标签 备注:上面命令默认保存到的位置在:root目录 3,打包保存命令指定存放位置(注意win10用powershell运行时,不能使用绝对路径打包,需要在你想要保存的

    2024年02月11日
    浏览(40)
  • 将docker打包成镜像并保存到本地

    如果想重装系统,又不想破坏docker里面配好的环境,那么可以将docker镜像打包到本地进行保存。 命令: docker commit 容器id 镜像名:tag 使用 docker ps -a 即可查看容器相关信息 注意:在运行的过程中没有进度提示,完成后使用 docker images 可以查看到该镜像。 命令: docker save -o 镜

    2024年02月10日
    浏览(24)
  • 【docker】把镜像save出来

    先把要commit的容器停止。 为了确保提交的镜像反映容器某一精确时刻的稳定状态,应在提交Docker容器为新镜像前先停止该容器。这样生成的新镜像将更可靠、易于管理和重现。 sudo docker commit 容器名 镜像名:tag docker save 镜像名:版本号 -o /路径/保存的包名.tar  sudo docker run -

    2024年04月23日
    浏览(23)
  • docker save多个镜像打包成一个tar.gz压缩文件

    有时候我们需要将docker中的多个镜像批量的传输到另一台机器,如果通过docker save这种命令则需要制作多个tar文件,这样以来冗余的操作较多而且tar文件占据的空间较大,不利于传输。 可以通过以下命令在两个docker之间实现多个镜像批量传输: 如果想将所有镜像传输到另一台

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包