docker 镜像一定是系统吗?

2016-11-09 18:14:47 +08:00
 anonymoustian

在网上看的很多例子,都是下载一个 Ubuntu 或者 CentOS,然后再于此之上构建应用 打包镜像

我想问一下 Docker 镜像一定要是系统吗?

如果不是系统,假设只是一个 Apache 之类的,那么运行的原理又是如何呢?

4565 次点击
所在节点    Docker
8 条回复
rrfeng
2016-11-09 18:17:28 +08:00
不是。

去看文档啊,原理很清楚的。
9hills
2016-11-09 18:18:12 +08:00
不能,必须得是一个 rootfs
bdbai
2016-11-09 19:47:24 +08:00
“只是一个 Apache ”
你去翻 Dockerfile ,肯定有一个基础镜像的。比如 nginx 有基于 Ubuntu 的普通镜像,也有基于 Alpine 的轻量镜像。

顺便安利 Alpine ,基础镜像只有不到 10 MB 。
Bardon
2016-11-09 20:07:34 +08:00
linux 下,所谓的 docker 镜像,只是采用的发行版的包管理,其只是一个容器,没有 kernel ,所有进程由外部的 linux 内核驱动
mac & win 下,则由虚拟机中的 linux 内核来驱动
Contextualist
2016-11-09 20:24:07 +08:00
有一个神奇的东西叫 FROM scratch
https://docs.docker.com/engine/userguide/eng-image/baseimages/
简单来说就是一个空镜像,各种系统的基础镜像都是基于它写的。对于某些程序,可以 FROM scratch ,然后再 ADD 这个程序的没有系统依赖的二进制可执行文件,这样得到的镜像只有这个二进制文件的大小。
anonymoustian
2016-11-10 20:01:25 +08:00
@Bardon 这样的话 docker 是不是要受限于本地的 linux 操作系统版本?是内核版本还是发行版本呢?
Bardon
2016-11-10 20:45:48 +08:00
@anonymoustian docker 通过 namespaces 来进行各种隔离,包括 kernel 的 pid 、 net 、 ipc 、 mnt 、 uts 等
这些官方都有资料,为什么不去看下呢
keyfunc
2016-11-23 14:50:59 +08:00
docker 基于 lxc

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

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

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

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

© 2021 V2EX