如果我在一组不同的Linux发行版上运行Docker Engine和相同的容器,容器是否会以相同的方式运行?我问,因为在许多情况下,应用程序依赖于特定的Linux发行版来获取某些资源,例如字体。如果我在Docker容器中运行的应用程序依赖于Ubuntu中使用的字体(并且可能还有许多其他依赖项),那么这是如何管理的?我是否需要在容器内安装字体,是否需要在运行应用程序的容器内运行Ubuntu,或者应用程序是否使用运行容器的底层操作系统中的字体?
答案 0 :(得分:14)
任何缺少的资源都应该安装在Docker 映像中(可以从ubuntu映像开始)。
它不应该依赖于主机的依赖。
我们的想法是每次从图像运行容器时都能重现环境。
容器看不到主机资源(在已装入的卷旁边),因为它在容器和主机之间具有Docker引擎,以便配置cgroups和namespaces来控制哪些资源容器可以查看和访问。
"fedora" image referenced in jboss/base是base image:
在Docker术语中,只读图层称为图像。图像永远不会改变。
由于Docker使用Union File System,因此进程认为整个文件系统是以读写方式挂载的。但所有更改都转到最顶层的可写层,而在下面,只读图像中的原始文件保持不变。
由于图像不会改变,因此图像没有状态。
请参阅“What is the relationship between the docker host OS and the container base image OS?”:
主机操作系统和容器之间的唯一关系是内核。
由于内核仍然是主机的内核,因此您不会分发任何特定的内核模块/补丁。
答案 1 :(得分:0)
你需要注意的是