docker export 导出docker容器为一个文件,相当于一个容器快照;
docker import 根据导出的文件生成一个镜像。

  1. export镜像到文件
    当前目录在/usr/local/docker-tar/目录下,此为空目录,通过docker ps看到当前正在运行的tomcat,此tomcat通过更新,可以查看到项目首页。docker export -o “my-tomcat.tar” a3ceb9987840命令将容器导出到my-tomcat.tar文件,通过ll命令查看到了导出的文件。

  2. 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是将运行中的容器,打包成文件,便于迁移,在其它环境中,根据该文件再还原成镜像,通过镜像来运行容器。对应地,也可以先将容器保存为镜像,通过镜像打包成文件,文件便于迁移,可还原成镜像,进而运行容器。下面继续研究通过容器–镜像–文件–镜像–容器的方法来实现迁移。

  3. 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是我自己的容器名,大家不要无脑复制。
    刷新一下页面,可以看到项目首页已经更新出了我们添加的文字信息。

  4. docker commit 保存镜像

  5. docker save将镜像打包成文件
    现在的镜像,已经打包成了一个tar压缩文件,可以拷贝,迁移到其它的服务环境。
    现在,我们把本机的容器以及镜像都删掉,再通过文件来恢复,模拟迁移后的重新部署过程。
    可以看到,已经没有tomcat相关的容器,与tomcat有关的两个镜像也是从docker hub上pull下来的,没有经过任何的加工。

  6. docker load还原镜像

  7. docker run运行容器
    此次故意将宿主机的8888端口映射到docker容器的8080端口,容器正常启动,最关键最关键的来了,访问宿主机的8888端口,访问项目首页,查看是否有我们更新的信息。
    效果符合预期。

  8. 总结:在弄清楚docker export 和 docker import之前,应该都只会使用docker save和docker load的方式来迁移容器了,前者肯定也是可行的,不过目前看来对环境和操作要求更高,后者则更加高效。
    后期再更新docker export和docker import的操作吧。

docker export/import到docker容器迁移的思考相关推荐

  1. docker export import后,导入镜像,启动时的错误,Error response from daemon: No command specified...

    Docker的流行与它对容器的易分享和易移植密不可分,用户不仅可以把容器提交到公共服务器上,还可以把容器导出到本地文件系统中.同样,我们也可以把导出的容器重新导入到Docker运行环境中.Docker ...

  2. 使用export/import导出和导入docker容器

    1.导出容器 如果要导出本地某个容器,可以使用 docker export 命令,导出容器快照到本地文件. $ sudo docker ps -a CONTAINER ID        IMAGE ...

  3. docker容器迁移的解决方案

    本文使用Xshell工具,以mysql为例 一:容器的导入和导出 1:docker export 正在运行的容器id|容器名 > 文件名 (导出容器的内容作为一个归档文件) 这样一个归档的文件就 ...

  4. 2021-05-08 docker save与docker export的镜像区别

    docker save与docker export的区别 缘起 docker save和docker export都能导出镜像包,咋看起来区别似乎不大.本文就针对这个问题,试图搞清楚docker sa ...

  5. docker save 与 docker export 的区别

    缘起 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. docker save和docker export都能导出镜像包,咋看起来区别似乎不大.本文就 ...

  6. Docker学习二:Docker镜像与容器

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  7. 【自学Docker 】Docker export命令

    Docker export命令 概述 docker export教程 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出.docker ...

  8. docker save与docker export的区别

    http://cnodejs.org/topic/59a2304f7aeedce818249eeb 缘起 docker save和docker export都能导出镜像包,咋看起来区别似乎不大.本文就 ...

  9. docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南

    迁移到微服务与DevOps,改变软件开发效能! 一如既往,技术行业正处于巨大的转变之中,物联网.软件定义网络以及软件即服务(SaaS)仅为其中几例.由于这些创新,对能够改进应用开发和部署过程的平台和架 ...

最新文章

  1. Redis 集群方案
  2. -bash: git: command not found
  3. 函数(复习),闭包,DOM
  4. 马云:我不懂技术但欣赏技术 达摩院必须超越微软 - 20171011
  5. Spring Cloud Config 规范 1
  6. java script eval_java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
  7. java逻辑判断_阿里JAVA开发强制要求的10条条件控制及逻辑判断的规范,切记
  8. 想看程序员的成长课这本书
  9. Bailian2713 肿瘤面积【基础】
  10. android曲线水波纹录音动画,Android-贝塞尔曲线实现水波纹动画
  11. 利用struts2上传文件时,如果文件名中含有-符号,那么会出错
  12. 利用Tampermonkey写脚本抢课
  13. 我的世界服务器一直没信号,我的世界:6年前突发的MC诡异事件,至今官方也说不出原因!...
  14. java实现excel转pdf_java实现excel转pdf(poi+itext)
  15. 程序员装机必备利器列表
  16. RT throttling分析【转】
  17. 使用Mybatis进行更新操作成功,数据库却没更新的原因
  18. ffmpeg 分离视频音频流 缺失sei信息
  19. java写培根披萨和海鲜披萨_培根海鲜披萨的做法【图解】_培根海鲜披萨的家常做法_培根海鲜披萨怎么做_下午茶...
  20. nsfw什么颜色_“ NSFW”是什么意思,以及如何使用它?

热门文章

  1. SpringBoot-文件在线预览解决方案-基于OpenOffice及jacob
  2. 关于发邮件报错535 Error:authentication failed解决方法
  3. ubuntu 18.04,无线网卡无驱动,连不上wifi,显示wifi没有适配器的解决方法
  4. brew update:以下未跟踪的工作树文件将被合并覆盖:
  5. 滚动到div的底部?
  6. linux查看绑定ipv6的端口号,[原创]如何在windows和linux绑定IPV6
  7. 10A 的GROUP和CUI使用
  8. 背景图片固定(背景图片附着)(HTML、CSS)
  9. linux之添加python环境变量
  10. 登峰连接程式改坐标软件_如何用SOLIDWORKS方程式驱动圆柱波浪线?