当docker容器启动或停止时,是否可以在主机上运行脚本

当docker容器启动或停止时,是否可以在主机上运行脚本

我要启动一个 docker 容器并通过运行 来将 IPv6 地址绑定到它docker run -itd --restart=always --name=<container> --net=br6 --ip6=2001:db8:8:2::100 <image>。但是,我必须使用 ndp 代理ip neigh replace proxy "2001:db8:8:2::100" dev ens3才能访问该地址。是否可以在每次docker容器启动时在宿主机上运行这个命令?

答案1

当然,最简单的方法是将这两个命令放入 bash 脚本中,作为该过程的一部分。

创建脚本run.sh

#!/bin/bash

docker run -itd --restart=always --name=<container> --net=br6 \          
--ip6=2001:db8:8:2::100 <image> . \
&& ip neigh replace proxy "2001:db8:8:2::100" dev ens3

现在,每个希望运行容器的人都应该./run.sh在授予容器执行权限后通过运行来执行此操作。

这在运行之前使用脚本来设置环境是很常见的。

但在某些罕见的情况下(虽然不像您的情况,但完全由您决定),您希望让主机在容器启动时自动执行脚本。

这可以通过使用服务器-客户端模式来完成 - 您的主机充当服务器端 - 它正在侦听特定端口,并准备好根据请求执行命令。

容器充当客户端 - 在容器入口点中,它在特定端口和 URI 上向服务器发送 http 请求,要求服务器执行所需的命令。

在 docker 上使用此模式的一个示例是在调试服务器代码时 - 您希望容器将调试日志发送到您的计算机上 IDE 接受它们的特定端口。

相关内容