Pythonスクリプトを介して複数のDockerコンテナを実行しています。 Pythonスクリプトを正常に閉じると(cltr + c)、すべてのDocker出口を処理しましたが、強制終了してもDockerは実行中です。
問題は、Pythonスクリプトが異常終了した場合にDockerコンテナを終了する方法はありますか? (PythonスクリプトをDockerプロセスの親プロセスに設定するのでしょうか?そのようなものはありますか?)
答え1
同じ問題に直面している人なら誰でも役に立ちます。
libc = ctypes.CDLL("libc.so.6")
def set_pdeathsig(sig=signal.SIGTERM):
def callback():
return libc.prctl(1, sig)
return callback
open_container_cmd = "docker-compose run --rm test" # cannot use detach <-d>
proc = subprocess.Popen(
open_container_cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
preexec_fn=set_pdeathsig(signal.SIGTERM))