我是Docker的新手,了解容器如何协同工作。我正在创建一个LEMP堆栈,其中我有nginx和php7-fpm作为单独的容器。每个人都有一个Dockerfile,基本上创造了我所需要的一切。我的问题是在一个容器中安装工具(例如ffmpeg,exiftool等)时,其他容器不可用。
是否有可能在所有容器中提供这些工具?
答案 0 :(得分:1)
没有直接的方法可以确保安装在一个已经定义的容器中的工具出现在其他容器中 - 就像安装在一个VM的文件系统中的应用程序出现在其他VM中一样。
理论上你可以为所有容器提供一个文件系统,并将工具放在那个外部文件系统中,但如果你考虑一下,那不是一个好主意:突然间,你的容器有一个外部依赖
有两种方法可以在这里工作:首先,如果您从头开始构建容器,可以将这些工具添加到公共基础映像,并设置Dockerfile的 From 以使用该方法基本图像而不是基本的OS图像。
其次,如果您正在为容器使用第三方图像,请创建新的Dockerfiles,将从指向第三方图像,然后在事后安装工具。遗憾的是,Dockerfiles不支持 INCLUDE 语句,因此您需要将相同的指令分别复制到所有文件中,或使用预处理器生成Dockerfiles。 (对我来说,这是单个共享基本图像的一个很好的论据。)