用于仅数据Docker容器的最合适(最小,最简单)容器是什么?
在文档中,他们使用training / postgres容器。但是,我相信另一个容器实际上会运行数据库(例如postgres)。
http://docs.docker.com/userguide/dockervolumes/
我认为数据容器非常小,因为它通常只为那个容器提供数据量。
创建仅限数据的容器时,可能忽略容器?
答案 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
。