考虑到我在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上运行吗?
答案 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
中的内核。