使用systemd套接字激活启动Docker容器?

时间:2014-07-16 22:07:49

标签: docker systemd

可以使用systemd的socket activation功能启动公开(侦听)端口的单个Docker容器(例如Web服务器)吗?这个想法是通过仅在第一次实际需要时启动容器来节省资源(并且可能在空闲时再次停止以节省资源)。

注意:关于使用套接字激活(已经supported)启动Docker守护程序本身,但是关于按需启动单个容器的问题

2 个答案:

答案 0 :(得分:11)

简而言之,你不能。

但是,如果你想要一个解决方案,你首先需要运行一个像CoreOSgeard这样的工具来运行系统服务中的每个Docker容器。

即便如此,Docker对继承套接字的支持已经过去了。我知道geard是working on stable support。 CoreOS已发布对socket activation in Go的广义支持。红帽人员还在related patches中添加了使用Go的套接字激活库并改进前景模式的Fedora的Docker软件包,"使其发挥作用的关键因素。

(我是来自Lennart early article on socket activation of containers的David Strauss,这个主题让我非常感兴趣。我已经通过电子邮件发送了Red Hat的补丁作者并联系了geard团队。我和#39;尝试更新此答案。)

答案 1 :(得分:0)

如果必须使用systemd,上个月就有一篇博文,here(我自己还没试过)。

如果技术选择不是一个硬约束,你可以用你喜欢的编程语言编写一个小代理,然后简单地调用Docker API来确保容器启动。这就是snickers(我的实验性nodejs代理)执行此操作的方式。