阅读https://docs.docker.com/introduction/understanding-docker/后,我仍然难以理解码头工人的轻量级容器。
观看一些公共图像,其中大部分是基于以下其中一个" base"图像,如FROM debian:jessie
或FROM debian:wheezy
,也有ubuntu的变种,我猜也是fedora和centos(还有一个" scratch"这是另一个主题)。
所以,考虑到这一点,我理解,每个docker容器都运行基本操作系统(图中提到),那么它是如何工作的?轻量级来自哪里?您可以根据Fedora上的debian:jessie
和debian上基于centos
的图像运行图像吗?
怎么样"刮擦"?如果您将Dockerfile基于" scratch"然后你没有在容器内运行操作系统,那么在这种情况下它是如何工作的呢?
主机系统的Linux内核与在此主机系统上运行的docker容器之间有什么关系?
答案 0 :(得分:0)
轻量级来自哪里?
在所选后端允许的情况下,图像将作为其基础的增量存储 - 因此,如果您有多个容器使用相同的基本映像,则该基本映像仅在磁盘上复制一次。此外,每个映像都在重用您的主机内核,并且不需要硬件级虚拟化。
所以,考虑到这一点,我理解,每个docker容器都运行基本操作系统(图中提到),那么它是如何工作的?
"运行X os"真是太模糊了,不能成为一个有用的描述;你想要的单词" run"意思是,它本身并不清楚。在Docker环境中启动的每个应用程序都使用主机的内核,包含容器提供的文件系统内容(因此共享库,配置等)。
你可以运行基于debian的图像:基于fedora的jessie,以及基于debian的centos的图像吗?
是。任何依赖于特定操作系统内核的功能都将无法使用。
主机系统的Linux内核与在此主机系统上运行的docker容器之间有什么关系?
主机系统内核是唯一使用的内核;周期。
怎么样"刮擦"?如果您将Dockerfile基于" scratch"然后你没有在容器内运行操作系统,那么在这种情况下它是如何工作的呢?
您可以将任何软件插入与主机内核一起运行的容器中。在这种情况下,您有责任将该软件设置为在没有通常由基本映像提供的任何组件(如共享库)的情况下运行。这通常意味着您需要将此软件编译为静态构建,而不是依赖于任何操作系统提供的实用程序(如shell),除非您自己提供它们。