刚研究 docker 没多久,网上看到的都是说通过 build 或 commit 来制作镜像,可是我在虚拟机里配置很多 jenkins 其他集成的插件和其他的东西,想直接将本地环境直接做成镜像怎么弄。。。我不想又重新基于一个 centos 或者 ubuntu 来重新在 dockfile 里面一步一步重头开始来 build,而且感觉这样会有很多问题,因为直接集成 jenkins 很多的东西时出现很多不兼容的,甚至替换过很多 jar 包之类的。 help !!!
1
luckyrayyy 2019-06-06 15:11:19 +08:00
没听说过这种操作...
|
2
XSG 2019-06-06 18:36:43 +08:00 via iPhone
用 dockerfile 一步步来吧
|
3
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
|
4
lewin5 OP @XSG 嗯,有考虑过选一个 base image 然后每个步骤,所需环境一步步写在 dockerfile 里面,就是觉得太麻烦了,在想有没有啥类似快照的方式直接将本地环境转换成 dockerfile 不用自己一步步来写,现在应该还没有,以后应该会有的把。
|
5
lewin5 OP @troywinter 嗯,thx,现在暂时把 jenkins 那块剥离出来了,只针对运行环境做成镜像,FROM ubuntu 然后在 dockerfile 里面 install 一些需要的依赖和工具就行了,现在就是感觉做出来的 image Size 有点大,装了些 jdk、camke、gcc 之类的 7~8 个依赖和工具后,size 差不多就有 800+M 了。。。有没有什么办法能减小 image 的大小?
|
6
troywinter 2019-06-14 12:22:20 +08:00
@lewin5 image size 不等同于容器运行时的内存大小,可以自己在 docker 里验证一下,包含 java 的运行时本来就会相对占用比较高,但你可以把 jdk 和 gcc 之类的分开,关键看你的服务需要哪些环境就安装哪些,按业务线来分,如果只是 jenkins 其实影响不大,但你可以分为 java 工具链和 C/C++工具链,把它们分离开来。
|
7
lewin5 OP @troywinter 看了下好像在 docker 里面 install 这些的时候,依赖什么的本来就这么大,是想针对开发或者测试环境搭建一个 docker image,jenkins 其实只是通过 hook 触发来打包分发这些 image,可能还是得这么大,嗯,谢谢了。
|