首页 > 解决方案 > Docker 容器如何获取主机进程退出消息?

问题描述

我们的项目中有两个进程,它们作为两个具有“BindsTo”配置的 Systemd 服务在物理机中运行。如果进程 A 重新启动,进程 B 也将重新启动。在我们出于某些原因必须将流程 B 容器化之前,它们一直运行良好。现在,进程 A 在宿主机中运行,而进程 B 在 Docker 容器中,Systemd 机制不再起作用。

有什么方法可以让进程 B 在进程 A 重新启动后立即得到通知,就像 Systemd 'BindsTo' 所做的那样?

标签: docker

解决方案


只需将您的容器放入 systemdUnit中,您就可以像 systemd 一样控制您的容器service。例如:

[Unit]
Description=B in Docker
After=docker.service
Requires=docker.service

[Service]
ExecStartpre=-/usr/bin/docker stop container_b
ExecStartpre=-/usr/bin/docker rm container_b
ExecStart=/usr/bin/docker run --rm --name container_b image:tag
ExecStop=-/usr/bin/docker stop container_b
ExecStop=-/usr/bin/docker rm container_b
Restart=always

推荐阅读