如何将本地现在比较复杂的环境直接做成 docker 的镜像

2019-06-06 14:57:22 +08:00
 lewin5

刚研究 docker 没多久,网上看到的都是说通过 build 或 commit 来制作镜像,可是我在虚拟机里配置很多 jenkins 其他集成的插件和其他的东西,想直接将本地环境直接做成镜像怎么弄。。。我不想又重新基于一个 centos 或者 ubuntu 来重新在 dockfile 里面一步一步重头开始来 build,而且感觉这样会有很多问题,因为直接集成 jenkins 很多的东西时出现很多不兼容的,甚至替换过很多 jar 包之类的。 help !!!

7185 次点击
所在节点    Docker
7 条回复
luckyrayyy
2019-06-06 15:11:19 +08:00
没听说过这种操作...
XSG
2019-06-06 18:36:43 +08:00
用 dockerfile 一步步来吧
troywinter
2019-06-06 18:57:13 +08:00
#2 正解,把 docker file 里的步骤分开,一步一步来,可以根据用途在进一步分解成 base image 和 sub image,比如 base image 安装一些公用的工具和环境,sub image 安装项目或语言特定的环境,然后各个服务在做自己特定的 image,类似对象继承的方式,但注意要 scale out 而不是 scale up
lewin5
2019-06-14 11:07:43 +08:00
@XSG 嗯,有考虑过选一个 base image 然后每个步骤,所需环境一步步写在 dockerfile 里面,就是觉得太麻烦了,在想有没有啥类似快照的方式直接将本地环境转换成 dockerfile 不用自己一步步来写,现在应该还没有,以后应该会有的把。
lewin5
2019-06-14 11:15:45 +08:00
@troywinter 嗯,thx,现在暂时把 jenkins 那块剥离出来了,只针对运行环境做成镜像,FROM ubuntu 然后在 dockerfile 里面 install 一些需要的依赖和工具就行了,现在就是感觉做出来的 image Size 有点大,装了些 jdk、camke、gcc 之类的 7~8 个依赖和工具后,size 差不多就有 800+M 了。。。有没有什么办法能减小 image 的大小?
troywinter
2019-06-14 12:22:20 +08:00
@lewin5 image size 不等同于容器运行时的内存大小,可以自己在 docker 里验证一下,包含 java 的运行时本来就会相对占用比较高,但你可以把 jdk 和 gcc 之类的分开,关键看你的服务需要哪些环境就安装哪些,按业务线来分,如果只是 jenkins 其实影响不大,但你可以分为 java 工具链和 C/C++工具链,把它们分离开来。
lewin5
2019-06-17 11:45:18 +08:00
@troywinter 看了下好像在 docker 里面 install 这些的时候,依赖什么的本来就这么大,是想针对开发或者测试环境搭建一个 docker image,jenkins 其实只是通过 hook 触发来打包分发这些 image,可能还是得这么大,嗯,谢谢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX