docker - Docker 容器如何获取主机进程退出消息?
问题描述
我们的项目中有两个进程,它们作为两个具有“BindsTo”配置的 Systemd 服务在物理机中运行。如果进程 A 重新启动,进程 B 也将重新启动。在我们出于某些原因必须将流程 B 容器化之前,它们一直运行良好。现在,进程 A 在宿主机中运行,而进程 B 在 Docker 容器中,Systemd 机制不再起作用。
有什么方法可以让进程 B 在进程 A 重新启动后立即得到通知,就像 Systemd 'BindsTo' 所做的那样?
解决方案
只需将您的容器放入 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
推荐阅读
- django - 捕获从 celery 任务发送的 django 信号
- javascript - 引导日期时间选择器插件?
- functional-programming - 方案大于平均功能
- javascript - 验证对象数据是否为“真”,如果是则检索相关数据
- javascript - D3.js 和嵌套数据 - 为什么我的 exit() 设置为空
- ibm-watson - 在 Watson Studio 中创建实验时出错
- azure-language-understanding - LUIS 应用中的模式识别:请查找 {Entity1} {Entity2}{Entity3} 文档
- python - 查询dict python http请求
- c++ - 无法访问 C++ 标头
- django - django-admin 指向 virtualenv 之外