Docker容器启动和停止时在主机上运行命令

时间:2020-05-24 07:31:30

标签: docker

在受防火墙保护的Docker主机上,您必须添加规则以在容器启动或停止时打开和关闭端口。

一种实现方法是在每个容器中创建一个Systemd单元文件,并使用ExecStartPre / ExecStopPost指令打开/关闭端口。这样做的缺点是依赖于外部服务管理系统,并且无法使用Docker本身的重启策略。

仅通过Docker提供的设施可以解决此问题吗?

我能想到的最通用的解决方案是在指定的容器事件上执行任意命令的工具(也许是插件?)。换句话说,钩子机制。 Docker有这样的东西吗?

1 个答案:

答案 0 :(得分:0)

您可以在docker上使用ENTRYPOINT在启动过程中执行脚本,然后在该shell脚本上使用trap命令将SIGTERM钩住。

即。创建shell脚本start.sh

#!/bin/bash

stop() {
   echo "container is being stopped"
}

trap 'stop' #

... other command ...

接下来,您可以将docker ENTRYPOINT钩到上面的start.sh