[英]How to send signal to program run in a docker container?
我有一個程序在一個具有分離模式的docker容器中運行。
那么如何向這個程序發送SIGINT等信號呢?
您可以使用docker kill --signal="<signal>" <container name or id>
將任何信號發送到給定容器的根進程。
請參閱https://docs.docker.com/engine/reference/commandline/kill/#send-a-custom-signal--to-a-container
您可以使用nsenter進入容器空間並發送信號。
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid kill -SIGINT <PID of your program inside your container>
更多信息: http : //jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/
docker kill
用於向主容器進程發送信號,即使用PID 1進行處理。 $ docker kill --signal="SIGTERM" container-id/name
進程: $ docker kill --signal="SIGTERM" container-id/name
Dockerfile
。 (根據申請更新) FROM centos:6.7
# Install/Deploye the service below.
# Copy the shell script.
COPY entrypoint.sh /home
EXPOSE 8080
ENTRYPOINT ["/home/entrypoint.sh"]
以下是entrypoint.sh
。 (根據應用程序更新它)。 假設我們要重新啟動init.d
服務。
#start the service /etc/init.d/<servicename> start pid="$!" # SIGUSR1- Single handler my_handler() { /etc/init.d/<servicename> restart } # Trap and handle the user defind singnal. trap 'my_handler' SIGUSR1 # wait forever(Alive container.) while true do tail -f /dev/null & wait ${!} done
$docker kill --signal="SIGUSR1" container-id/name
我設法通過以下方式向docker容器中的進程(程序)發送我想要的信號:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.