相关阅读:

场景描述:

需要在客户现场快速部署应用,东西多,时间短

场景分析:

为了节省时间,使用docker进行快速部署,由于不是内部环境,无法使用内部私有库,于是构建镜像,将镜像导出

解决办法:

使用dockerfile构建应用镜像,将镜像导出,在部署的节点上将镜像导入,启动容器即可

镜像导入和导出:

docker提供了把镜像导出为文件的机制,有两种方式:

1.save / load   保存/加载

save有两种

第一种:

docker save 镜像id > 目录/XXX.tar

第二种(推荐):

docker save repository:tag > 目录/XXX.tar

load命令如下:

docker load < XXX.tar

2.export / import  导出/导入

export命令如下:

docker export 容器名 > XXX.tar

import命令:

docker import XXX.tar REPOSITORY:TAG

这两种方式都能都导出,但是细节不同,先进行对比,后通过实例演示

导出的对象

导出文件大小

是否可回滚到历史层

save / load

将镜像导出

export / import

将容器导出

从本质上来说,save/load导出的是镜像,export/import导出的是容器,大家不要弄混

相对于文件大小来说,save方式导出的文件比export方式导出的文件大

正是因为save方式保存了镜像的历史和层(layer),使其可以层回滚,即回滚到之前的历史层,所以save方式导出的文件稍微大一些

反观export方式,在导出过程中丢失所有的历史,导致其不可以层回滚,导出的文件会小一些

演示:

下面通过实例,对这两种方式进行演示和对比

save / load 方式

1.save 保存镜像

这里有一个构建好的镜像

[root@uat-app01 /]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos_ssh latest ae0548244885 10 days ago 285 MB

先查看该镜像的历史层

注意:

docker images –tree命令已被弃用,现已用docker history +镜像id命令

[root@uat-app01 /]# docker history ae0548244885

IMAGE CREATED CREATED BY SIZE COMMENT

ae0548244885 10 days ago /bin/sh -c ln -snf /usr/share/zoneinfo/$TZ... 14 B

de38162f94f6 10 days ago /bin/sh -c #(nop) ENV TZ=Asia/Shanghai 0 B

64c78cfdb6d2 10 days ago /bin/sh -c #(nop) MAINTAINER yanwei

7a9653034358 2 weeks ago /bin/bash 81.1 MB

3fa822599e10 7 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B

7 months ago /bin/sh -c #(nop) LABEL name=CentOS Base ... 0 B

7 months ago /bin/sh -c #(nop) ADD file:7441d818786942a... 204 MB

导出该镜像,导出的镜像文件为280M

注意:

如果使用docker save + 镜像id方式导出,导入的镜像的REPOSITORY和TAG会显示为

方法1:

[root@uat-app01 /]# docker save ae0548244885 > /centos_ssh.tar

[root@uat-app01 /]# ll -sh /centos_ssh.tar

280M -rw-r--r-- 1 root root 280M Jul 17 11:20 /centos_ssh.tar

方法2:

[root@uat-app01 /]# docker save centos_ssh:latest > /centos_ssh2.tar

[root@uat-app01 /]# ll -sh /centos_ssh.tar

280M -rw-r--r-- 1 root root 280M Jul 17 11:31 /centos_ssh2.tar

2.load 加载镜像

将镜像导入到其他环境,加载镜像文件

先来加载方法1导出的镜像文件

[root@uat-ucs01 /]# docker load < /centos_ssh.tar

d1be66a59bc5: Loading layer [==================================================>] 212.1 MB/212.1 MB

610610a96352: Loading layer [==================================================>] 81.43 MB/81.43 MB

e5dab0be5e57: Loading layer [==================================================>] 3.072 kB/3.072 kB

Loaded image ID: sha256:ae0548244885ae05a4d8a3deab32bfeb0518697986586c3a1023579c8dc2d21c B/3.072 kB

查看该镜像,REPOSITORY和TAG都为

解决这种情况,使用docker tag添加标签,这里就不做演示了,多一步显得很冗余,推荐大家使用save的第二种方法导出

[root@uat-ucs01 /]# docker images -a

REPOSITORY TAG IMAGE ID CREATED SIZE

ae0548244885 10 days ago 284.7 MB

删除该镜像

再来加载方法2导出的镜像文件

[root@uat-ucs01 /]# docker load < /centos_ssh2.tar

d1be66a59bc5: Loading layer [==================================================>] 212.1 MB/212.1 MB

610610a96352: Loading layer [==================================================>] 81.43 MB/81.43 MB

e5dab0be5e57: Loading layer [==================================================>] 3.072 kB/3.072 kB

Loaded image: centos_ssh:latest

查看该镜像,REPOSITORY和TAG显示都正常

[root@uat-ucs01 /]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos_ssh latest ae0548244885 10 days ago 284.7 MB

export / import 方式

1.export 导出

这里有一个正在运行的容器,基础镜像也是centos_ssh

[root@uat-app01 /]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

2cc200d98a54 centos_ssh "/bin/bash" 14 seconds ago Up 10 seconds wizardly_babbage

将该容器导出,export方式导出的文件大小为258M,比save方式导出的文件小了22M

[root@uat-app01 /]# docker export 2cc200d98a54 > /centos_ssh.tar

[root@uat-app01 /]# ll -sh /centos_ssh.tar

258M -rw-r--r-- 1 root root 258M Jul 17 14:06 /centos_ssh.tar

2.import导入

在其他环境,将文件导入

[root@uat-ucs01 /]# docker import /centos_ssh.tar centos_ssh:latest

sha256:d1e984b716211a3b29b39f75d6c31a132844f9307d87e81c540364162e311074

查看导入的镜像

[root@uat-ucs01 /]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos_ssh latest d1e984b71621 4 seconds ago 261.2 MB

查看镜像的历史层,没有之前的历史层,只有从导入开始的历史层

[root@uat-ucs01 /]# docker history d1e984b71621

IMAGE CREATED CREATED BY SIZE COMMENT

d1e984b71621 21 seconds ago 261.2 MB Imported from -

至此,docker的导入和导出介绍完了,我们下篇文章见

亲,看完了点个赞呗!

17+

linux docker导入镜像,Docker镜像的导入和导出相关推荐

  1. docker保存linux镜像,docker导入导出容器和保存加载镜像

    系统环境:centos7.4 版本: # docker -v 1.docker容器导入导出 (1)查看:# docker ps -a (2)导出---export # docker export we ...

  2. Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等

    一. 显示本地镜像: [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c8252 ...

  3. 【docker一】docker是什么、为什么使用Docker、docker镜像搜索、获取、删除、查看、导出导入、查看历史详细信息

    Docker基础 1. docker是什么 docker的中文解释是码头工人. 官方解释: Docker是一个开源的容器引擎,它基于LCX容器技术,使用Go语言开发. 源代码托管在Github上,并遵 ...

  4. 【Docker制作镜像】Linux制作以python为基础镜像,融合Flask框架和Redis数据库

    步骤 1.编辑Dockerfile 2.编辑requirements.txt文件 3.编辑app.py文件 4.生成镜像文件 5.使用镜像,启动容器 6.访问容器的web服务 7.启动redis容器 ...

  5. Centos /Linux环境下利用Docker 安装mysql5.7镜像(含离线安装),启动mysql镜像并初始化数据库

    Docker 安装mysql镜像,含离线 Docker 安装mysql镜像(含离线) 准备mysql的Docker镜像(需要在有网的服务器中下载) 将准备好tar导入到docker镜像 Docker启 ...

  6. docker拉取linux操作系统镜像,Docker 镜像操作使用详解

    镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的镜像,Docker 会尝试从默认的镜像仓库下载.当然用户也可以通过配置,使用自定义的镜像仓库 ...

  7. docker拉取linux操作系统镜像,docker 四.使用docker镜像.

    四.Docker镜像的使用 一.Docker安装 1.1  查看系统版本 [root@node1 ~]# cat /etc/redhat-release CentOS release 6.6 (Fin ...

  8. linux运行dock打包的镜像,Linux部署之Docker方式部署项目

    Linux部署之Docker方式部署项目 1. 使用Docker对前端vue项目进行部署 1.1 环境准备 服务器或者虚拟机上先安装好Nginx和相关配置 docker pull nginx 拉去最新 ...

  9. 镜像和linux关系,Docker中容器和镜像的关系【通俗易懂】

    docker中容器和镜像的关系是什么? 最近学习了docker,大多人感觉容器和镜像学的有点模糊. 特别是镜像和容器,感觉完全分不开,所以在此学习,然后总结了一下,便于后面的学习. 这是我总结的镜像总 ...

最新文章

  1. 获取系统时间精确到毫秒级C++代码实现
  2. python中choicebox_学习python的第四天笔记
  3. Java学习个人备忘录之线程间的通信
  4. linux如何查tomcat是否安装,如何检测linux机器上是否安装了tomcat和ant
  5. Windows下怎样使用bat设置Redis和Nginx开机自启动
  6. scala中object和class关键字的区别
  7. is_best = recent_bleu4 > best_bleu4
  8. (转)科学是怎样产生的
  9. python寻找列表最大值最小值及其下标
  10. Jsp 页面添加动态水印
  11. datagrid单元格格式化样式化
  12. opencv4 车牌识别 C++ vs2019
  13. 多线程-生产者消费者模式-CopyOnWriteArrayList索引越界问题
  14. xp系统telnet服务器,xp电脑telnet服务器
  15. 层次聚类——自底向上方法
  16. Tomcat控制台中文乱码怎么处理[已解决 绝对好用]
  17. #后疫情时代的新思考#AI助力,“无接触”服务加速金融数字化转型丨数据猿公益策划...
  18. java将日期转化为周几_关于java中时间和周几转换的小小工具
  19. java面试-多线程常见面试题
  20. 用Python做一个人脸识别系统,简单操作又实用~

热门文章

  1. 在kubernetes 集群内访问k8s API服务
  2. .Net Core功能开关实战
  3. .Net Core开发日志——Global Tools
  4. aspnetcore.webapi实践k8s健康探测机制 - kubernetes
  5. Error Handling in ASP.NET Core
  6. 来腾讯云开发者实验室 学习.NET
  7. Android单击、长按获取当前触点坐标下(TextView)文字字符
  8. 一键将Python2代码自动转化为Python3
  9. 【抢鲜版】ArcGIS 10.7手把手经典图文安装教程(附安装包下载地址)
  10. 【空间数据库技术】ArcSDE 10.1安装配置与企业级地理空间数据库的建立及连接