首页 > 解决方案 > Docker镜像共享OS系统文件和配置?

问题描述

考虑一下我有以下来自 ubuntu 旧版本的 Dockerfile 说 14.0.4

FROM php:7.2-apache
COPY ./ /var/www/html/
EXPOSE 80

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

我的问题是这个图像是否还包含操作系统(Ubuntu 14.0.4)特定的文件/库(内核除外)?现在,如果我在 Ubuntu 16.0.4 上运行此映像,它会在 14.0.4 操作系统和 16.0.4 内核上运行吗?

标签: docker

解决方案


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-apachedockerfile 在这里,所以它只使用debian:stretch-slim.

下一张图片可能会让你明白。在这张图中,你可以看到ubuntu:15.04是在 的块内Image layers,所以在构建了一个镜像之后,容器将使用的系统已经固定,Container layer只需从 共享内核即可host machine

在此处输入图像描述


推荐阅读