通过 SSH 启动 Docker 容器并在退出时将其终止(通过捕获 Ctrl-C)

通过 SSH 启动 Docker 容器并在退出时将其终止(通过捕获 Ctrl-C)

我想通过 SSH 远程启动 Docker 容器,然后一旦使用 退出 SSH 命令Ctrl-C,就停止 Docker 容器。

到目前为止我有这个:

#!/usr/bin/env bash

set -e
docker run --rm alpine sh -c 'while true; do echo; sleep 1; done' &
pid=$!
echo "Ready!"
trap "kill $pid" INT HUP
wait $pid

我通过以下方式启动它:ssh user@host 'cd /some/path && ./start_docker.sh'

问题是,当我使用 终止 SSH 会话时Ctrl-C,Docker 容器仍然运行,尽管是使用 运行的--rm

我需要修改什么才能使终止 SSH 会话时也删除正在运行的 Docker 容器?请注意,我不关心容器本身的正常关闭 — 我只希望命令dockerstoppend 和容器被删除。

答案1

问题是,SIGINT以这种方式调用 SSH 时,信号实际上并没有发送到脚本。

相反,ssh使用以下-t选项运行:

ssh -t user@host 'cd /some/path && ./start_docker.sh'

更多详细信息请访问这个答案

相关内容