linux docker导入镜像,Docker镜像的导入和导出
相关阅读:
场景描述:
需要在客户现场快速部署应用,东西多,时间短
场景分析:
为了节省时间,使用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镜像的导入和导出相关推荐
- docker保存linux镜像,docker导入导出容器和保存加载镜像
系统环境:centos7.4 版本: # docker -v 1.docker容器导入导出 (1)查看:# docker ps -a (2)导出---export # docker export we ...
- Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等
一. 显示本地镜像: [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c8252 ...
- 【docker一】docker是什么、为什么使用Docker、docker镜像搜索、获取、删除、查看、导出导入、查看历史详细信息
Docker基础 1. docker是什么 docker的中文解释是码头工人. 官方解释: Docker是一个开源的容器引擎,它基于LCX容器技术,使用Go语言开发. 源代码托管在Github上,并遵 ...
- 【Docker制作镜像】Linux制作以python为基础镜像,融合Flask框架和Redis数据库
步骤 1.编辑Dockerfile 2.编辑requirements.txt文件 3.编辑app.py文件 4.生成镜像文件 5.使用镜像,启动容器 6.访问容器的web服务 7.启动redis容器 ...
- Centos /Linux环境下利用Docker 安装mysql5.7镜像(含离线安装),启动mysql镜像并初始化数据库
Docker 安装mysql镜像,含离线 Docker 安装mysql镜像(含离线) 准备mysql的Docker镜像(需要在有网的服务器中下载) 将准备好tar导入到docker镜像 Docker启 ...
- docker拉取linux操作系统镜像,Docker 镜像操作使用详解
镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的镜像,Docker 会尝试从默认的镜像仓库下载.当然用户也可以通过配置,使用自定义的镜像仓库 ...
- docker拉取linux操作系统镜像,docker 四.使用docker镜像.
四.Docker镜像的使用 一.Docker安装 1.1 查看系统版本 [root@node1 ~]# cat /etc/redhat-release CentOS release 6.6 (Fin ...
- linux运行dock打包的镜像,Linux部署之Docker方式部署项目
Linux部署之Docker方式部署项目 1. 使用Docker对前端vue项目进行部署 1.1 环境准备 服务器或者虚拟机上先安装好Nginx和相关配置 docker pull nginx 拉去最新 ...
- 镜像和linux关系,Docker中容器和镜像的关系【通俗易懂】
docker中容器和镜像的关系是什么? 最近学习了docker,大多人感觉容器和镜像学的有点模糊. 特别是镜像和容器,感觉完全分不开,所以在此学习,然后总结了一下,便于后面的学习. 这是我总结的镜像总 ...
最新文章
- 获取系统时间精确到毫秒级C++代码实现
- python中choicebox_学习python的第四天笔记
- Java学习个人备忘录之线程间的通信
- linux如何查tomcat是否安装,如何检测linux机器上是否安装了tomcat和ant
- Windows下怎样使用bat设置Redis和Nginx开机自启动
- scala中object和class关键字的区别
- is_best = recent_bleu4 > best_bleu4
- (转)科学是怎样产生的
- python寻找列表最大值最小值及其下标
- Jsp 页面添加动态水印
- datagrid单元格格式化样式化
- opencv4 车牌识别 C++ vs2019
- 多线程-生产者消费者模式-CopyOnWriteArrayList索引越界问题
- xp系统telnet服务器,xp电脑telnet服务器
- 层次聚类——自底向上方法
- Tomcat控制台中文乱码怎么处理[已解决 绝对好用]
- #后疫情时代的新思考#AI助力,“无接触”服务加速金融数字化转型丨数据猿公益策划...
- java将日期转化为周几_关于java中时间和周几转换的小小工具
- java面试-多线程常见面试题
- 用Python做一个人脸识别系统,简单操作又实用~
热门文章
- 在kubernetes 集群内访问k8s API服务
- .Net Core功能开关实战
- .Net Core开发日志——Global Tools
- aspnetcore.webapi实践k8s健康探测机制 - kubernetes
- Error Handling in ASP.NET Core
- 来腾讯云开发者实验室 学习.NET
- Android单击、长按获取当前触点坐标下(TextView)文字字符
- 一键将Python2代码自动转化为Python3
- 【抢鲜版】ArcGIS 10.7手把手经典图文安装教程(附安装包下载地址)
- 【空间数据库技术】ArcSDE 10.1安装配置与企业级地理空间数据库的建立及连接