16
A
回答
9
您可以使用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/
41
您可以使用docker kill --signal="<signal>" <container name or id>
任何信号发送到指定容器的根进程。
+0
是的,但我想要发送信号的程序是在容器中运行的程序,但不一定是根进程。例如在Docker中运行bash,然后在docker中的bash中运行其他命令。感谢您的回答。 – atupal 2014-09-06 08:14:50
3
docker kill
用于发送信号到主容器处理过程即与PID 1.- 任何应用程序与PID 1可直接处理信号。下面的命令杀掉主要泊坞窗过程:
$ docker kill --signal="SIGTERM" container-id/name
- 但应用程序,它不具有PID 1即应用程序是后台进程:
- 我们不能发送单直接泊坞窗容器中运行任何后台进程。
- 在这种情况下,我们需要在作为入口点运行的shell脚本中捕获和处理用户定义的信号。
- 让我们有以下
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镜像并运行容器。
- 现在你可以重新从主机服务:
$docker kill --signal="SIGUSR1" container-id/name
0
我设法在泊坞窗容器由信号我想发送到进程(程序):
- 获取的的ID集装箱 - docker ps | grep的yourProgramName - 使用泊坞窗EXEC -IT 4b6425cf4261庆典
- 列出所有正在运行与PS -A过程
- 找到PID 4b6425cf4261
- 登录到容器中 - 对我来说,它看起来像这样过程中要发送一个SIGINT到
- 将信号发送到它:杀-SIGINT PID(例如:杀-SIGINT 15)
相关问题
- 1. 在码头集装箱中运行emacs
- 2. 在码头集装箱中运行沙箱与沙箱
- 3. 如何在码头集装箱中运行.NET单元测试
- 4. 码头集装箱运行异步
- 5. 如何从码头集装箱到码头机器进行通信?
- 6. 在码头集装箱内运行码头?
- 7. 码头集装箱之间的通信
- 8. kubelet - 码头集装箱通信如何发生?
- 9. 如何在码头集装箱内运行gerrit cookbook?
- 10. 如何在码头集装箱运行启蒙路线?
- 11. 如何在码头集装箱内使用gulp运行livereload?
- 12. 如何在码头集装箱上运行vi?
- 13. 如何将码头日志收集到特定码头集装箱中?
- 14. 如何将两个正在运行的码头集装箱连接在一起?
- 15. 发送sigstop和sigcont到码头集装箱
- 16. 从码头集装箱发送日志到FluentD
- 17. 发送请求从一个码头集装箱到另一个
- 18. 从码头集装箱运行码头命令
- 19. 连接opscenter和datastax代理程序在两个码头集装箱中运行
- 20. XDummy在码头集装箱
- 21. systemd在码头集装箱
- 22. DISPLAY:0如果在每个码头集装箱内运行Xvfb:0,则由多个码头集装箱共享?
- 23. 在码头集装箱中安装ssh
- 24. 在码头集装箱中安装mongodb
- 25. 如何让用户运行(但不管理)码头集装箱?
- 26. 如何链接一个码头集装箱与另一个码头集装箱
- 27. 如何在运行码头集装箱时运行CMD并打开Bash?
- 28. 在Openshift中运行特权码头集装箱
- 29. 在高山码头集装箱中运行OpenSSH
- 30. 保存已运行的码头集装箱中的工件
您现在可以使用'docker exec'代替nsenter。 https://docs.docker.com/reference/commandline/exec/ – Andy 2015-07-20 19:07:17