2015-10-26 60 views
1

在Docker中是否有一种方法可以将容器化go应用程序所需的Go共享库放在只读共享内存区域中?目标是允许许多容器执行相同的代码,从而减少容器中的内存需求。我预计副作用将是更小的容器图像。转到共享库以便Docker容器共享

这些Go共享库在内存中的位置?

+0

为什么不为编译所需的应用程序编译静态链接的二进制文件,并将它们放入容器中?去二进制文件通常不是那么大,你需要担心磁盘使用量过多。 Go的一个重要特性就是它可以让你构建自包含的,静态链接的二进制文件,而Docker的优点之一就是允许你构建自包含的,孤立的...以及容器。为了节省一些磁盘空间,你必须有一个非常有说服力的理由来绕过这两个很好的功能。 –

+0

我不想节省磁盘空间。我试图通过将我的Go共享库加载到将由所有容器共享的内存区域来减少内存消耗。我想要Docker提供的隔离,但使用较少的内存。想想成千上万个容器。 – Phil

回答

0

图像尺寸较少,内存较多,磁盘空间较多。

您可以使用共享VOLUME路径将这些共享动态库设置为其自己的映像。

然后,您然后码头创建一个基于该图像的容器:这是一个data volume container

最后,您可以随意使用所创建的容器,并为每个应用docker run容器配置--volumes-from=<yourCreatedContainer>