Docker单个进程通过容器,但如何一起使用它们

我有独立的生物信息学工具,我把它们放到容器中,它们工作正常。 现在我必须将一些已经使用docker的工具放入容器中。 不是一个真正的,但可以理解的例子:Docker A有 ,Docker B有wc ,我们有第三个工具catwc ,在同样的组合中使用catwc

Docker的最佳实践表明:“在几乎所有情况下,你只能在一个容器中运行一个进程,将应用程序分离到多个容器中,可以更容易地进行水平扩展和重用容器,如果这个服务依赖于另一个服务,容器连接“。

我看到的所有解决scheme都很麻烦。

  • 我要么将wc && cat && catwc添加到一个docker映像中,同时已经将wc && cat分开。 这意味着我将有2个最佳实践容器,一个不是。
  • 不要dockerize catwc,但做一些bash包装重命名docker run A cat "$@" 和类似的wc

在生物信息学术语中,我有一个工具,每个在不同的docker图像列表:bwa,bowtie,samtools,tabix,bgzip,bedGraphToBigWig,SHAPEIT2,VCFtools,Plink和我有使用所有的基于java的alea包的工具,我使用的一个解决scheme是把所有东西放在一个图像中。

还有其他更易于pipe理/太空安全的解决scheme吗?

这取决于这个工具是否正在运行进程(比如服务器),还是一个简单的库被调用(比如, bigwig似乎是)

对于馆藏,您可以将它们装入数据容器中,然后使用选项--volumes-from将它们装入最终容器中。
这意味着这些容器不会运行任何东西,他们只是docker credate

另一个select是直接用这些库COPY来build立最终容器的图像。

对于正在运行进程的程序,可以使用--link选项 将它们链接到主容器 (因为它们由相同的--link守护程序pipe理)。
这样,主容器可以ping和访问其他的。