了解docker – 容器如何包含所有必需的依赖关系?

我想了解Docker。

我的理解是,有效的容器就像一个应用程序运行sinatller后,但只包含在最终目的地安装的文件。 这是正确的吗?

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

对不起,这些问题是不好的,但是我试图正确地把握Docker。

创build容器的程序是docker守护进程。 它不知道应用程序依赖关系的任何内容。 它知道文件系统。 您通常从“基本映像”开始,准备安装根文件系统(如ubuntucentos 。 然后,当你添加新的软件时,它会被添加到旧的“图像”上。

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

一个容器不仅仅是一个独立的文件系统。 它也是一个孤立的进程树和一个networking接口。