链接docker容器以组合不同的库

时间:2015-01-16 08:09:36

标签: python c docker

可以链接Docker容器。大多数示例涉及将Redis容器与SQL容器相链接。链接容器的美妙之处在于,您可以将SQL环境与Redis环境分开,而不是构建一个单片图像,而是可以维护两个完全独立的图像。

我可以看到它如何用于服务器应用程序(通过端口传输通信),但是我在为不同的库复制类似的方法时遇到了麻烦。作为一个具体的例子,我想使用一个带有Ipython Notebook的容器和C / C ++ - 库caffe(它通过一个子文件夹中的包公开Python接口)和一个优化库,如Ipopt。 Ipython和Caffe的容器很容易存在,我目前正在为Ipopt创建一个单独的图像。然而,如何在不构建一个巨大的单片Dockerfile的情况下将三者连接在一起? Caffe,Ipython和Ipopt都有一系列的依赖关系,使得组合维护成为一场真正的噩梦。

2 个答案:

答案 0 :(得分:1)

Docker链接是关于链接微服务,即单独的进程,并且就我所见,与您的问题无关。

没有开箱即用的工具可以将单独的泊坞窗图像组合成一个容器,就像你打电话的方式一样,链接'在你的问题。

如果您不想拥有巨大的单片图像,您可以考虑使用配置工具a-la puppet,chef或ansible以及docker。一个例子here。理论上,您可以使用现有的食谱/剧本来获得所需的库。我会感到惊讶的是,如果这种方法对你来说比维护你的大单片"更容易。 Dockerfile。

答案 1 :(得分:1)

我对docker容器的看法是每个容器通常代表一个进程。例如。 redis nginx 。容器通常彼此通信using networking或通过shared files in volumes进行通信。

每个容器都运行自己的操作系统(通常在FROM中的Dockerfile - 部分中指定)。在您的情况下,您没有运行任何特定的进程,而只是希望共享库。这不是docker的设计目标,我甚至不确定它是否可行,但它确实好像是一种奇怪的做事方式。

因此,我建议您使用最小公分母(所有其他图像共有的一些共享库)创建基本图像,并且其他图像将该图像用作FROM图像。

此外,如果您需要更复杂的环境设置以及大量依赖关系和大量配置,我建议您查看其他配置工具,例如ChefPuppet