コマンドを実行する必要があります
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
ありません。終了するには、実行中のコンテナだけを確認してください。-a
docker ps
dockerコマンドエイリアス(たとえばalias docker='sudo /usr/bin/docker'
)を定義する場合は、このパイプラインでに置き換える必要がありますdocker
。sudo /usr/bin/docker