2015-10-26 59 views
1

在Docker中是否有一種方法可以將容器化go應用程序所需的Go共享庫放在只讀共享內存區域中?目標是允許許多容器執行相同的代碼,從而減少容器中的內存需求。我預計副作用將是更小的容器圖像。轉到共享庫以便Docker容器共享

這些Go共享庫在內存中的位置?

+0

爲什麼不爲編譯所需的應用程序編譯靜態鏈接的二進制文件,並將它們放入容器中?去二進制文件通常不是那麼大,你需要擔心磁盤使用量過多。 Go的一個重要特性就是它可以讓你構建自包含的,靜態鏈接的二進制文件,而Docker的優點之一就是允許你構建自包含的,孤立的...以及容器。爲了節省一些磁盤空間,你必須有一個非常有說服力的理由來繞過這兩個很好的功能。 –

+0

我不想節省磁盤空間。我試圖通過將我的Go共享庫加載到將由所有容器共享的內存區域來減少內存消耗。我想要Docker提供的隔離,但使用較少的內存。想想成千上萬個容器。 – Phil

回答

0

圖像尺寸較少,內存較多,磁盤空間較多。

您可以使用共享VOLUME路徑將這些共享動態庫設置爲其自己的映像。

然後,您然後碼頭創建一個基於該圖像的容器:這是一個data volume container

最後,您可以隨意使用所創建的容器,併爲每個應用docker run容器配置--volumes-from=<yourCreatedContainer>