古いDockerコンテナーを削除する方法


1235

この質問は、実行されていない過剰なDockerコンテナについて心配する必要があるかどうかに関連しています

古いコンテナーを削除する方法を考えています。docker rm 3e552code34aあなたが単一のものを削除することができますが、私はすでにたくさんあります。docker rm --help(すべてのように、またはイメージ名による)選択オプションを提供しません。

たぶん、これらのコンテナが格納されているディレクトリがあり、手動で簡単に削除できますか?


21
孤立したDockerボリュームのクリーニングも検討する必要があります。古いコンテナや古いイメージよりもはるかに多くのスペースを消費することがよくあります。孤立したDockerボリュームを削除するための適切なスクリプトは、github.com / chadoe / docker-cleanup-volumesにあります。
Nemanja Trifunovic

github.com/chadoe/docker-cleanup-volumesが役立つかもしれません。
Mihai8

フラグを使用docker runして--rmコンテナを一時的にし、実行後にすべてのコンテナファイルを削除することもできます。
ゴードン

12
docker 1.13(2016年第4四半期)では、新しいdocker system pruneコマンドを検討することもできます。以下の私の答えを参照しください。
VonC 2016年

1
Docker管理ツールPortainer all the old containers, non using volumes and images使用するこのツールを使用して管理できますDockerのシンプルな管理UI Please refer my update below on how to deploy the application
Anish Varghese

回答:


1460

Docker 1.13.x以降、Docker コンテナpruneを使用できます。

docker container prune

これにより、停止しているすべてのコンテナが削除され、すべてのプラットフォームで同じように機能するはずです。

Dockerシステムプルーンもあります。

docker system prune

これにより、1つのコマンドですべての未使用のコンテナー、ネットワーク、イメージ(ダングリングと参照されていないもの)、およびオプションでボリュームがクリーンアップされます。


古いDockerバージョンの場合、Dockerコマンドを他のUnixコマンドと組み合わせて、必要なものを取得できます。数週間前の古いコンテナーをクリーンアップする方法の例を次に示します。

$ docker ps --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

クレジットを付与するために、この例はhttps://twitter.com/jpetazzo/status/347431091415703552からのものです。


92
タグの付いていない画像をすべて削除する同様のコマンド: docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi
Mohan Raj

7
@MichelMüllerは、dockerfileからイメージをビルドするとき-rmに、ビルドが成功した後に中間コンテナーを削除するオプションを指定できます。
Freek Kalter 2013年

3
@MichelMüller画像はキャッシュに使用されるものであるため、コンテナを削除しても影響はありません。
Ken Cochrane

7
あなたはこのためにawkを使用する場合は、(なぜなら、最初の行のエラーなし)すべて停止コンテナをRM行いたい場合は、このコマンドを考えてみますdocker ps -a | awk 'NR > 1 {print $1}' | xargs docker rm
MASI

3
これは、タグのdocker rmi $(docker images -q -f dangling=true)
付いていない

626

私がギヨーム・J・シャルムから得た別の方法(それが原因である信用):

docker rm `docker ps --no-trunc -aq`

エレガントな方法ですべてのコンテナを削除します。

そして、Bartosz BilickiによるWindowsの場合:

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

PowerShellの場合:

docker rm @(docker ps -aq)

Docker 1.13(2016年第4四半期)の更新、VonCの功績このスレッドの後半):

docker system prune 未使用のデータをすべて削除します(つまり、コンテナーが停止した、コンテナーのないボリューム、コンテナーのないイメージの順)。

PR 26108commit 86de7c0を参照してください。これらは、Dockerデーモンデータがディスク上で使用している容量を視覚化し、「不要な」過剰を簡単にクリーンアップできるようにするいくつかの新しいコマンドを導入しています。

docker system prune

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

11
これはどういうわけか私にはうまくいきませんが、docker ps -a -q | xargs docker rmうまくいきます(sudoが必要になる場合があります)
FUD

86
どうdocker rm $(docker ps -a -q)ですか?
qkrijger 2014年

8
@qkrijger、これは、バシズムを追加することを除いて、元の答えから何も変更しません。問題はコマンドラインのオーバーフローです。xargsバリアントはこれを適切に処理します。また、(おそらくない)IDの衝突を回避するために、--no-trunkをdocker psに追加します。
Ihor Kaharlichenko 2014

8
データのみのコンテナーを使用する場合は、それらも削除されます
Dzung Nguyen 14年

4
とにかく完全なIDは必要ない--no-truncので、要点はわかりdocker rmません。
ピティコス2014

411

回答の更新 使用するdocker system pruneか、docker container prune今すぐ。VonCの最新の回答をご覧ください。

以前の回答 上記のいくつかの異なるヒントを構成して、実行されていないすべてのコンテナーを削除する最もエレガントな方法は次のように見えます:

docker rm $(docker ps -q -f status=exited)

  • -q コンテナーIDのみを出力します(列ヘッダーなし)
  • -f 印刷されたコンテナのリストをフィルタリングできます(この場合は、終了したコンテナのみを表示するようにフィルタリングしています)

7
$(docker images)のテキスト出力形式が変更されないと想定するのではなく、dockerに依存して使用されなくなったコンテナーを通知するため、これは正しい答えです。2つのプロセスではなく1つの追加プロセスのみを生成するためのボーナスポイント。
ユーリズミア

18
-vぶら下がっているボリュームを回避するために追加したい場合があります:docker rm -v $(docker ps -q -f status=exited)。参照docs.docker.com/userguide/dockervolumes/...ボリュームのダングリングの詳細については。
15年

@rlubaどうやらDocker 1.9では、その問題を処理するための別のボリュームAPIが存在します。github.com/docker/docker/pull/14242
Ryan Walls

エイリアスは便利かもしれません:alias docker-gc="docker rm -v \$(docker ps -q -f status=exited)"
フランクNeblung

正しいとマークされた回答とは異なり、@ RyanWallsの回答はOSXで機能するだけでなく、より簡潔です。
レイ

255

正式な方法は次のとおりです。

docker rm `docker ps -aq`

Dockerのメンテナは、このためのコマンドがないことを示しています-そしてあなたはそのようなコマンドを作成します:

これについては前に説明しましたが、Dockerにコードを追加しなくても上記の行を使用することをお勧めします。


6
ただし、ストレージコンテナーも削除されるため、これは不適切なソリューションです。
Sobrique

8
「貯蔵容器」とはどういう意味ですか?かつてデータボリュームへの参照を維持するために使用されていたデータのみのコンテナを意味する場合、docker volumeサブコマンドと名前付きボリュームが利用可能であるため、これらは不要になりました。
L0j1k

これはWindows Powershell内では機能しないことに注意してください。そのため、これはより良いソリューションです:stackoverflow.com/a/23674294/1150683
Bram Vanroy

@Sobriqueあなたが反応しない場合、少なくともあなたはあなたのコメントを削除するべきです、それはほぼ完全で有害なナンセンスです。
peterh-モニカを2018年

128

Docker 1.13(2016年第4四半期)では、次のものが用意されています。

docker system prune -a 未使用のデータをすべて削除します(つまり、コンテナーが停止した、コンテナーのないボリューム、コンテナーのないイメージの順)。

docker system prune-aなしでsmilebombによってコメントされた、ぶら下がっている画像、またはタグのない画像のみ(画像の場合)が削除されます

見る PR 26108commit 86de7c0を。これらは、Dockerデーモンデータがディスク上で使用している容量を視覚化し、「不要な」過剰を簡単にクリーンアップできるようにするいくつかの新しいコマンドを導入しています。

docker system prune -a

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

wjvのコメントは、

またdocker {container,image,volume,network} prune1つのタイプのオブジェクトの未使用のインスタンスを削除するために使用できるもあります。

Docker 1.13 以降でのみ、コミット913e5cbで導入されました。

docker container prune

共有してくれてありがとう-これが見えるようになるために、私は答えをスレッドで高く引用しています
qkrijger

通常どおり、-fフラグを追加して、質問なしで強制的にクリーンアップします。
Dirk

3
今日の正解としてマークする必要があります。上記のほとんどは過去にさかのぼりますが、今日は非常に複雑です
Eugen Mayer

同意し、最近はとても簡単になりました。
Maxim Geerinck 2017

コードブロックの説明はでdocker system prune -a、未使用のイメージを削除します。ぶら下がっている画像、またはタグのない画像docker system pruneのみを削除します。
smilebomb

104

フィルタリングを使用できるようになりましたdocker ps

docker rm $(docker ps -q -f status=exited)

そして画像の場合

docker rmi $(docker images -q -f "dangling=true")

ただし、一致するコンテナがない場合は、これらのいずれかが原因でエラーが発生するdocker rmdocker rmi、スローされます。年上のdocker rm $(docker ps -aq)トリックは、実行中のコンテナを削除しようとし、それぞれで失敗したため、さらに悪化しました。

~/.bashrcor に追加するクリーンなスクリプトは~/.profile次のとおりです。

# Use `docker-cleanup --dry-run` to see what would be deleted.

function docker-cleanup {
  EXITED=$(docker ps -q -f status=exited)
  DANGLING=$(docker images -q -f "dangling=true")

  if [ "$1" == "--dry-run" ]; then
    echo "==> Would stop containers:"
    echo $EXITED
    echo "==> And images:"
    echo $DANGLING
  else
    if [ -n "$EXITED" ]; then
      docker rm $EXITED
    else
      echo "No containers to remove."
    fi
    if [ -n "$DANGLING" ]; then
      docker rmi $DANGLING
    else
      echo "No images to remove."
    fi
  fi
}

編集:下記のように、元の答えはコンテナーではなくイメージを削除することでした。ドキュメントへの新しいリンクを含め、両方に回答するように更新されました。新しいpsフィルタリングについて言及してくれたAdrian(およびRyanの回答)に感謝します。


2
これの本当のstorage利点に注意してください-誤ってconatinersを殺してしまうことはありません。
Sobrique

3
を使用status=createdして、実行していないものや実行したことがないものを取得することもできます。
エンダーランド

96

2019年更新最新

docker container prune

この- 2017(OLD)の方法

停止しているすべてのコンテナを削除するには

docker rm $(docker ps -a -q)

すべてのコンテナー を削除するには(STOPPEDおよびNON STOPPED)

docker rm  -f $(docker ps -a -q)

3
これは確かにあるので、downvoted、ではないあなたは2017年にそれを行う方法- whisは次のようになりdocker volume/container/image prune、参照stackoverflow.com/a/39860665/3625317
オイゲン・メイヤー

6
a)この回答は2016年の回答であり、b)多くの人々は最先端を走っていないため、反対投票に反対することに賛成です。
熱心

49

停止しているすべてのコンテナを削除します。

docker rm $(docker ps -a | grep Exited | awk '{print $1}')

pauk960のコメントから:

バージョン1.3.0以降ではdocker ps、の代わりにでフィルターを使用できgrep Exitedますdocker ps -a -f status=exited。それを使用する-qと、完全な出力の代わりにコンテナIDのみを取得できます。そのためにawkを使用する必要はありません。


33

すべてのコンテナーを削除したくない場合は、特定のコンテナーの前または後に作成されたすべてのコンテナーを、docker ps --before <container-ID>またはdocker ps --since <container-ID>。この機能は、少なくともDockerバージョン0.6.5に含まれています。

システムを開発し、現在は機能しているが、いくつかのコンテナが残っているとします。その作業バージョンの前に作成されたコンテナを削除したい。で作業コンテナのIDを確認しdocker psます。

他のコンテナの前に作成されたコンテナを削除します

docker rm $(docker ps --before 9c49c11c8d21 -q)

もう一つの例。データベースはすでにDockerコンテナーで実行されています。別のコンテナーで実行するようにアプリケーションを開発しましたが、今では不要なコンテナーがいくつかあります。

特定のコンテナの後に作成されたコンテナを削除する

docker rm $(docker ps --since a6ca4661ec7f -q)

Dockerはコンテナを/var/lib/docker/containersUbuntuに格納します。余分なコンテナは他の害を及ぼすことはないと思いますが、ディスク領域を占有します。


32

更新: Dockerバージョン1.13(2017年1月リリース)以降、次のコマンドを発行して、停止したコンテナー、未使用のボリューム、ダングリングイメージ、未使用のネットワークをクリーンアップできます。

docker system prune

exitedステータスのあるコンテナのみを削除することを保証する場合は、次のようにします。

docker ps -aq -f status=exited | xargs docker rm

同様に、Dockerをクリーンアップする場合は、次の方法でタグなし、名前なしの画像を削除できます。

docker images -q --no-trunc -f dangling=true | xargs docker rmi

22

docker-cleanupこれが私のスクリプトです。タグなしのコンテナと画像を削除します。更新がないかソースを確認してください。

#!/bin/sh
# Cleanup docker files: untagged containers and images.
#
# Use `docker-cleanup -n` for a dry run to see what would be deleted.

untagged_containers() {
  # Print containers using untagged images: $1 is used with awk's print: 0=line, 1=column 1.
  docker ps -a | awk '$2 ~ "[0-9a-f]{12}" {print $'$1'}'
}

untagged_images() {
  # Print untagged images: $1 is used with awk's print: 0=line, 3=column 3.
  # NOTE: intermediate images (via -a) seem to only cause
  # "Error: Conflict, foobarid wasn't deleted" messages.
  # Might be useful sometimes when Docker messed things up?!
  # docker images -a | awk '$1 == "<none>" {print $'$1'}'
  docker images | tail -n +2 | awk '$1 == "<none>" {print $'$1'}'
}

# Dry-run.
if [ "$1" = "-n" ]; then
  echo "=== Containers with uncommitted images: ==="
  untagged_containers 0
  echo

  echo "=== Uncommitted images: ==="
  untagged_images 0

  exit
fi

# Remove containers with untagged images.
echo "Removing containers:" >&2
untagged_containers 1 | xargs --no-run-if-empty docker rm --volumes=true

# Remove untagged images
echo "Removing images:" >&2
untagged_images 3 | xargs --no-run-if-empty docker rmi

ソース:https : //github.com/blueyed/dotfiles/blob/master/usr/bin/docker-cleanup


@BradMurrayありがとう!また、これらのような場合がありますgithub.com/blueyed/dotfiles/commit/...
blueyed

3
xargs --no-run-if-emptyオプションのため、OSXでは機能しません
caktux

13

まず、コンテナを削除する前に実行を停止します

実行中のコンテナを削除する

docker rm $(docker stop -t=1 $(docker ps -q))

kill代わりに使用できますstop。私の場合はstop、毎回新しいものを作成するよりも再実行する傾向があるので、それらを適切にシャットダウンしようとするので、私は好みます。

注:コンテナーを停止しようとすると、エラーが発生します。

エラー:実行中のコンテナを削除できません。まず停止してください

すべてのコンテナを削除

docker rm $(docker ps -a -q)

11

Windowsシェルからすべてのコンテナーを削除します。

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

最初のページなので、これを回答に含めます。ありがとう
qkrijger

「Windowsシェルから」「Windowsシェル(CMD)を使用するという意味ですか?
Peter Mortensen

10

https://github.com/HardySimpson/docker-cleanup

Dockerクリーンアップ

以下を削除する小さなオールインワンシェル:

  • 1日以上実行されていないコンテナ
  • 残りのコンテナに属していない画像

crontabジョブとして実行するつもり

特徴

  • それはすべて削除されます <none>:<none>画像ます
  • 画像に複数のrepo:tag参照がある場合、コンテナーの実行時を除いて、すべてのrepo:tagが削除されます。実は「ドッカーrmi」の性質です。
  • 多くのエラーメッセージが画面に表示され、あなたはする2>/dev/nullかしないかを決めることができます
  • docker-gcから何かを学び、その問題を修正します(複数のrepo:tagを持つ画像は削除できません)

9

したがって、個人的には、これをイメージとコンテナの両方のデプロイスクリプトの一部として行い、最新のn個のコンテナとイメージのみを保持することをお勧めします。私は、使用しgit tagているものと同じバージョンスキーマでDockerイメージにタグを付け、常に最新のDockerイメージに「最新」のタグを付けています。つまり、何もクリーンアップしないと、私のDockerイメージは次のようになります。

REPOSITORY              TAG       IMAGE ID        CREATED         VIRTUAL SIZE
some_repo/some_image    0.0.5     8f1a7c7ba93c    23 hours ago    925.4 MB
some_repo/some_image    latest    8f1a7c7ba93c    23 hours ago    925.4 MB
some_repo/some_image    0.0.4     0beabfa514ea    45 hours ago    925.4 MB
some_repo/some_image    0.0.3     54302cd10bf2    6 days ago      978.5 MB
some_repo/some_image    0.0.2     0078b30f3d9a    7 days ago      978.5 MB
some_repo/some_image    0.0.1     sdfgdf0f3d9a    8 days ago      938.5 MB

もちろん、私はすべてのイメージ(またはコンテナー)をすべてのプロダクションボックスで永続的に戻す必要はありません。私は、ロールバックのために最後の3または4を必要とし、他のすべてのものを取り除きます。Unix's tailはここであなたの親友です。以来docker imagesdocker ps日付順の両方、私達はちょうど使用することができtail、すべてが、トップ3を選択し、それらを削除するには:

docker rmi $(docker images -q | tail -n +4)

それをデプロイスクリプトと一緒に(またはローカルで)実行して、余計なスペースを取ったり、古いイメージで混乱したりすることなく、快適にロールバックできる十分な数のイメージを常に保持します。

個人的に、私はいつでもプロダクションボックスに1つのコンテナーのみを保持しますが、必要な場合はコンテナーで同じ種類のことを実行できます。

docker rm $(docker ps -aq | tail -n +4)

最後に、私の単純化した例では、一度に1つのリポジトリのみを扱いますが、それ以上ある場合は、同じ考え方でもう少し洗練されたものにすることができます。some_repo / some_imageの最後の3つの画像を保持したいとします。私はちょうどに混在させることができるgrepawk、私の方法になり:

docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)

繰り返しますが、同じ考え方がコンテナにも当てはまりますが、この時点で理解できるので、例を示すのはやめます。


8

使用する:

docker rm -f $(docker ps -a -q)

ローカルに存在するすべてのコンテナを強制的に停止して削除します。


詳細を編集してください。コードのみと「これを試す」の回答は、検索可能なコンテンツが含まれておらず、誰かが「これを試す」必要がある理由を説明していないため、お勧めしません。ここでは、知識のリソースとなるよう努力しています。
ブライアントンプセット-汤莱恩

ubuntu 16.04では、dockerにsudoが必要なので、を記述する必要がありますsudo docker rm -f $(sudo docker ps -a -q)
Elliott

さらに、これはWindowsのPowerShellでも機能します。
Robert Ivanc

@Elliott sudoユーザーを「docker」グループに追加しない限り、どこでも必要だと思います。私はユーザーをdockerグループに追加することで、sudoを使用せずにubuntu 16.10を使用しています。
エモリー2017年

7

最も古い5つのコンテナーを削除します。

docker rm `docker ps -aq | tail -n 5`

残っているコンテナの数を確認します。

docker ps -aq | wc -l

素敵な仕事@Pithikos。古いコンテナをすべて削除する回答を追加しました。
モスタファガディミ

7

停止しているすべてのコンテナを削除します。

sudo docker rm $(sudo docker ps -a -q)

これにより、docker ps -a -qを使用してすべてのコンテナーのリストを取得し、それらのIDをdocker rmに渡すことにより、停止したすべてのコンテナーが削除されます。実行中のコンテナは削除されません。実行中のイメージを削除できないことが通知されます。

タグの付いていない画像をすべて削除します

次に、古いイメージをクリーンアップして、スペースを節約します。

sudo docker rmi $(sudo docker images -q --filter "dangling = true")


-vオプションを指定してDockerボリュームを削除することを忘れないでください(sudo docker rm -v $(sudo
docker

これは調べませんでしたが、私は次と同じだと思います:docker ps -aq | xargs docker rm -v
quine

これはLinuxでは機能し、Windowsでは機能しません...しかしdocker rm -f $(docker ps -a -q)、PowerShell / Docker for Windowsでは機能します。
Peter Mortensen、2018

6

新しい方法: spotify / docker-gcがトリックを再生します。

 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc spotify/docker-gc
  • 1時間以上前に終了したコンテナは削除されます。
  • 削除後に残りのコンテナに属さない画像は削除されます

環境設定をサポートしています

複数のタグがある画像の強制削除

 FORCE_IMAGE_REMOVAL=1

コンテナの強制削除

 FORCE_CONTAINER_REMOVAL=1 

最近終了したコンテナと画像をガベージコレクションから除外する

 GRACE_PERIOD_SECONDS=86400

この設定により、GRACE_PERIOD_SECONDS秒前に作成されたイメージが削除されないようにすることもできます。

ドライラン

 DRY_RUN=1

孤立したコンテナボリュームのクリーンアップ CLEAN_UP_VOLUMES = 1

リファレンス:docker-gc

古い方法:

実行されていない古いコンテナを削除する

 docker ps -a -q -f status=exited | xargs --no-run-if-empty docker rm
             OR 
 docker rm $(docker ps -a -q)

実行されていないDockerコンテナーに関連付けられているすべてのイメージを削除する

 docker images -q | xargs --no-run-if-empty docker rmi

dockerバージョン1.10.x以降の孤立したdockerボリュームのクリーンアップ

 docker volume ls -qf dangling=true | xargs -r docker volume rm

期間に基づく

 docker ps -a | grep "weeks ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
 docker ps -a | grep "days ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
 docker ps -a | grep "hours ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm

1
興味深い代替案。+1
VonC 2016年

6
  1. すべてのDockerプロセスを削除します。

    docker rm $(docker ps -a -q)
    
  2. 特定のコンテナを削除します。

    $ docker ps -a (lists all old containers)
    
    $ docker rm container-Id
    


4
#!/bin/bash
# docker-gc --- Remove stopped docker containers

RUNNING=$(docker ps -q)
ALL=$(docker ps -a -q)

for container in $ALL ; do
    [[ "$RUNNING" =~ "$container" ]] && continue
    echo Removing container: $(docker rm $container)
done

自分で検索したくない人のためにgithub.com/spotify/docker-gc
grim

それは完璧だ。同じ機能を持つ回答も書いています。
モスタファガディミ

3

私は常にdocker rmi $(docker ps -a -q)すべての画像を削除するために使用します。

失敗した/var/lib/docker/graphときにディレクトリを削除docker rmiできます。


/ var / lib /
docker

問題は、イメージではなくコンテナを削除する方法でした。
pauk960 2015年

3

停止したコンテナのみを削除できます。最初は全部止めて

docker stop $(docker ps -a -q)

その後、削除できます

docker rm $(docker ps -a -q)


3

このコマンドを試して、コンテナとダングリングイメージをクリーンアップしてください。

docker system prune -f

これはすばらしいプロチップです!
b01

3

すべてのコンテナーとイメージを停止/削除する基本的な手順

  1. すべてのコンテナを一覧表示します

    docker ps -aq

  2. 実行中のすべてのコンテナを停止します

    docker stop $(docker ps -aq)

  3. すべてのコンテナを削除

    docker rm $(docker ps -aq)

  4. すべての画像を削除

    docker rmi $(docker images -q)

注:削除する前に、まず実行中のすべてのコンテナーを停止する必要があります。また、イメージを削除する前に、その依存コンテナを停止して削除する必要があります。


2

興味のある人のために、qkrijgerから例を取り、それをすべてクリアに変更しました(すべてを停止して削除)

docker stop `docker ps --no-trunc -aq` ; docker rm `docker ps --no-trunc -aq`

とにかくコンテナを削除する場合docker rm -f $(docker ps --no-trunc -aq)は、より高速です
qkrijger

正しいですが、共有または再利用されたリソース(アタッチされたボリューム、アクティブな接続が正しく閉じられているなど)をクリーンアップするために適切にシャットダウンする必要がある場合は、最初にstopを呼び出す必要があります。良い例として、Jenkinsコンテナがある場合、コンテナを強制終了することは悪い考えです。永続化されていない変更を保存し、ログインしているユーザーに警告し、非常に重要なことに、すべてのビルドを適切に停止します。
Kraig McConaghy 2015

これは非常に有効なユースケースであることに同意した
qkrijger 2015

2
#!/bin/bash

echo Cleanup unused containers
unused_containers=$(docker ps -a -q --filter="status=exited")
if [[ -n $unused_containers ]]
then
  docker rm $unused_containers
fi

echo Cleanup unused images
unused_images=$(docker images | grep '^<none>' | awk '{print $3}')
if [[ -n $unused_images ]]
then
  docker rmi $unused_images
fi

5
答えるときは、コードダンプだけでなく、ソリューションの動作について説明するのが最善です。そうしないと、答えが削除される可能性があります。
AlBlue、2016年


2

私が使用しています:

docker rm -v $(docker ps -a -q -f status=exited)

終了したコンテナを削除するには:

docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")

タグの付いていない画像をすべて取り除くため。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.