将已安装的工具从一个容器共享到所有使用Docker的容器组成

我对Docker非常了解,了解容器如何工作和共同工作。 我正在创build一个LEMP堆栈,我有nginx和php7-fpm作为单独的容器。 每个人都有一个Dockerfile,基本上创造了我所需要的一切。 我的问题,虽然是在一个容器中安装工具(如ffmpeg,exiftool等..)不可用与其他容器。

是否有可能在所有容器中都有这些工具?

没有简单的方法来确保安装在一个已经定义的容器中的工具出现在其他容器中 – 这就好像安装在一个虚拟机文件系统中的应用程序出现在其他虚拟机中一样。

理论上讲,你可以为所有的容器提供一个文件系统,然后把这些工具放在一个外部文件系统中,但是如果你仔细想一想,那不是一个好主意:突然之间,你的容器会有外部的依赖。

有两种方法可以在这里工作:首先,如果要从头开始构build容器,则可以将这些工具添加到通用基础映像,并将Dockerfile的From设置为使用该基础映像而不是基本操作系统映像。

其次,如果您为容器使用第三方映像,则创build新的Docker文件,将From指向第三方映像,然后在事实之后安装这些工具。 不幸的是,Dockerfiles不支持INCLUDE语句,所以要么分别将相同的指令复制到所有文件中,要么使用预处理器来生成Docker文件。 (对我来说,这是一个单一的共享基础图像的一个很好的论点。)