【问题标题】:Launching multiple Docker containers with supervisor使用主管启动多个 Docker 容器
【发布时间】:2015-06-26 13:29:30
【问题描述】:

我有许多 Docker 容器,我想开始使用 supervisor。我遇到的问题是主管需要阻止命令以跟踪它们。

不幸的是,命令docker run my/container:tag 是非阻塞的,即它会立即返回并生成一个进程。

docker 容器被启动(实际上是 2 个,有时是 4 个可能相关的实例),但主管指示错误“FATAL Exited too faster (process log may have details)”。

supervisor 可以用来运行 Docker 容器吗?

更新

我在早期的一些试验中也启用了-d 选项,这导致-i 无法按预期工作(它们不是相反,它们不应该提示某种错误吗?)。当我在supervisor.conf 中使用-i 运行时,我收到此错误time="2015-06-27T14:14:29+10:00" level=fatal msg="cannot enable tty mode on non tty input"

我也尝试在没有-i 的情况下运行,它成功启动了 docker 容器。不幸的是,sudo supervisorctl stop app 实际上并没有停止 docker 容器。主管是无法控制 docker 还是我真的需要使用 -i 选项运行并以某种方式修复此 tty 错误?

更新 2

tty 错误来自我的 docker run 命令中还包含 -t 选项。我删除了它。但是,supervisorctl 仍然无法停止 docker run。虽然它在运行时没有给出错误,并且supervisorctl status app 说它已经停止,docker ps 我看到容器实际上仍在运行。

【问题讨论】:

    标签: docker supervisord


    【解决方案1】:

    您需要在交互模式下运行容器。这将是阻塞调用,如果您在新进程退出之前一直阻塞,那么以下是正确的命令:

    docker run -i -t my/container:tag
    

    【讨论】:

    • 试过了,效果不错。现在遇到一个新问题。请查看我的更新。
    • 是的 .. -i 和 -t 让你在与 tty 的交互模式下运行容器。我认为您遇到的问题是因为妖魔化您的容器的进程立即退出,这就是主管认为该进程已经退出的原因。
    • docker 容器内的进程也使用supervisor 触发,但启用了-no--daemon 选项。我想我只是通过升级到最新的 Docker 版本(从 1.5.0 开始)解决了这个问题。我正在使用-i 和没有-t 运行,现在它运行良好。感谢您的帮助。
    【解决方案2】:

    如果你使用-i option 运行你的容器,它会阻塞

    docker run -i my/container:tag

    【讨论】:

    • 当我从命令行尝试这个时,它立即返回并打印了一个容器 ID。我会再试一次。
    • 升级到Docker version 1.7.0-dev, build 9234460解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    相关资源
    最近更新 更多