Dockerを使っているうちにPCの容量を圧迫する
Dockerを使っていると、いつのまにかコンテナやらイメージがたまってきて、いつの間にかPCの容量を圧迫している、ということがあります。そういうときに、コンテナ、イメージを整理するのが良いです。
コンテナとイメージの削除の基本的な考え
コンテナは、その元となるイメージが存在します。削除の際は、基本的に先にコンテナを削除して、次にイメージを削除します。
コンテナの削除
コンテナのステータスと削除
コンテナを削除する際、コンテナをします。稼働中であっても強制的に削除できますが、基本的には、コンテナを停止してから削除します。
では、コンテナのステータスには、何がある?
コンテナには、以下のステータスがあります。
- created
- restarting
- running
- removing
- paused
- exited
- dead
詳細は、以下のサイトにわかりやすく解説されています。
[Docker入門] Dockerコンテナのステータスを調べてみよう | Skyarch Broadcasting
ところで、exited から running に移行するコマンドで docker start と docker run の2つあるが、その違いは?
以下の違いである。
- docker run: コンテナを作成、またはダウンロードして、実行するコマンド。
- docker start: 作成済みのコンテナを起動するコマンド
既にできあがったコンテナに対して docker run を実行すると上書きされてしまう?
docker run では、イメージを指定するので、既にできあがったコンテナを削除することはない。別のコンテナができるのである。
docker run [オプション] イメージ[:タグ|@ダイジェスト値] [コマンド] [引数...]
Docker run リファレンス — Docker-docs-ja 20.10 ドキュメント
では、Docker startは、どうすればいい?
以下の形式である。
docker start [オプション] コンテナ [コンテナ...]
(公式ページ)[https://docs.docker.jp/engine/reference/commandline/start.html]
Docker startしたが、docker psの状態もかわらない。どういうこと?
おそらく、containerが起動できる状態になっていない。理由はわからないが。通常は、
docker start コンテナID
で、コンテナが起動。docker ps -a の結果も”Up”になる。
その後、
docker attach コンテナID
で、コンテナの中に入るのである。
docker start でも起動しないコンテナは、何かがおかしい。削除してもいいかもしれない。
コンテナの削除はどうやるの?
以下でいける。
docker rm コンテナID
しかし、docker attach しても、画面が固まったのですが?
そういうことがあるみたい。Cntl + C で、元に戻るが、コンテナがまた停止してしまうようです。
それを避けるためには、docker attach ではなく、docker exec の方がいいようです。
docker exec -it コンテナID /bin/bash
イメージの削除
- では、コンテナの削除ができたので、今度はイメージを整理しよう。
まずは、docker imagesで、イメージの一覧を表示して、そこから、不要なイメージを docker rmi で削除する。
docker rmi [イメージID]
よし、これで少しはすっきりした。