最适合数据容器的容器?

时间:2014-09-15 10:20:05

标签: docker

用于仅数据Docker容器的最合适(最小,最简单)容器是什么?

在文档中,他们使用training / postgres容器。但是,我相信另一个容器实际上会运行数据库(例如postgres)。

http://docs.docker.com/userguide/dockervolumes/

我认为数据容器非常小,因为它通常只为那个容器提供数据量。

创建仅限数据的容器时,可能忽略容器?

4 个答案:

答案 0 :(得分:39)

更新:现在我们已经命名了卷,您通常根本不想使用数据容器。

相同的图像用于数据容器 - 在本例中为Postgres图像。您不会让数据容器保持运行,因此不会消耗资源。

使用相同的图像很重要,原因如下:

  • 由于您已经缓存了图像,因此占用较少的空间。
  • 图像有机会使用数据播种音量,例如:默认文件。
  • 权限和所有者将是正确的。

有关详细信息,请参阅Data Only Container Madness

答案 1 :(得分:22)

我推荐此tianon/true中的collection of dockerfiles图片。 在125字节,它比基于busybox的图像小:

REPOSITORY                 TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
tianon/true                latest              724d63a6172d        35 hours ago        125 B

基于此图像的容器立即退出,适用于仅存储容器。

答案 2 :(得分:11)

Busybox是基本图像,而不是用户图像,因此对于生产使用来说更实用,它也很小。

图像泊坞窗页面here

  

BusyBox:嵌入式Linux的瑞士军刀

     

大小约为2.5 Mb。 Busybox是最小的Linux发行版之一。

     

BusyBox将许多常见UNIX实用程序的微小版本组合到一个小的可执行文件中。它提供了你通常在GNU fileutils,shellutils等中找到的大多数实用程序的替换.BusyBox中的实用程序通常比它们的全功能GNU兄弟有更少的选项;但是,包含的选项提供了预期的功能,其行为与GNU对应物非常相似。 BusyBox为任何小型或嵌入式系统提供了相当完整的环境。

答案 3 :(得分:1)

This post recommends使用一个空的“临时”容器-完全没有操作系统:

Dockerfile:

FROM scratch

VOLUME /data
ENTRYPOINT ["/no/such/file"]

我刚做了一个空的,图像是... 0字节!

然后我在构建过程中仅复制了2k文件,图像为260个字节,因此必须进行压缩。

我之所以使用它,是因为命名卷在没有主机的AWS Fargate这样的半/无服务器环境中并没有那么有用,并且您想部署版本化数据。

更新:如果您想使容器在docker-compose中正常工作,则上述示例将不起作用,因为入口点失败。 tianon/true似乎是最好的解决方案,一个返回true的小程序。因此,您可以使用FROM tianon/true