Docker了解FROM部分图像

时间:2015-10-28 21:57:01

标签: linux docker virtualization dockerfile

阅读https://docs.docker.com/introduction/understanding-docker/后,我仍然难以理解码头工人的轻量级容器。

观看一些公共图像,其中大部分是基于以下其中一个" base"图像,如FROM debian:jessieFROM debian:wheezy,也有ubuntu的变种,我猜也是fedora和centos(还有一个" scratch"这是另一个主题)。

所以,考虑到这一点,我理解,每个docker容器都运行基本操作系统(图中提到),那么它是如何工作的?轻量级来自哪里?您可以根据Fedora上的debian:jessie和debian上基于centos的图像运行图像吗?

怎么样"刮擦"?如果您将Dockerfile基于" scratch"然后你没有在容器内运行操作系统,那么在这种情况下它是如何工作的呢?

主机系统的Linux内核与在此主机系统上运行的docker容器之间有什么关系?

1 个答案:

答案 0 :(得分:0)

  

轻量级来自哪里?

在所选后端允许的情况下,图像将作为其基础的增量存储 - 因此,如果您有多个容器使用相同的基本映像,则该基本映像仅在磁盘上复制一次。此外,每个映像都在重用您的主机内核,并且不需要硬件级虚拟化。

  

所以,考虑到这一点,我理解,每个docker容器都运行基本操作系统(图中提到),那么它是如何工作的?

"运行X os"真是太模糊了,不能成为一个有用的描述;你想要的单词" run"意思是,它本身并不清楚。在Docker环境中启动的每个应用程序都使用主机的内核,包含容器提供的文件系统内容(因此共享库,配置等)。

  

你可以运行基于debian的图像:基于fedora的jessie,以及基于debian的centos的图像吗?

是。任何依赖于特定操作系统内核的功能都将无法使用。

  

主机系统的Linux内核与在此主机系统上运行的docker容器之间有什么关系?

主机系统内核是唯一使用的内核;周期。

  

怎么样"刮擦"?如果您将Dockerfile基于" scratch"然后你没有在容器内运行操作系统,那么在这种情况下它是如何工作的呢?

您可以将任何软件插入与主机内核一起运行的容器中。在这种情况下,您有责任将该软件设置为在没有通常由基本映像提供的任何组件(如共享库)的情况下运行。这通常意味着您需要将此软件编译为静态构建,而不是依赖于任何操作系统提供的实用程序(如shell),除非您自己提供它们。