运行 和 OS (Ubuntu) 在 Docker 中有什么意义?

What's the point of running an OS (Ubuntu) in Docker?

我很难理解这个概念。我对 Docker 的工作原理和好处有一些了解,虽然我了解 运行 容器中的 Web 服务器、数据库和开发环境,但我不明白 运行 一个 OS 就像 Docker 中的 Ubuntu。

谁能解释一下您为什么要这样做,以及将整个 OS 装在容器中的好处?

OS 本质上是运行您的应用程序所需的时间环境。如果您的应用程序在 Linux 上编译为 运行,则它依赖于执行环境中必须存在的 Linux 库(libc、glib 等),无论其类型如何。 Docker也不例外。

因此 Ubuntu 应用程序需要 Ubuntu 图像才能 运行 正确。

请注意,Docker 容器既不包含也不 运行 整个 OS,而只包含允许您的应用 运行 的最小库集。特别是它从不包含或执行内核,因为它 运行 在主机内核下。

Docker 没有自己的 OS,它安装在一台机器上,这允许它共享主机操作系统资源。只有一个 OS,所有容器都将使用那个 OS。 如果没有 OS,大多数应用程序将毫无意义,因为它是 IO、硬件调用等所必需的。 每个 docker 容器可能有不同的包(java、python、jboss 等)、安装的应用程序。