Docker容器隔离,是否关心底层Linux操作系统?

如果我在一组不同的Linux发行版上运行Docker Engine和同一个容器,容器的运行方式是否相同? 我在问,因为在很多情况下,应用程序依赖于特定的Linux发行版来获取某些资源,例如字体。 如果在Docker容器中运行的应用程序依赖于Ubuntu中使用的字体(可能还有其他许多依赖项),那么这是如何pipe理的? 我是否需要在容器中安装字体,是否需要在运行应用程序的容器中运行Ubuntu,或者应用程序是否使用运行容器的底层操作系统的字体?

任何缺less的资源应该安装在一个Docker 镜像 (可以从Ubuntu镜像开始)中。
它不应该依赖于主机的依赖。

这个想法是能够在每次从图像运行容器时重现环境。

由于Container在容器和主机之间具有Docker引擎,所以容器看不到主机资源(为了安装卷),为了configurationcgroup和命名空间来控制容器可以看到和访问的资源。

搬运工人

在jboss / base中引用的“fedora”图像是基本图像 :

图片

在Docker术语中,只读图层称为图像。 图像永远不会改变。

由于Docker使用联合文件系统,进程认为整个文件系统是可读写的。 但所有更改都转到最上面的可写入层,而在下面,只读图像中的原始文件保持不变。
由于图像不变,图像没有状态。

请参阅“ docker主机操作系统和容器基础映像操作系统之间的关系是什么? ”:

主机操作系统和容器之间唯一的关系是内核。

由于内核仍然是主机的内核,因此您将不会拥有该分发提供的任何特定的内核模块/补丁。

你需要小心的是

  • 内核依赖,
  • 和一些强制访问控制(SELinux,Apparmor)configuration,这些configuration依赖于分配,可能会影响Docker容器的工作方式。