docker export/import到docker容器迁移的思考
docker export 导出docker容器为一个文件,相当于一个容器快照;
docker import 根据导出的文件生成一个镜像。
export镜像到文件
当前目录在/usr/local/docker-tar/目录下,此为空目录,通过docker ps看到当前正在运行的tomcat,此tomcat通过更新,可以查看到项目首页。docker export -o “my-tomcat.tar” a3ceb9987840命令将容器导出到my-tomcat.tar文件,通过ll命令查看到了导出的文件。
import文件为镜像
通过docker images查看当前的所有镜像,docker import --message “this is a testing tomcat” my-tomcat.tar tomcat:1.0.1将文件my-tomcat.tar生成对应的docker镜像,tag为自定义的版本号。
到这里其实一起都很顺利,但当通过镜像运行容器时,总是会报错,大概意思就是linux与docker不兼容,我服了啊,原先的环境,docker都运行的好好的,export在import后就出幺蛾子了。
docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "catalina.sh": executable file not found in $PATH: unknown.
最开始的异常代码好像是235,根据网上的教程,更新docker,卸载重新安装后,换成了367,没有什么作用。另外,这种方法在运行容器的时候还必须加原容器运行的commond,通过docker ps命令可以看到。
当前测试环境有限,暂时不打算深究。
docker export/import是将运行中的容器,打包成文件,便于迁移,在其它环境中,根据该文件再还原成镜像,通过镜像来运行容器。对应地,也可以先将容器保存为镜像,通过镜像打包成文件,文件便于迁移,可还原成镜像,进而运行容器。下面继续研究通过容器–镜像–文件–镜像–容器的方法来实现迁移。tomcat自定义
还是通过最开始在docker hub上pull的tomcat镜像,运行一个容器,该容器是没有首页的,需要将/usr/local/tomcat/webapps.dist目录重命名为/usr/local/tomcat/webapps,原webapps目录是个空目录,先重命名为其它的文件夹。这样一来,运行的容器可以正常访问首页。
在/usr/local/tomcat/webapps/ROOT/目录下有一个index.jsp文件,即项目的首页,我们先把这个首页做一些小的更新,由于在docker容器中没有vi或vim命令可用,只能通过容器数据卷或者是拷贝的方式,来修改容器中的文件。此处,我们使用命令:docker cp mytomcat01:/usr/local/tomcat/webapps/ROOT/index.jsp /tomcat/index.jsp
,把这个文件拷贝到宿主机的/tomcat/目录下。
在宿主机vim /tomcat/index.jsp来修改首页文件。
此处我们搞简单点儿,多添加一行文字,主要就是标记这是我们自己改过的tomcat。
保存后,使用docker /tomcat/index.jsp mytomcat01:/usr/local/tomcat/webapps/ROOT/index.jsp
替换掉原tomcat容器中的首页文件,这里的mytomcat01是我自己的容器名,大家不要无脑复制。
刷新一下页面,可以看到项目首页已经更新出了我们添加的文字信息。
docker commit 保存镜像
docker save将镜像打包成文件
现在的镜像,已经打包成了一个tar压缩文件,可以拷贝,迁移到其它的服务环境。
现在,我们把本机的容器以及镜像都删掉,再通过文件来恢复,模拟迁移后的重新部署过程。
可以看到,已经没有tomcat相关的容器,与tomcat有关的两个镜像也是从docker hub上pull下来的,没有经过任何的加工。docker load还原镜像
docker run运行容器
此次故意将宿主机的8888端口映射到docker容器的8080端口,容器正常启动,最关键最关键的来了,访问宿主机的8888端口,访问项目首页,查看是否有我们更新的信息。
效果符合预期。总结:在弄清楚docker export 和 docker import之前,应该都只会使用docker save和docker load的方式来迁移容器了,前者肯定也是可行的,不过目前看来对环境和操作要求更高,后者则更加高效。
后期再更新docker export和docker import的操作吧。
docker export/import到docker容器迁移的思考相关推荐
- docker export import后,导入镜像,启动时的错误,Error response from daemon: No command specified...
Docker的流行与它对容器的易分享和易移植密不可分,用户不仅可以把容器提交到公共服务器上,还可以把容器导出到本地文件系统中.同样,我们也可以把导出的容器重新导入到Docker运行环境中.Docker ...
- 使用export/import导出和导入docker容器
1.导出容器 如果要导出本地某个容器,可以使用 docker export 命令,导出容器快照到本地文件. $ sudo docker ps -a CONTAINER ID IMAGE ...
- docker容器迁移的解决方案
本文使用Xshell工具,以mysql为例 一:容器的导入和导出 1:docker export 正在运行的容器id|容器名 > 文件名 (导出容器的内容作为一个归档文件) 这样一个归档的文件就 ...
- 2021-05-08 docker save与docker export的镜像区别
docker save与docker export的区别 缘起 docker save和docker export都能导出镜像包,咋看起来区别似乎不大.本文就针对这个问题,试图搞清楚docker sa ...
- docker save 与 docker export 的区别
缘起 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. docker save和docker export都能导出镜像包,咋看起来区别似乎不大.本文就 ...
- Docker学习二:Docker镜像与容器
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- 【自学Docker 】Docker export命令
Docker export命令 概述 docker export教程 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出.docker ...
- docker save与docker export的区别
http://cnodejs.org/topic/59a2304f7aeedce818249eeb 缘起 docker save和docker export都能导出镜像包,咋看起来区别似乎不大.本文就 ...
- docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南
迁移到微服务与DevOps,改变软件开发效能! 一如既往,技术行业正处于巨大的转变之中,物联网.软件定义网络以及软件即服务(SaaS)仅为其中几例.由于这些创新,对能够改进应用开发和部署过程的平台和架 ...
最新文章
- Redis 集群方案
- -bash: git: command not found
- 函数(复习),闭包,DOM
- 马云:我不懂技术但欣赏技术 达摩院必须超越微软 - 20171011
- Spring Cloud Config 规范 1
- java script eval_java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
- java逻辑判断_阿里JAVA开发强制要求的10条条件控制及逻辑判断的规范,切记
- 想看程序员的成长课这本书
- Bailian2713 肿瘤面积【基础】
- android曲线水波纹录音动画,Android-贝塞尔曲线实现水波纹动画
- 利用struts2上传文件时,如果文件名中含有-符号,那么会出错
- 利用Tampermonkey写脚本抢课
- 我的世界服务器一直没信号,我的世界:6年前突发的MC诡异事件,至今官方也说不出原因!...
- java实现excel转pdf_java实现excel转pdf(poi+itext)
- 程序员装机必备利器列表
- RT throttling分析【转】
- 使用Mybatis进行更新操作成功,数据库却没更新的原因
- ffmpeg 分离视频音频流 缺失sei信息
- java写培根披萨和海鲜披萨_培根海鲜披萨的做法【图解】_培根海鲜披萨的家常做法_培根海鲜披萨怎么做_下午茶...
- nsfw什么颜色_“ NSFW”是什么意思,以及如何使用它?
热门文章
- SpringBoot-文件在线预览解决方案-基于OpenOffice及jacob
- 关于发邮件报错535 Error:authentication failed解决方法
- ubuntu 18.04,无线网卡无驱动,连不上wifi,显示wifi没有适配器的解决方法
- brew update:以下未跟踪的工作树文件将被合并覆盖:
- 滚动到div的底部?
- linux查看绑定ipv6的端口号,[原创]如何在windows和linux绑定IPV6
- 10A 的GROUP和CUI使用
- 背景图片固定(背景图片附着)(HTML、CSS)
- linux之添加python环境变量
- 登峰连接程式改坐标软件_如何用SOLIDWORKS方程式驱动圆柱波浪线?