假设我下面有来自ubuntu旧版本的Dockerfile,比如14.0.4
FROM php:7.2-apache
COPY ./ /var/www/html/
EXPOSE 80
我从最近的码头学到的是,码头保持所有需要的文件在图像中,我们可以作为容器运行在任何地方,而不管环境。
我的问题是这个映像还会包含OS(Ubuntu14.0.4)特定的文件/libs(内核除外)吗?现在,如果我在Ubuntu16.0.4上运行这个映像,它会运行在14.0.4OS和16.0.4内核上吗?
发布于 2018-10-07 18:16:35
Docker映像包含所有与文件系统相关的文件,您可以将其视为一个没有内核的系统。
从您的dockerfile中,您的映像是基于php:7.2-apache
的,因此对于您的情况:
php:7.2-apache
文件,共享主机的内核,即14.0.4的内核。php:7.2-apache
文件,共享主机的内核,即16.0.4的内核。总结:
Docker容器只共享主机内核,永远不要共享主机的文件。
对于您的场景,php:7.2-apache
dockerfile是这里,所以它只使用debian:stretch-slim
的回收箱和库。
下一张照片可能会让你明白。在这张图中,您可以看到ubuntu:15.04
位于Image layers
块中,所以在构建映像之后,容器将使用的系统已经修复,Container layer
只是从host machine
共享内核。
https://stackoverflow.com/questions/52690806
复制相似问题