Docker 为什么有 centos 有 Ubuntu 镜像版本

2016-05-01 15:43:11 +08:00
 leafx
有些镜像就会有两种系统底层的,难道在虚拟机里跑容器,容器里跑不同系统,不懂了,大神指点下 🌞
4237 次点击
所在节点    Docker
7 条回复
NemoAlex
2016-05-01 21:45:43 +08:00
你说对了,就是这样。
leafx
2016-05-01 23:04:02 +08:00
@NemoAlex 总觉得不应该是这样的 😹
ryd994
2016-05-05 22:16:19 +08:00
@leafx 确实不应该。严格来讲,容器内应该只有运行必须的相关库。这样启动快而且安全性高
但是,大多数人并没有构建轻容器的能力( ldd 检查需要什么库之类的)
而且很多时候也并不需要轻容器的启动性能和安全性,毕竟大家这么多年没容器化,安全性还不是保证下来了。只要不犯傻,就算传统服务结构,安全性也是没问题的。容器化的好处是就算犯傻也没大事和使用方便。
用传统系统做基础镜像,一般只要用包管理装上需要的软件,然后配置文件挂载进去就可以用了。 dockerfile 5 行之内就能搞定
leafx
2016-05-05 23:43:34 +08:00
@ryd994 首先非常感谢热心的解答。但是有一点不解,一个容器( Container )我理解只是相当于在 Host 机上做了一个安全区而非 vbox ,所以不认为它有运行独立系统的能力,所以我猜所谓的基础镜像应该是被移植过的产品,而非原生 iso 直接安装到 container
ryd994
2016-05-05 23:54:43 +08:00
@leafx 换个说法,这个安全区并不是 overlay ,不是基于现有的系统。所以安全区内必须预先准备好相关的文件。

至于这些镜像怎么制做的,你可以参见它的 dockerfile
https://github.com/CentOS/sig-cloud-instance-images/blob/CentOS-7/docker/Dockerfile
实际上只包含系统内的文件而已
不包括任何内核或者驱动
ryd994
2016-05-05 23:56:47 +08:00
@leafx 一个重要的事: docker 里的 centos 是没有 init/systemd 的,也没有 cron 等服务(当然你可以手动允许 crond ,这是另一回事)
原则上容器内就只跑一个进程(和它的子进程)
leafx
2016-05-06 09:06:59 +08:00
@ryd994 非常感谢这么详细的解答 感谢感谢🙏🙏

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

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

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

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

© 2021 V2EX