如何以及为何将OS用作Docker上的容器

时间:2019-02-19 11:37:16

标签: docker

我刚刚开始学习码头工人容器。对我来说,可以将应用程序及其所有依赖项容器化,然后将其部署在 docker engine 上并运行它。但是我很困惑如何将 UBUNTU 之类的操作系统作为容器部署在Docker上?因为我了解的基本概念是,Docker容器没有应用程序,或者没有最小操作系统依赖性。那么为什么OS也被用作容器?操作系统是否被视为docker上的应用程序?还是它们有其​​他用途,它们只是为应用程序提供最小的依赖关系?如果有人可以解释这个概念,那就太好了。

2 个答案:

答案 0 :(得分:2)

Linux系统包含Linux内核以及位于其之上的一组程序/实用程序,它们定义了系统的整体行为和外观。与虚拟化技术相比,使Docker轻巧的是,它与主机OS 共享内核。但并非其余程序。

您可能不想在纯内核上部署您的应用程序-您需要POSIX api以及shell和包管理器。所有这些东西都随Ubuntu或您喜欢的任何发行版一起提供。因此,对您的应用进行容器化时,您选择最合适的Linux发行版并使用适当的基本docker映像。通常,您会考虑大小,默认程序包管理器和滚动/稳定部署规则。

实际上,您可以使用LFS或使用FROM scratch指令编写最少的代码来创建图像,但是我怀疑是否值得花时间。

所以,回到您的问题:

  

但是我很困惑如何将UBUNTU之类的操作系统作为容器部署在docker上?

只需安装为tar.gz rootfs

  

那么为什么OS也被用作容器?

让您拥有包管理器,glibc和其他工具。您喜欢RUN apt-get install -y whatever,不是吗?

  

操作系统是否被视为docker上的应用程序?

不,Docker中没有 application 概念。只有主进程才能使容器保持活动状态。而且操作系统不被视为主要过程。

答案 1 :(得分:1)

Docker将提供最低版本的os来部署您的应用程序。就像您使用alpine(docker中最小的映像)一样,其大小约为5 MB。您必须手动安装特定于您的应用程序的其他组件。 Docker将为您提供创建容器的平台。您希望在容器内使用什么。您可以使用alpine或ubuntu之类的高级操作系统,然后部署应用程序。