可以链接Docker容器。大多数示例涉及将Redis容器与SQL容器相链接。链接容器的美妙之处在于,您可以将SQL环境与Redis环境分开,而不是构建一个单片图像,而是可以维护两个完全独立的图像。
我可以看到它如何用于服务器应用程序(通过端口传输通信),但是我在为不同的库复制类似的方法时遇到了麻烦。作为一个具体的例子,我想使用一个带有Ipython Notebook的容器和C / C ++ - 库caffe(它通过一个子文件夹中的包公开Python接口)和一个优化库,如Ipopt。 Ipython和Caffe的容器很容易存在,我目前正在为Ipopt创建一个单独的图像。然而,如何在不构建一个巨大的单片Dockerfile的情况下将三者连接在一起? Caffe,Ipython和Ipopt都有一系列的依赖关系,使得组合维护成为一场真正的噩梦。
答案 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
图像。