こんにちは、かつコーチです。
これまでコンテナの起動・管理を中心に学んできましたが、今回はコンテナの元になる「イメージ」の管理にフォーカスします。
イメージを正しく管理できるようになると、ディスク容量の無駄遣いや、思わぬバージョン違いのトラブルを防げるようになります。docker pull・docker images・docker rmiという3つのコマンドを中心に解説します。
イメージ管理の基本
なぜイメージ管理が必要なのか
イメージは、コンテナを作るたびにパソコンのディスクに保存されていきます。
倉庫の在庫管理に例えると分かりやすいです。
使わなくなった在庫(イメージ)をそのまま倉庫(ディスク)に置きっぱなしにしていると、いつの間にか倉庫が満杯になってしまいます。
特にDockerのイメージは、1つあたり数百MB〜数GBになることも珍しくないため、放置しているとあっという間にディスク容量を圧迫します。
定期的に在庫(イメージ)を棚卸しし、不要なものを処分する意識が大切です。
Docker Hubという公式の置き場
イメージの多くは、Docker Hubという公式のオンラインリポジトリから取得します。
Docker Hubは、世界中の開発者が作成したイメージが公開されている、いわば「イメージの倉庫街」のような存在です。nginxやpython、mysqlといった有名なソフトウェアは、公式が用意したイメージがDocker Hub上に公開されており、誰でも自由に取得できます。
主要コマンドの使い方
docker pullでイメージを取得する
Docker Hubからイメージを取得するには、docker pullコマンドを使います。
docker pull python:3.12
イメージ名:タグの形式で指定し、タグにはバージョンを表す文字列を指定します。docker runを実行した際、指定したイメージが手元になければ自動的にpullが行われますが、あらかじめダウンロードだけ済ませておきたい場面では、こうして単独でpullを実行します。
docker imagesでイメージ一覧・容量を確認する
手元にあるイメージの一覧と、それぞれの容量はdocker imagesで確認できます。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.12 6a6c96337be1 3 weeks ago 1.02GB
nginx latest 3f8a4339aadd 2 months ago 192MB
SIZE列を見ることで、どのイメージがディスク容量を圧迫しているか一目で分かります。
定期的にこのコマンドで一覧を確認する習慣をつけると、不要なイメージに早めに気づけます。
docker rmiでイメージを削除する
不要になったイメージは、docker rmi(remove image)で削除します。
docker rmi python:3.12
前回・前々回の記事でも触れた通り、そのイメージを参照しているコンテナが残っていると削除できません。
先にそのイメージから作られたコンテナをdocker rmで削除してから、イメージ本体を削除する順番を守りましょう。
よくあるつまずきポイント
Before/After:タグを省略してlatestを取得し想定外のバージョンで動く
タグの指定を省略してしまい、想定外のバージョンで動いてしまうのは、実務でも起こりやすいミスです。
❌Before:タグを省略してdocker pullする
docker pull node
私がチームの検証環境を構築した際、docker pull nodeとタグを省略して実行したところ、数か月前に構築した環境と異なるNode.jsのメジャーバージョンが取得され、動作していたコードでエラーが出るという経験をしました。
タグを省略すると、自動的にlatestタグ(その時点の最新版)が取得されるため、実行するタイミングによって取得されるバージョンが変わってしまうのです。
✅After:バージョンを明示的に指定する
docker pull node:20
node:20のように、必要なメジャーバージョンまでは必ず指定するようにしてから、この手の「気づかぬうちにバージョンが変わっている」トラブルはなくなりました。
本番環境で使うイメージほど、タグは具体的に指定することを徹底しましょう。
応用・一歩先の使い方
docker image pruneで未使用イメージを掃除する
コンテナと同様、イメージも使わなくなったものが溜まりがちです。docker image pruneを使うと、どのコンテナからも参照されていないイメージをまとめて削除できます。
docker image prune
さらに踏み込んで整理したい場合は、-aオプションを付けると、タグ付けされていても使われていないイメージまで含めて削除対象にできます。
docker image prune -a
ディスク容量が気になってきたら、まずこのコマンドで掃除する習慣をつけると、快適な開発環境を維持しやすくなります。
まとめ
この記事のポイント
- イメージは倉庫の在庫のように、放置するとディスク容量を圧迫する
docker pullでDocker Hubからイメージを取得できるdocker imagesで一覧と容量を確認し、docker rmiで不要なイメージを削除する- タグを省略するとlatestが取得され、意図しないバージョンになることがある
docker image pruneで未使用イメージをまとめて掃除できる
次に読むべき記事
ここまでで、Dockerの基本操作は一通り身についています。
次はいよいよ、独自のイメージを作る「Dockerfileの書き方基本」に進んでみましょう。
コンテナの管理方法を復習したい方は「コンテナのライフサイクル管理(ps・stop・rm)」も合わせてどうぞ。
タグ: Docker, 初心者向け, 基本操作