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

时间:2015-04-28 05:56:51

标签: docker

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

2 个答案:

答案 0 :(得分:14)

任何缺少的资源都应该安装在Docker 映像中(可以从ubuntu映像开始)。
它不应该依赖于主机的依赖。

我们的想法是每次从图像运行容器时都能重现环境。

容器看不到主机资源(在已装入的卷旁边),因为它在容器和主机之间具有Docker引擎,以便配置cgroupsnamespaces来控制哪些资源容器可以查看和访问。

Docker

"fedora" image referenced in jboss/basebase image

images

  

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

     

由于Docker使用Union File System,因此进程认为整个文件系统是以读写方式挂载的。但所有更改都转到最顶层的可写层,而在下面,只读图像中的原始文件保持不变。
  由于图像不会改变,因此图像没有状态。

请参阅“What is the relationship between the docker host OS and the container base image OS?”:

  

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

     

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

答案 1 :(得分:0)

你需要注意的是

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