我通过docker文件中的ENTRYPOINT配置启动mongodb,它能够正常工作。但是,当我执行以下命令时:
docker stop <containerid>
看起来是向进程发送了SIGTERM。这意味着文件未被清除。我该如何优雅地关闭正在运行的Docker容器,以便向Docker内部运行的进程发送正确的信号?
我不确定是否理解。docker stop <id>
会发送SIGTERM信号。这是按设计来的。如果进程没有在超时时间(默认为10秒)内正确关闭,则会发出SIGKILL信号。
目前,我们确实存在一些信号传播问题。这是由于pid命名空间和进程具有pid 1的事实造成的。这应该很快通过新的执行插件得到解决。
使用 Docker 0.9 或更高版本,默认情况下会向容器内运行的第一个进程发送 SigTerm 信号。
但是请注意环境变量文件(Ubuntu 中的 /etc/default/docker 和 CentOS 中的 /etc/sysconfig/docker)应该包含 DOCKER_OPTS=" -r=false "(在 CentOS 中为 other_args=" -r=false"),以停止 Docker 自动重启容器。
例如,我正在使用此配置:DOCKER_OPTS=" -g /mydir/docker -r=false --dns 8.8.4.4 "
如果您想在一个容器内运行多个进程,则应使用 supervisord 作为第一个进程,supervisord 将管理其他进程并将信号传递给它们。
docker kill -s INT <id>
命令。 - creack