Docker镜像共享OS系统文件和配置?

时间:2018-10-07 16:57:45

标签: docker

考虑到我在ubuntu旧版本的Dockerfile下面说14.0.4

sudo ln -s /Applications/MAMP/bin/php/phpX.x.x/bin/php /usr/bin/php

我从最近的docker学习中了解到docker将所有必需的文件保留在映像中,我们可以将其作为容器运行在任何地方 环境。

我的问题是,该映像还将包含OS(Ubuntu 14.0.4)特定的文件/库(内核除外)吗?现在,如果我在Ubuntu 16.0.4上运行此映像, 它将在具有14.0.4内核的14.0.4 OS上运行吗?

1 个答案:

答案 0 :(得分:1)

Docker映像包含所有与文件系统相关的文件,您可以将其视为没有内核的系统。

在您的dockerfile中,您的映像基于php:7.2-apache,因此根据您的情况:

  • 您在一台14.0.4主机上运行容器:

    它使用php:7.2-apache的文件,共享主机的内核,即14.0.4的内核。

  • 您在一台16.0.4主机上运行容器:

    它使用php:7.2-apache的文件,共享主机的内核,即16.0.4的内核。

总结:

Docker容器仅共享主机内核,而不共享主机文件。

在您的情况下,php:7.2-apache dockerfile是here,因此它仅使用debian:stretch-slim的bins和libs。

下一张图片可能会让您理解清楚。在这张照片中,您可以看到ubuntu:15.04位于Image layers的块内,因此,在构建映像之后,将固定使用该容器的系统,Container layer仅需共享host machine中的内核。

enter image description here