我看到 docker 存储库中的很多 docker 镜像都是使用 Ubuntu 基础制作的。
这意味着什么?每个容器都捆绑了一个精简版的 Linux 内核吗?
容器是否位于自己的内核之上?但我认为容器共享主机的内核(在某些情况下是 boot2docker,一个自定义的 Tiny Core Linux 构建,在其他情况下是类似 CoreOS 的东西)。
编辑:澄清一下问题。是的,我知道 docker 是一个进程容器,而不是一个完整的 VM。但是既然官方的 docker hub 注册表和 CentOS 等其他操作系统中都有“Ubuntu”容器,那么在容器中运行 Ubuntu 意味着什么?
回答:啊,我才恍然大悟。它是 Ubuntu 用户进程,包含 apt-get 和其他特定 Ubuntu 构建的配置过程。CentOS 也是如此。Docker 不是单一进程,只是单一入口。因此,对于这些发行版,入口点是某种 init 进程,它会产生其他进程。
osg*_*sgx 46
Docker 使用主机操作系统内核,容器内部没有自定义或附加内核。在一台机器上运行的所有容器都共享这个“主机”内核。
维基百科说http://en.wikipedia.org/wiki/Docker_(software)是
Docker 使用 Linux 内核的资源隔离特性,例如 cgroups 和内核命名空间,允许独立的“容器”在单个 Linux 实例中运行,避免启动虚拟机的开销。
cgroups、namespaces 和 LXC 是 Linux 内核用来隔离进程组的特性;仍然有单个内核、单个调度程序和一个内核内存管理器实例。
Boot2docker 和 CoreOS 只是带有一些主机内核的轻量级 Linux 发行版;它们可用于加载 Docker 容器。
boot2docker 是一个基于 Tiny Core Linux 的轻量级 Linux 发行版,专门用于运行 Docker 容器。它完全从 RAM 运行,重约 27MB 并在约 5 秒内启动(YMMV)。
http://en.wikipedia.org/wiki/CoreOS
单个控制主机(CoreOS 实例)运行多个隔离的 Linux 系统(容器),使用 Docker 作为额外的抽象层和接口 [14] 到 Linux 内核的底层操作系统级虚拟化功能。... 这种方法依赖于 Linux 内核的 cgroups 功能,它提供命名空间隔离以及限制、计算和隔离进程集合的资源使用(CPU、内存、磁盘 I/O 等)的能力。
Jer*_*rar 23
在几乎所有情况下,主机操作系统内核都是共享的。要运行不同的内核,您需要使用虚拟化。这很少见,仅在由于性能下降而需要时使用。
“Docker Engine 容器仅包含应用程序及其依赖项。它在主机操作系统的用户空间中作为一个隔离进程运行,与其他容器共享内核。因此,它享有 VM 的资源隔离和分配优势,但更多便携且高效。”
这可能有助于解释它是如何工作的:

来源:https : //www.docker.com/whatisdocker/
所有 docker 容器都使用主机内核。
这也意味着主机内核和容器发行版之间的某些不兼容可能会导致问题。理论上。例如,如果容器化软件想要使用某些未编译到主机内核中的内核功能,那么它就无法工作。
实践证明这种情况不会发生。Docker 容器的主要问题来源是 Docker 本身的(通常无法解释的)限制,而不是某些主机-来宾内核不兼容。
(附注:这是因为几乎所有 Linux 发行版都可以与任何 Linux 内核配合使用。)
| 归档时间: |
|
| 查看次数: |
74650 次 |
| 最近记录: |