Day2:基本コマンド完全習得と「コンテナの一生」
Day2のテーマは、コンテナの「生まれてから消えるまで」を、コマンドを通して理解することです。
今日は「コンテナのライフサイクル」を頭の中に一本のストーリーとして描けるようになるところまで行きます。
コンテナのライフサイクルを物語としてイメージする
コンテナは、イメージという設計図から生まれ、動き、止まり、最後は削除されます。
人間でいえば、誕生、活動、休止、死亡のような流れです。
Day2で扱うコマンドは、この流れのそれぞれの場面を操作するためのものです。
コンテナを「一時的に借りる作業部屋」とイメージすると分かりやすいです。
作業部屋を作る、今どの部屋が使われているか見る、部屋を閉める、部屋を片付けて消す。
この一連の操作を、Dockerコマンドで行います。
docker run:コンテナを「生み出して動かす」
docker run の役割
docker run は、イメージという設計図からコンテナを作り、そのコンテナを実行するコマンドです。
「この設計図から作業部屋を一つ作って、今すぐ使い始めて」という指示だと思ってください。
具体例:hello-world をもう一度
Day1でも使った次のコマンドを思い出してください。
docker run hello-world
この一行で、Dockerは次のことを自動でやっています。
1つ目に、hello-world という名前のイメージが手元にないか確認します。
2つ目に、なければインターネット上のDocker Hubからダウンロードします。
3つ目に、そのイメージからコンテナを一つ作ります。
4つ目に、そのコンテナを実行し、メッセージを表示して終了します。
初心者が特に意識してほしいのは、「run はコンテナを作る+動かす」という二つの意味を持っていることです。
単に「実行」ではなく、「生成して実行」です。
もう少し実践的な例:Ubuntuコンテナに入ってみる
docker run -it ubuntu bash
このコマンドは、Ubuntuイメージからコンテナを作り、その中で bash を起動し、あなたをその中に入れます。
ターミナルの中で、まるで別のLinuxマシンにログインしたかのように振る舞えます。
ここでのポイントは、コンテナは「軽量な仮想マシンのように振る舞うが、実体はもっと軽い箱」であるということです。
docker ps:今動いているコンテナを「見える化」する
docker ps の役割
docker ps は、現在動いているコンテナの一覧を表示するコマンドです。
「今どの作業部屋が開いていて、誰が使っているか」を確認するイメージです。
docker ps
このコマンドを実行すると、コンテナID、使っているイメージ名、起動してからの時間、状態などが表示されます。
もし何も表示されなければ、「今動いているコンテナはない」という意味です。
停止中も含めて見たい場合
コンテナは止まっても履歴として残ります。
停止中も含めて確認したい場合は、次のようにします。
docker ps -a
これで「過去に作ったコンテナも含めた一覧」が見られます。
コンテナのライフサイクルを理解するうえで、この -a はとても重要です。
docker stop:動いているコンテナを「止める」
docker stop の役割
docker stop は、今動いているコンテナを安全に停止させるコマンドです。
「作業部屋の電気を消して、作業を中断する」イメージです。
部屋自体はまだ残っていて、また後で再開できる状態です。
具体例:コンテナIDを使って止める
まず、動いているコンテナを確認します。
docker ps
表示された一覧の中から、止めたいコンテナの CONTAINER ID を確認します。
例えば、abc123… というIDだったとします。
docker stop abc123
これで、そのコンテナは「停止状態」になります。
停止しただけなので、docker ps -a で見るとまだ一覧に残っています。
docker rm:コンテナを「完全に片付けて消す」
docker rm の役割
docker rm は、停止しているコンテナを削除するコマンドです。
「使い終わった作業部屋を完全に片付けて、鍵も返して、存在自体をなくす」イメージです。
具体例:停止済みコンテナを削除する
まず、停止しているコンテナを確認します。
docker ps -a
STATUS が Exited になっているコンテナが「停止中」です。
そのコンテナIDを使って削除します。
docker rm abc123
これで、そのコンテナは一覧から完全に消えます。
コンテナは「使い捨て」が基本なので、不要になったらどんどん rm して構いません。
docker images:手元にある「設計図」を確認する
docker images の役割
docker images は、ローカル環境に保存されているイメージの一覧を表示します。
「今、自分のPCにどんな設計図があるか」を確認するコマンドです。
docker images
ここには、hello-world や ubuntu など、過去に docker run したときにダウンロードされたイメージも表示されます。
イメージはコンテナを作るための元データなので、ここにあるものから何度でもコンテナを作成できます。
docker rmi:不要になったイメージを削除する
docker rmi の役割
docker rmi は、イメージを削除するコマンドです。
「もう使わない設計図を捨てて、ディスク容量を空ける」イメージです。
docker rmi ubuntu
このようにイメージ名を指定して削除します。
ただし、そのイメージを使って作られたコンテナがまだ残っている場合、削除できないことがあります。
その場合は、先に関連するコンテナを docker rm で削除する必要があります。
コンテナのライフサイクルをストーリーで整理する
ここまでのコマンドを、「一つのコンテナの一生」としてつなげてみます。
まず、docker run でコンテナが生まれ、動き始めます。
次に、docker ps で今動いているコンテナを確認できます。
作業が終わったら、docker stop でコンテナを停止させます。
もう二度と使わないと判断したら、docker rm でコンテナを削除します。
その裏側では、コンテナの元になったイメージが docker images で確認でき、不要になったイメージは docker rmi で削除できます。
この流れを頭の中でイメージできれば、「コンテナのライフサイクルを理解する」というDay2のゴールは達成です。
実務レベルで意識すべきポイント(講師・セキュリティ視点)
実務では、コンテナを作りっぱなし、イメージを溜めっぱなしにすると、ディスク容量を圧迫し、管理も煩雑になります。
また、古いイメージを放置すると、脆弱性を含んだまま残り続けるリスクもあります。
だからこそ、次の感覚を身につけることが重要です。
コンテナは使い捨てであり、不要になったら stop → rm で片付ける。
イメージも、使わないものは rmi で削除し、常に必要最小限に保つ。
この感覚が身につくと、Docker環境を「きれいで安全な状態」に保てるようになります。
Day2のまとめ
Day2では、コンテナのライフサイクルを操作する基本コマンドを学びました。
docker run でコンテナを生み出し、docker ps で状態を確認し、docker stop で止め、docker rm で削除する。
docker images でイメージ一覧を確認し、docker rmi で不要なイメージを削除する。
この一連の流れを、自分の言葉で説明できるようになれば、実務でDockerを触るための土台はかなり固まっています。
