web-dev-qa-db-ja.com

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

この質問はに関連しています。私は過剰な、実行されていない、Dockerコンテナについて心配すべきですか?

古い容器をどうやって取り除くのかと思っています。 docker rm 3e552code34aを使用すると、単一のものを削除できますが、私はすでにたくさんのものを持っています。 docker rm --helpは選択オプションを与えません(allのように、または画像名で)。

手動で簡単に削除できる場所に、これらのコンテナが格納されているディレクトリがあるかもしれません。

1097
qkrijger

Docker 1.13.x には、 DockerコンテナーPrune という新しい機能があります。docker container Prune

これはあなたが望むことをするでしょうし、すべてのプラットフォームで同じように動作するはずです。

DockerシステムのPrunedocker system Pruneもあります。これは、コンテナー、イメージ、ボリューム、ネットワークをすべて1つのコマンドでクリーンアップします。

元の答え:

Dockerのクリーンアップコマンドについての話があります。このチケットに関する情報を見つけることができます。'clean'コマンドを実装する(#928)

そのコマンドが利用可能になるまでは、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 からのものです。

1254
Ken Cochrane

私がGuillaume J. Charmesから手に入れたもう1つの方法(それが原因となっているクレジット):

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 26108 および commit 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
610
qkrijger

更新された回答 今すぐdocker system Pruneまたはdocker container Pruneを使用してください。 VonCの最新の回答 を参照してください。

前回の回答 上記のいくつかの異なるヒントを作成して、実行中でないコンテナをすべて削除する最もエレガントな方法は次のようになります。

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

  • -qはコンテナーIDだけを表示します(列ヘッダーなしで)
  • -fはあなたが印刷された容器のあなたのリストをフィルターにかけることを可能にします(この場合我々は終了した容器だけを示すためにフィルターをかけています)
404
Ryan Walls

公式のやり方 は:

docker rm `docker ps -aq`

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

これについてはすでに説明したので、ユーザーはDockerにコードを追加しなくても上記の行を使用することを好みます。

249
Michael Neale

Docker 1.13(2016年第4四半期)では、以下のことが可能になりました。

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

-aなしのdocker system Pruneは、 コメント付き by /smilebomb のように、ぶら下がっている画像、またはタグのない画像のみを削除します(画像の場合)。

PR 26108 および commit 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

As wjv comments、

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

Docker 1.13以降でのみ commit 913e5cb で導入されました。

docker container Prune
122
VonC

docker psとともに filtering を使用することが可能になりました。

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

そして images :の場合

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

ただし、一致するコンテナがない場合、これらのいずれもdocker rmまたはdocker rmiがエラーをスローする原因になります。古いdocker rm $(docker ps -aq)のトリックは、実行中のコンテナをすべて削除しようとしたため、さらに失敗しました。

これはあなたの~/.bashrcまたは~/.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の回答)に感謝します。

103
caktux

_更新_ 2017 (最新)

docker container Prune

これ - 2017 (OLD)

すべての停止した容器を削除するには

docker rm $(docker ps -a -q)

すべての容器を削除するには (停止して停止しない)

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

停止したコンテナをすべて削除します。

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

pauk96 によるコメントから:

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

49
montells

すべてのコンテナを削除したくない場合は、特定のコンテナの前後に作成されたすべてのコンテナを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はUbuntuの/var/lib/docker/containersにコンテナーを格納します。追加のコンテナは他に害を及ぼさないと思いますが、ディスクスペースを占有します。

33
vesako

更新: 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
32
L0j1k

タグなしのコンテナと画像を削除する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

22
blueyed

最初に、それらを取除くことを試みる前に容器を動かすことを止めなさい

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

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

killの代わりにstopを使用できます。毎回新しい変数を作成するのではなく、それらを再実行する傾向があるので私の場合はstopを好みます。

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

エラー:実行中のコンテナを削除することは不可能です。最初に停止してください

すべての容器を取り除く

docker rm $(docker ps -a -q)
13
Ulises

Windowsシェルからすべてのコンテナを削除する

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

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

Dockerのクリーンアップ

次のものを削除する、小さなオールインワンシェル。

  • 1日以上前に稼働していないコンテナ
  • 残りのどのコンテナにも属していない画像

Crontabジョブとして実行する予定

特徴

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

つかいます:

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

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

8
Shashank G

停止しているすべての容器を取り除きます。

Sudo docker rm $(数独ドッカーps -a -q)

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

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

今、あなたはいくらかのスペースを節約するために古い画像をきれいにしたいです。

Sudo docker rmi $(Sudoドッカー画像-q --filter "dangling = true")

7
Ric_Harvey

そのため、個人的には、最新のn個のコンテナーとイメージだけを保持しながら、イメージとコンテナーの両方のデプロイ・スクリプトの一部としてこれを行うことをお勧めします。私はgit tagで使っているのと同じバージョン管理スキーマで自分のDockerイメージをタグ付けし、常に最新のDockerイメージを "latest"でタグ付けします。つまり、何もクリーンアップしないと、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の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)

繰り返しますが、同じ考え方がコンテナーにも当てはまりますが、この時点でそれが得られるので、例を挙げないでください。

7
Eli

新しい方法: 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
6
f-society

最も古い5つの容器を取り出す:

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

残っているコンテナの数を確認してください。

docker ps -aq | wc -l
5
Pithikos
  1. すべてのdockerプロセスを削除します。

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

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

次のコマンドを使用して、終了したコンテナを削除できます。

docker rm $(Sudo docker ps -a | grep Exit | cut -d ' ' -f 1)

これはdocker上の古い画像も削除するための完全な要旨です。 古いDockerコンテナと画像を削除するための要旨

4
urodoz
#!/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
3
mckoss

停止したコンテナのみを削除できます。初めにそれらすべてを止めなさい

docker stop $(docker ps -a -q)

それからあなたは削除することができます

docker rm $(docker ps -a -q)

3
Marcin Szymczak

私はいつもdocker rmi $(docker ps -a -q)を使ってすべての画像を削除します。

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

3
sunny

コンテナとぶら下がっている画像をきれいにするためにこのコマンドを試してください。

docker system Prune -f
3
Pal

すべてのコンテナと画像を停止/削除するための基本的な手順

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

    docker ps -aq

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

    docker stop $(docker ps -aq)

  3. すべての容器を取り除く

    docker rm $(docker ps -aq)

  4. すべての画像を削除

    docker rmi $(docker images -q)

注: 最初にあなたはそれらを削除する前にすべての実行中のコンテナを停止する必要があります。また、画像を削除する前に、その依存コンテナを停止して削除する必要があります。

3

次のネストしたコマンドを使用してください。

$ Sudo docker stop $(Sudo docker ps -a -q)

このコマンドは実行中のすべてのコンテナを停止します。

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

このコマンドはすべてのコンテナを削除します。

2
Rahul Bagad

自動的にまたは定期的に終了したコンテナをクリーンアップし、実行中のコンテナで使用されていないイメージとボリュームを削除したい場合は、イメージmeltwater/docker-cleanupをダウンロードできます。

私たちは複数のサーバーに1日に数回展開するので、私は本番環境でこれを使います、そして私はクリーンアップするためにすべてのサーバーに行きたくありません(それは苦痛でしょう)。

とにかく走れ:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

デフォルトでは30分ごとに実行され(またはDELAY_TIME = 1800オプションを使用して設定した時間が長い場合)、終了したコンテナとイメージをクリーンアップします。

詳細情報:Dockerのクリーンアップ

2
Innocent Anigbo

泣かずにすべての容器を取り出すには:

Sudo docker ps -a | grep -v CONTAINER | awk '{print $1}' | xargs --no-run-if-empty Sudo docker rm -f
2
Felipe
docker rm --force `docker ps -qa`
2
Sivalingam

特定のイメージから作成されたすべてのコンテナを削除します。

docker rm  $(docker ps -a | awk '/myimage:mytag/{print $1}')
2
estani

On Ubuntu 14.04(Trusty Tahr):

$ for CON in `docker ps -qa`; do docker rm $CON ; done

これは単なる通常のBashコマンドなので、すべてのBash準拠端末で機能するはずです。

2
sobi3ch

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

docker stop `docker ps --no-trunc -aq` ; docker rm `docker ps --no-trunc -aq`
2
Kraig McConaghy
#!/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
1
AleX

港湾労働者管理ツールPortainerを使用する

このツールを使用して、使用されていないボリュームやイメージをすべての古いコンテナを管理できます。

港湾労働者向けのシンプルな管理UI

携帯電話を配備する方法

以下のDockerコマンドを使ってPortainerをデプロイします。

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

ブラウザを使ってportainerが動作しているDockerエンジンのポート9000にアクセスするだけです。

注:-v /var/run/docker.sock:/var/run/docker.sockオプションはLinux環境でのみ使用できます。

1
Anish Varghese

下記のコマンドは、すべてのコンテナを停止して削除するのに非常に便利です。 -f(force)フラグを使用している場合は、実行中のすべてのコンテナを停止するので、別のコマンドで明示的に停止する必要はありません。

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

古いDockerコンテナを削除するのはとても簡単です。

すべてのコンテナーをリストします。

docker ps -a
docker ps (To list the running containers)

docker ps -aを打つと、それはあなたにコンテナーID(それはユニークでa-z、A-Zそして0-9の組み合わせです)と共にコンテナーのリストを与えます。削除したいコンテナーIDをコピーして、以下をクリックしてください。

docker rm container_id

あなたのコンテナは/var/lib/docker/aufsで作成されたレイヤーと一緒に削除されます(Ubuntuを使用している場合)。

1
Harshal Vaidya

指定コンテナを削除する

docker container rm container_id

コンテナーが実行中の場合は、削除する前にコンテナーを停止する必要があります。

docker container stop container_id

そしてこのコマンドは、既存のコンテナをすべて削除することです。

docker container rm $(docker container -a -q)
1
bountyhunter

このプロセスには2つのステップ(停止と削除)があります。

  1. 実行中のマイクロサービスによって使用されているコンテナを停止します。

    docker stop $(docker ps -a -q)
    
  2. すべての容器を取り除く

    docker rm $(docker ps -a -q)
    
  3. 単一のコンテナを削除

    docker rm container-ID
    
1

これは、出てきたすべてのコンテナを削除するワンライナーです。

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

あなたがすべての画像を削除したい場合は、このようなものを使用することができます。

docker rmi $(docker images | sed -n '1!p' | awk '{print $3}')

1
nPcomp

これら2行のBashはいくつかのキーワードでコンテナを削除してから削除します。

containers_to_keep=$(docker ps -a | grep 'keep\|Up\|registry:latest\|nexus' | awk '{ print $1 }')
containers_to_delete=$(docker ps -a | grep Exited | grep -Fv "$containers_to_keep" | awk '{ print $1 }')
docker rm $containers_to_delete

この投稿から

0
Emil Salageanu

これは、2日前(またはそれ以前)のコンテナを削除するためのスクリプトです。

#!/bin/bash
# This script will kill and remove containers older than 2 days.
#
docker ps -aq > /scripts/containers.txt
today=`date +%Y-%m-%d`
oldate=`date --date="2 day ago" +%Y-%m-%d`
while read p; do
    cont=`docker inspect -f '{{ .Created }}' $p | cut -c 1-10`
    echo " Created date of $p is $cont"
    k=`echo $(( ( $(date -ud $today +'%s') - $(date -ud $cont +'%s'))/60/60/24 ))
    echo $k
    if [ $k -ge 2 ];
    then
            echo "Killing docker container $p"
            docker kill $p
            echo "Removing docker container $p"
            docker rm $p
    else
            echo "Docker container $p is not one day old, so keeping the container."
    fi
done </scripts/containers.txt
0
SAB

リポジトリからdocker-helperを使うことができます https://github.com/kartoza/docker-helpers 。インストールが終わったら、drmcと入力してください。

0
etrimaille

私の経験からは、「このコンテナはまだ実行中」のようなエラーを避けるためにコンテナを削除する前に停止する必要があります。

Sudo /usr/bin/docker ps -aq |  awk '{print $1}' | \
xargs --no-run-if-empty bash -c 'Sudo docker stop $@; Sudo docker rm $@' bash

私は私のドットファイルの中でエイリアスを保持します:

alias wipedocker="Sudo /usr/bin/docker ps -aq |  awk '{print $1}' \
| xargs --no-run-if-empty bash -c 'Sudo docker stop $@; Sudo docker rm $@' bash"
0
CESCO

実行中のコンテナで現在使用されていないものすべてを単純に削除するには、通常私のMacの.bash_profileに入れる次の alias を使用します。

alias dockerclean="docker ps -q -a | xargs docker rm -v && docker images -q | xargs docker rmi"

dockercleanがコマンドラインから呼び出されるときはいつでも、使われていないイメージレイヤと同様に停止したコンテナを削除します。実行中のコンテナや使用済みの画像については、警告メッセージを表示してスキップします。

0
h3nrik

すべてのコンテナのリスト(IDのみ)

docker ps -aq

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

docker stop $(docker ps -aq)

すべてのコンテナを削除する

docker rm $(docker ps -aq)

すべての画像を削除

docker rmi $(docker images -q)
0
Vikram Biwal

Linuxインストールの場合は、必ず Sudo を使用してください。数ヶ月から数週間前の画像を探すのもいいでしょう。

Sudo docker ps -a | grep 'weeks ago\|months ago' | \
    awk '{print $1}' | xargs --no-run-if-empty Sudo docker rm
0
Paul Oliver

私が使っている:

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

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

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

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

0

私は以下のバリエーションを使います。

docker ps -a | grep 'cassandra.*Exited' | cut -d " " -f 1

最初の部分はすべてのプロセスの一覧です。

2番目は、 'cassandra'の後に 'Exited'が続くものだけを選択します。

3つ目は、イメージIDの後のすべてのテストを削除するので、イメージIDのリストが得られます。

そう、

docker rm $(docker ps -a | grep 'cassandra.*Exited' | cut -d " " -f 1)
0
JRun

この短いスクリプトは役に立つかもしれません(以前の答えからコンパイルされた)!

#!/bin/bash

# Remove dangling images

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

if [ -n "$IMAGE_IDS" ]; then

    Sudo docker rmi $IMAGE_IDS > /dev/null 2>&1
    echo 'Images removed' $IMAGE_IDS
fi


# Remove exited containers

CONTAINER_IDS=$(Sudo docker ps -a -q -f status=exited)

if [ -n "$CONTAINER_IDS" ]; then

    Sudo docker rm -v $CONTAINER_IDS > /dev/null 2>&1
    echo 'Containers remove $CONTAINER_IDS'
fi
0
Chetan Sharma

docker rm -f $(docker ps -a -q)がうまくいくでしょう。それは容器を止め、それらも取り除きます。

0
Jagatveer Singh

終了 および 再起動 dockerコンテナを削除するには、次のコマンドを使用しています。

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

none という名前の画像を削除するには、以下のコマンドを使用します。

docker image rm --force $(docker image ls  |grep none |awk '{print $3}')
0
Sijo M Cyril