1日より古いすべてのDockerインスタンスを見つけて終了します。

1日より古いすべてのDockerインスタンスを見つけて終了します。

コマンドを実行する必要があります

 docker ps -a 

任意のリスト:

id    name   time
1      abc    6 weeks ago

殺すには、次のコマンドを実行する必要があります。

docker kill id

すべてのIDを見つけて、1日より古いIDごとにkillコマンドを実行する必要があります。どうすればいいですか?

答え1

一部のdockerコマンドは、goテンプレートを使用して出力形式を調整する可能性を提供します。したがって、このメカニズムを使用して、処理が容易な実行中のコンテナの開始時間を取得できます。

たとえば、

docker ps --format='{{.ID}}' \
  | xargs -n 1 -r docker inspect \
                           -f '{{.ID}} {{.State.Running}} {{.State.StartedAt}}' \
  | awk '$2 == "true" && $3 <= "'$(date -d 'yesterday' -Ins --utc \
                                     | sed 's/+0000/Z/')'" { print $1 }' \
  | xargs -r docker kill

ここではGNUを想定していますxargs。この-rオプションは、xargs引数が1つ以上ある場合にのみコマンドを実行するように指示します。また、GNUを使用していますdate。目標は、昨日の日付+時刻をZulu時刻サフィックス付きのISO形式にインポートし、内部Docker日付形式と互換性を持たせることです。したがって、その日付形式のアルファベット順は日付順序と一致するため、通常の文字列比較を使用して2つの日付を比較できます。

dockerコマンドはデフォルトで実行されているコンテナのみを表示するため、設定されたオプションはpsありません。終了するには、実行中のコンテナだけを確認してください。-adocker ps

dockerコマンドエイリアス(たとえばalias docker='sudo /usr/bin/docker')を定義する場合は、このパイプラインでに置き換える必要がありますdockersudo /usr/bin/docker

関連情報