Dockerコンテナが起動または停止したときにホストシステムでスクリプトを実行できますか?

Dockerコンテナが起動または停止したときにホストシステムでスクリプトを実行できますか?

Dockerコンテナを起動して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そのアドレスにアクセスするにはndpプロキシを使用する必要があります。 Dockerコンテナが起動するたびにホストでこのコマンドを実行できますか?

答え1

もちろん、最も簡単な方法は、これら2つのコマンドをプロセスの一部として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が許可するマシンの特定のポートに送信するようにしたい場合。

関連情報