了解docker - 容器如何包含所有必需的依赖项?

时间:2014-09-10 05:14:23

标签: docker

我想了解Docker。

我的理解是,有效的容器就像应用程序运行后的应用程序,但只包含最终目的地中已安装的文件。这是对的吗?

如果是,那么所有依赖项呢?创建容器的程序如何知道程序需要的所有依赖项?

对不起,这些问题是愚蠢的,但我正试图正确掌握Docker。

1 个答案:

答案 0 :(得分:2)

创建容器的程序是docker守护程序。它对应用程序依赖性一无所知。它确实了解文件系统。您通常以"基本映像"开头,这是一个可立即安装的根文件系统,如ubuntucentos。然后,当您添加新软件时,会将其添加到新的"图像"在旧的之上。

因此,如果您将软件安装到容器中,则以持久方式(例如,在磁盘上)安装的所有内容都将保留在该文件系统上。事实上,由于这个文件系统是一个"写入副本"文件系统,它确切地知道新文件是什么,因此它可以有效地将您添加的部分打包到"图像"层。那个新的"图像"永远不会改变。新图像加上基本图像可以启动一个可运行的容器(现在添加了一个新图层来捕获所做的任何更改)。

虽然容器不仅仅是一个独立的文件系统。它也是一个独立的进程树和一个网络接口。