带有Samba的Docker容器退出,没有任何消息


8

我们有一台运行CentOS的服务器,在Docker容器中有多个服务将它们与主机更改分开。

上周星期五,我们在CentOS上进行了更新,从那时起,我们的一项服务便启动并立即退出。其他15多个服务都很好。

我克隆了容器设置,更改了容器名称并重建,但遇到了相同的问题:容器启动后退出,没有任何消息。

该容器派生自David Personette的samba容器。现在退出但尚未使用的实际命令是:

exec ionice -c 3 smbd -FS

我应该降级Docker会有副作用吗?还有什么我可以做的让它再次运行?我们选择了要从操作系统抽象的容器,这种抽象是否不如预期的好?


如果在容器中运行外壳程序然后手动执行该命令,会发生什么情况?
jordanm '16

我很难尝试尝试,该容器有一个入口点,需要命令行参数才能启动。如果可行,我不知道如何在生产中使用它,那有可能吗?
约翰

Answers:


8

除非您提高调试级别,否则容器将不加任何注释地退出。您可以使用--debuglevel=4

完成此操作后,重建并重新启动容器,您将在最后得到如下内容:

Server exit (EOF on stdin)

这指向解决方案,将smbd调用更改为:

exec ionice -c 3 smbd -FS < /dev/null

并且您的容器不应再直接退出。

我不确定是什么原因导致此向后不兼容的更改,也不确定为什么未针对现有dockerhub条目进行测试。

在升级到1.11时,我也有两个容器中断。降级到1.10.3时,遇到了可怕的Cannot stop container .... Container does not exist: container destroyed错误。我必须停止docker,清除所有历史记录,因此我不建议这样做。


这帮助我昨天解决了问题,而不必降级!
约翰

1
我在某处读到Samba停止实际上是一项功能。它尝试检测其父进程是否已终止(stdin上的EOF)。您的解决方案运行完美。
马丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.