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

是否可以使用systemd的套接字激活function启动一个单独的Docker容器(例如Web服务器)来公开(监听)端口? 这个想法是通过仅在第一次实际需要时才启动容器来节省资源(并且可能在闲置时再次停止以节省资源)。

注意:这个问题不是关于使用套接字激活(已经支持 )启动Docker守护进程本身,而是关于按需启动单个容器。

总之,你不能。

但是,如果你想要一个解决scheme,你首先需要运行一个像CoreOS或者geard这样的工具来运行一个systemd服务中的每个Docker容器。

即便如此,Docker对inheritance套接字的支持已经过去了。 我知道geard 正在稳定的支持 。 CoreOS已经发布了对Go的套接字激活的广泛支持。 Red Hat的人也在Fedora的Docker软件包中添加了相关的补丁 ,这些软件包使用了Go的套接字激活库,并改进了“前景模式”,这是使其工作的一个关键组件。

(我是Lennart 关于容器套接字激活的早期文章的David Strauss,这个话题引起了我很大的兴趣,我在Red Hat发邮件的时候给了这个补丁的作者,并且联系了Geard团队,我会尽量保持这个答案更新。)

如果必须使用systemd,上个月有一篇关于这个博客文章( 这里还没有尝试过)。

如果技术的select不是一个严格的约束,那么你可以用你最喜欢的编程语言编写一个小代理,然后简单地做一个Docker API调用来确保容器启动。 这就是窃贼(我的实验性的nodejs代理)这样做。