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

use*_*582 14 docker

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

Von*_*onC 14

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

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

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

搬运工人

jboss/base中引用"fedora"映像基本映像:

图片

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

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

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

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

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

  • 它不下载fedora"OS",而是下载fedora图像(参见我上面编辑的答案),这是一个包含fedora文件的文件系统.要成为一个完整的功能操作系统,它需要Linux主机的内核:请参阅http://stackoverflow.com/q/18786209/6309 (2认同)