在网上看的很多例子,都是下载一个 Ubuntu 或者 CentOS,然后再于此之上构建应用 打包镜像
我想问一下 Docker 镜像一定要是系统吗?
如果不是系统,假设只是一个 Apache 之类的,那么运行的原理又是如何呢?
1
rrfeng 2016-11-09 18:17:28 +08:00
不是。
去看文档啊,原理很清楚的。 |
2
9hills 2016-11-09 18:18:12 +08:00
不能,必须得是一个 rootfs
|
3
bdbai 2016-11-09 19:47:24 +08:00 via Android
“只是一个 Apache ”
你去翻 Dockerfile ,肯定有一个基础镜像的。比如 nginx 有基于 Ubuntu 的普通镜像,也有基于 Alpine 的轻量镜像。 顺便安利 Alpine ,基础镜像只有不到 10 MB 。 |
4
Bardon 2016-11-09 20:07:34 +08:00
linux 下,所谓的 docker 镜像,只是采用的发行版的包管理,其只是一个容器,没有 kernel ,所有进程由外部的 linux 内核驱动
mac & win 下,则由虚拟机中的 linux 内核来驱动 |
5
Contextualist 2016-11-09 20:24:07 +08:00 via iPad
有一个神奇的东西叫 FROM scratch
https://docs.docker.com/engine/userguide/eng-image/baseimages/ 简单来说就是一个空镜像,各种系统的基础镜像都是基于它写的。对于某些程序,可以 FROM scratch ,然后再 ADD 这个程序的没有系统依赖的二进制可执行文件,这样得到的镜像只有这个二进制文件的大小。 |
6
anonymoustian OP @Bardon 这样的话 docker 是不是要受限于本地的 linux 操作系统版本?是内核版本还是发行版本呢?
|
7
Bardon 2016-11-10 20:45:48 +08:00
@anonymoustian docker 通过 namespaces 来进行各种隔离,包括 kernel 的 pid 、 net 、 ipc 、 mnt 、 uts 等
这些官方都有资料,为什么不去看下呢 |
8
keyfunc 2016-11-23 14:50:59 +08:00
docker 基于 lxc
|