小知识:docker images本地迁移的实现

最近在学习docker,经常遇到的一个问题是,在下载docker image的时候,由于众所周知的网络原因导致失败,虽然网上也有很多解决方案,比如使用Docker Hub Mirror 之类的国内镜像服务,不过由于个人原因(侥幸有一台国外的VM),我更倾向于不通过docker registry共享下载的image。

问题很明确:

不通过docker registry,将A机器上的docker image共享给其他机器,即docker镜像本地迁移。

方案也很简单:

使用docker的save 和 load命令, 具体步骤如下

1.在A机器上列出所有的docker image,并找到你要保存的image名

?
1
sudo docker images

2.在A机器上使用docker save命令,保存image为tar文件

?
1
sudo docker save image_name -o file_path

其中,image_name替换为第一步里找到的要保存的image名。file_path是导出的tar文件路径,比如/home/tmp/image1.tar

3.将导出的image tar文件传到其他机器,如机器B。可以使用各种方式,比如scp之类的,在这里不详述了。

4.在需要使用image的机器上(如B机器)使用docker load命令加载image tar文件

?
1
sudo docker load -i file_path

注:另外,也可以使用docker 的export和import命令实现类似功能,关于export/save, import/load的区别,可以自己上网查,在此不做展开了。

基本区别就是export出来的是容器(无历史和层信息),而save出来的是image(具有完整的历史和层信息,支持层回滚)

补充:Docker的镜像的备份与迁移

第一步:

使用docker ps -a命令查看所有的容器

?
1
2
3
4
5
[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 容器名 要保存的名字

?
1
2
[root@localhost conf]# docker commit mynginx mynginx_backup
sha256:a6ca067596a2c319ddcdc9592afa9a7e9be4c157959c0327214d3e577333ed3a

第三步:

查看刚才保存的镜像

?
1
2
3
[root@localhost conf]# docker images
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE
mynginx_backup  latest    a6ca067596a2  19 seconds ago  109MB

第四步:

镜像备份(保存为tar文件),docker save -o 容器名.tar 要保存的名字

?
1
[root@localhost ~]# docker save -o mynginx.tar mynginx_backup

第五步:

查看当前目录

?
1
2
[root@localhost ~]# ls
anaconda-ks.cfg conf data initial-setup-ks.cfg java logs mynginx.tar original-ks.cfg

第六步:

删除原来的镜像并查看

?
1
2
3
4
5
6
[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

第七步:

镜像恢复,docker load -i 打包好的容器的文件名.tar

?
1
2
3
4
5
6
[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

第八步:

使用该镜像创建容器

?
1
2
[root@localhost ~]# docker run –name mynginx2 -p 80:80 -d mynginx_backup
a4809747f3c233d5a8f0c35542449adda10c06305f32c32a55e4842630212760

第九步:

浏览器输入ip地址,看是否成功

%小知识:docker images本地迁移的实现-猿站网-插图

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/u012149181/article/details/80332973

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:删除docker images中为none的镜像操作

2023-3-23 17:11:02

建站知识

小知识:解决docker images 镜像消失的问题

2023-3-23 17:25:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索