Docker:如何从一个正在运行的容器发送信号到另一个容器?

pie*_*elb 7 signals docker

我正在使用docker,我想知道:是否有可能从正在运行的容器发送信号到另一个正在运行的容器?

更准确地说,我想将SIGUSR1发送给python程序.

我已经制作了一个bash脚本来获取我的python进程的pid并发送信号:

send_signal.sh

#!/bin/bash py_pid=$(pidof -s python my_programme.py kill -SIGUSR1 $py_pid

之前,我从Docker主机执行send_signal.sh,如下所示:

docker exec docker_with_python bash send_signal.sh

或者只是这样:

docker kill --signal="SIGUSR1 docker_with_python

但现在,我想向正在运行的容器发送信号到另一个容器.那么,我怎么能从另一个正在运行的容器中执行这个命令.或者有另一种发送信号的方式吗?

提前致谢

Evg*_*kiy 6

要实现这一点,您需要将Docker套接字从主机安装到您希望从中发送信号的容器中.例如,请参阅此帖子以获取解释和详细信息.


pie*_*elb 6

这是我使用的代码.它可以帮助别人:

echo -e "POST /containers/<docker_id>/kill?signal=SIGUSR1 HTTP/1.0\r\n" |nc -U /tmp/docker.sock

以前,在我的docker-compose.yml中,我共享了卷:

exemple1 hostname: exemple_1 volumes: - /var/run/docker.sock:/tmp/docker.sock

  • 请注意,通过与容器共享Docker套接字,您可以让容器完全控制Docker守护程序,包括例如启动一个新容器,其中主机的根目录安装在容器内.这意味着如果有人设法破坏您的容器,他们实际上也会拥有您的主机.另请参见https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface. (2认同)