docker 镜像导入导出 删除 改名

2023-05-16

镜像的导入与导出
假如有2台主机,我们在主机1上做了一个镜像,主机2想用这个镜像怎么办呢?

我们可以在主机1上push镜像到镜像仓库中,然后在主机2上pull把镜像拉下来使用,这种方式就显得比较麻烦,假如我只是测试用的,在一台主机上做好镜像后在另一台主机上跑一下就行了,没必要推到仓库上然后又把它拉到本地来。

此时我们可以在已有镜像的基础上把镜像打包成一个压缩文件,然后拷贝到另一台主机上将其导入,这就是镜像的导入和导出功能。

docker中我们使用docker save进行导出,使用docker load进行导入。

在已生成镜像的主机上执行docker save导出镜像

docker save -o myimages.gz seancheng1002/b1
1
在另一台没有镜像的主机上执行docker load导入镜像

docker load -i myimages.gz 

-----------------------------------------

docker镜像的导入导出

上不了网的机器用load 导入, import的不行

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

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


sudo docker images  

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


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文件


sudo docker load -i file_path   

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

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

备份和还原 mysql 镜像
保存测试环境的 mysql 镜像

sudo docker save -o mysql.tar  hcr:5000/hschub/hscmysql:0.0.2
 
sudo chmod 777 mysql.tar
两台机器导入镜像

sudo docker load -i mysql.tar
启动容器,需要注意的是需要映射本地文件夹。

sudo docker run -p 3306:3306 --name mysql \
-v /home/hss/mysql/data:/var/lib/mysql \
-v /home/hss/mysql/etc/mysql:/etc/mysql \
-e MYSQL_ROOT_PASSWORD='123456' \
-d 46b
-v 代表映射的文件夹,-d 表示后台运行,46b 代表镜像 id。

进入容器,连接 mysql,node1的mysql 密码是 123456,node2 是 123456

# 查询容器 id
docker ps
 
# 进入 mysql 容器
docker exec -it <容器 id> /bin/bash
 
# 连接 mysql
mysql -u root -p
 
 

docker load -i pgadmin4.tar
8e012198eea1: Loading layer [==================================================>]  7.338MB/7.338MB
f98c0527e327: Loading layer [==================================================>]  246.6MB/246.6MB
86eea0a5249d: Loading layer [==================================================>]      9MB/9MB
38a4cec5c2fb: Loading layer [==================================================>]  375.8kB/375.8kB
771008107031: Loading layer [==================================================>]  3.072kB/3.072kB
ce61d78c812b: Loading layer [==================================================>]  2.048kB/2.048kB
3d7dba470ffe: Loading layer [==================================================>]  33.19MB/33.19MB
7f4a270deaa6: Loading layer [==================================================>]  26.26MB/26.26MB
f6cc226d24f0: Loading layer [==================================================>]   2.56kB/2.56kB
74aa2bfe4f34: Loading layer [==================================================>]   2.56kB/2.56kB
eadfe6735ba3: Loading layer [==================================================>]  6.144kB/6.144kB
e487c378f2ff: Loading layer [==================================================>]  3.584kB/3.584kB
9be4b6d7d44a: Loading layer [==================================================>]  91.14kB/91.14kB
794fb14c2793: Loading layer [==================================================>]  62.03MB/62.03MB
Loaded image: dpage/pgadmin4:latest

 

docker load <mysql8.tar.gz 
d0fe97fa8b8c: Loading layer [==================================================>]  72.49MB/72.49MB
329fe06a30f0: Loading layer [==================================================>]  338.4kB/338.4kB
ec8c80284c72: Loading layer [==================================================>]  9.539MB/9.539MB
9dae2565e824: Loading layer [==================================================>]    4.2MB/4.2MB
36b89ee4c647: Loading layer [==================================================>]  1.536kB/1.536kB
c21e35e55228: Loading layer [==================================================>]  53.76MB/53.76MB
15b463db445c: Loading layer [==================================================>]  6.656kB/6.656kB
93c2c03325c3: Loading layer [==================================================>]  3.584kB/3.584kB
fc43cbe9cad3: Loading layer [==================================================>]  409.1MB/409.1MB
ca0c4007532e: Loading layer [==================================================>]  5.632kB/5.632kB
14a85f5c8c8c: Loading layer [==================================================>]  16.38kB/16.38kB
7cbe40ac6a7b: Loading layer [==================================================>]  1.536kB/1.536kB
Loaded image ID: sha256:8e85dd5c32558ea5c22cc4786cff512c1940270a50e7dbc21ad2df42f0637de4
 

# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
<none>       <none>    8e85dd5c3255   2 years ago   544MB

docker-compose安装很简单 
1、安装
curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

2、把下载的文件授权
sudo chmod +x docker-compose

3、查看版本
docker-compose -version

4、建立需要使用的模板,默认是docker-compose.yml:
touch docker-compose.yml
启动方式
docker-compose up &
如果想要使用别的名字,启动的时候需要使用-f参数指定:
docker-compose -f mysql.yml up &

#  docker-compose up
Pulling mysql (rs.52qicloud.com/mysql/mysql:8.0.21)...
ERROR: Get "https://rs.52qicloud.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

# docker tag 8e85dd5c3255 rs.52qicloud.com/mysql/mysql:8.0.21
[root@cigflow-db-10-0-193-21 mysql]# docker images
REPOSITORY                     TAG       IMAGE ID       CREATED       SIZE
rs.52qicloud.com/mysql/mysql   8.0.21    8e85dd5c3255   2 years ago   544MB
[root@cigflow-db-10-0-193-21 mysql]#  docker-compose up

 docker images
 docker rmi  842e84275abd
 docker images 
 docker rmi  8e
 docker stop mysql
 docker rm 7d4475cc6e88 --容器
 docker rmi  8e

一、使用 export 和 import
1,查看本机的容器
这两个命令是通过容器来导入、导出镜像。首先我们使用 docker ps -a 命令查看本机所有的容器。

2,导出镜像
(1)使用 docker export 命令根据容器 ID 将镜像导出成一个文件。

docker export f299f501774c > hangger_server.tar
1
(2)上面命令执行后,可以看到文件已经保存到当前的 docker 终端目录下。

3,导入镜像
(1)使用 docker import 命令则可将这个镜像文件导入进来。
1

docker import - new_hangger_server < hangger_server.tar
1
(2)执行 docker images 命令可以看到镜像确实已经导入进来了。

二、使用 save 和 load
1,查看本机的容器
这两个命令是通过镜像来保存、加载镜像文件的。首先我们使用 docker images 命令查看本机所有的镜像。

2,保存镜像
(1)下面使用 docker save 命令根据 ID 将镜像保存成一个文件。

docker save 0fdf2b4c26d3 > hangge_server.tar
1
(2)我们还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:

docker save -o images.tar postgres:9.6 mongo:3.4
1
3,载入镜像
使用 docker load 命令则可将这个镜像文件载入进来。

docker load < hangge_server.tar
1
附:两种方案的差别
特别注意:两种方法不可混用。
如果使用 import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。

1,文件大小不同

export 导出的镜像文件体积小于 save 保存的镜像
1
2,是否可以对镜像重命名

docker import 可以为镜像指定新名称
docker load 不能对载入的镜像重命名
1
2
3,是否可以同时将多个镜像打包到一个文件中

docker export 不支持
docker save 支持
1
2
4,是否包含镜像历史

export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。
而 save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。
1
2
5,应用场景不同

docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker 镜像导入导出 删除 改名 的相关文章

随机推荐

  • Intel Realsense Tracking Camera T265上手测试与总结

    首先在官网 https www intelrealsense com zh hans get started tracking camera 上认真阅读使用教程 xff0c 让自己对 Realsense T265相机有一个初步的认识 了解过
  • C++ 标准模板库(STL)——迭代器、迭代器类型以及序列式,关联容器迭代器失效问题(iterator)

    迭代器iterator 迭代器iterator1 定义2 iterator中typedef的型别 xff08 iter traits xff09 3 iterator的五种类型3 1 Output iteator xff08 只写 xff0
  • 关于x11vnc在ubuntu14.04服务器版上开启远程桌面的使用(作为自己备忘)

    先上一个最后的结果图 xff08 配了好几个小时 xff0c 到处找资料 xff09 如题 xff0c 仅仅作为自己的一个备忘 xff0c 如果能顺便帮助到你 xff0c 我将非常开心 xff01 主要目的 xff1a 利用命令行开启远程服
  • 2021CVPR-Cross Modal Focal Loss for RGBD Face Anti-Spoofing

    用于RGBD人脸反欺骗的交叉模式焦损 摘要 xff1a 自动检测呈现攻击的方法对于确保面部识别技术的可靠使用至关重要 文献中提供的大多数用于呈现攻击检测 PAD 的方法都无法将其推广到看不见的攻击 近年来 xff0c 人们提出了多通道方法来
  • 带你走进EJB--EJB和Spring对比

    通过对 EJB 系列的总结和学习我们已经对 EJB 有了基本的了解 但是为了更进一步的去深入学习 EJB 我们很有必要将它拿出来跟之前非常熟悉的 Spring 进行一下对比 通过对比来了解这两个内容的相同与不同之处 更有利于我们对两者进行深
  • Dubbo之旅--Provider示例

    在本篇文章中我们将通过集体的示例来对 Dubbo 的提供和消费进行代码层面的认识 这里所介绍的是基本的提供者和消费者通过 Spring 容器来进行相关的提供和消费的服务 首先看整个示例的项目结构如下 我们通过 Maven 的方式来进行示例
  • 用EditPlus配置MASM汇编

    最开始写汇编程序 xff0c 是打开一个记事本就写 但是记事本不是专门的程序编辑器 xff0c 格式不好控制 xff0c 更容易写错程序 于是想到 xff0c 能有一个简单的文本编辑器 xff0c 能控制好ASM的格式 xff0c 有关键字
  • Dubbo之旅--问题汇总

    在工作和学习的过程中 具体运用 Dubbo 的时候遇到了很多的问题 这些问题一方面让自己进一步了解所谓的 dubbo 另一方面通过对它们的总结和分析能够在工作中加倍的提高效率 接下来将会对遇到的和别人总结的一些常见的问题进行汇总 1 增加提
  • Dubbo之旅--集群容错和负载均衡

    当我们的系统中用到 Dubbo 的集群环境 因为各种原因在集群调用失败时 xff0c Dubbo提供了多种容错方案 xff0c 缺省为failover重试 Dubbo 的集群容错在这里想说说他是因为我们实际的项目中出现了此类的问题 因为依赖
  • 我和敏捷开发的故事--敏捷角色-SM

    通过上篇文章我们已经知道了敏捷角色中 PO 的角色内容 接下来的一个敏捷角色在敏捷开发中非常关键 但是往往很多项目实践中都没有很好的把控好这个角色 让他或多或少的没有起到相应的作用 这个角色就是 ScrumMaster Scrum Mast
  • backup

    backup
  • backup

    backup
  • backup

    xfeff xfeff backup
  • 工程硕士考试复习小结

    工程硕士考试复习到现在已经接近尾声 后天就要奔赴省城石家庄赶考了 整个工程硕士的复习过程从十月初开始到现在将近一个月的时间 对所需要进行考试的科目进行整体复习 复习的形式前阶段主要是视频讲解中间阶段是看相应的文档和知识点 最后就是进行专项练
  • 我的2011----再见2011!你好2012!

    今天本来是 特别平常的一天 但是因为位置排在了 2011 年的最后 平常也就变得不平常了 一年就在这么转眼即逝中度过了 虽说一年比较短暂 但是回头在看看自己所拥有的这一年 留下的很多 在 2011 我把 ShortBrain 英语进行着 英
  • 中国的教育我们每个人都有责任

    这篇文章将我带入了深深的思考之中 给将要进入大学的你们 xff1a 一个已毕业两年的学长的人生感慨 xff01 面对中国的教育现状 很多的学生 老师 甚至校长 采取的态度是接受 所做的行动是适应和顺从 非常钦佩作者有着自己独立的思想 思想者
  • Eclipse下启动tomcat报错:/bin/bootstrap.jar which is referenced by the classpath, does not exist.

    1 错误 xff1a 在 Eclipse 下启动 tomcat 的时候 xff0c 报错为 xff1a Eclipse 下启动 tomcat 报错 xff1a The archive C Program Files x86 Java jdk
  • Java文件名及其他命名规则

    http bbs csdn net topics 70157841 关于JAVA 源文件命名的问题 Java文件命名 xff1a java程序是由类组成的 xff1b java应用程序必须有一个包含main方法的public类 xff0c
  • (转) 变分自编码器(Variational Autoencoder, VAE)通俗教程

    变分自编码器 xff08 Variational Autoencoder VAE xff09 通俗教程 转载自 http www dengfanxin cn p 61 334 amp sukey 61 72885186ae5c357d85d
  • docker 镜像导入导出 删除 改名

    镜像的导入与导出 假如有2台主机 xff0c 我们在主机1上做了一个镜像 xff0c 主机2想用这个镜像怎么办呢 xff1f 我们可以在主机1上push镜像到镜像仓库中 xff0c 然后在主机2上pull把镜像拉下来使用 xff0c 这种方