第2章 イメージとコンテナの基本操作|これだけはおさえる基本知識
この章では 「イメージとコンテナの違い・基本コマンド・よく使うオプション」 を押さえます。
⏱ 読了目安:約15分 / 各セクションに詳細記事へのリンクあり
Dockerを使い始めて最初に混乱するのが「イメージとコンテナの違い」です。どちらも似た言葉に聞こえますが、役割はまったく異なります。イメージは「設計図」、コンテナはその設計図から作った「実行中の箱」と覚えてください。
イメージはクッキーの「抜き型」に相当します。型を使ってクッキーを何枚焼いても、型そのものは変化しません。Dockerも同様で、1つのイメージから同時に複数のコンテナを起動できます。また、コンテナを削除しても元のイメージは残るため、いつでも同じ環境を再作成できます。

この関係を理解しておくと、docker rm(コンテナの削除)と docker rmi(イメージの削除)を使い分ける理由が自然とわかるようになります。
Dockerのコマンドは数多くありますが、日常的に使うものは 10個前後 に絞られます。「イメージを操作するコマンド」と「コンテナを操作するコマンド」の2グループで整理すると覚えやすくなります。
docker pullイメージを取得
docker imagesイメージ一覧
docker rmiイメージを削除
docker runイメージからコンテナを作成・起動
docker ps起動中コンテナ一覧(-a で全件)
docker stopコンテナを停止
docker rmコンテナを削除
docker exec実行中コンテナでコマンド実行
docker logsログを表示
docker run はイメージからコンテナを作成して起動する、最もよく使うコマンドです。docker stop で停止したコンテナはまだ残っており、docker rm で完全に削除できます。「止める」と「消す」が別コマンドになっている点は初心者が最初に戸惑うポイントです。
コンテナは起動したら終わりではなく、明確な状態(ステータス)を持ちながら動いています。状態を把握しておくと「なぜコンテナが見当たらないのか」「なぜ起動できないのか」といったトラブルを自分で診断できるようになります。
docker run → runningdocker stop → exiteddocker rm → deleteddocker ps -a exited を含む全件表示docker stop で停止しても、コンテナは exited 状態で残り続けます。そのため docker ps には表示されませんが、docker ps -a では確認できます。停止済みコンテナは docker start で再起動することも可能です。完全に不要になったら docker rm で削除しましょう。
-it オプションを付けると、コンテナの中でシェルを対話的に操作できます。まるで SSH でサーバーに入ったような感覚です。ファイルの中身を確認したいときや、動作を手動で試したいときに役立ちます。

すでに起動中のコンテナに入りたい場合は docker exec -it <コンテナID> bash を使います。docker run -it はコンテナを新規作成して入る、docker exec -it はすでに動いているコンテナに入る、という使い分けを覚えておきましょう。
Webサーバーやデータベースのように「起動したらずっと動かし続ける」コンテナは、-d(detach)オプションでバックグラウンド実行にします。-d を付けないと、ターミナルがコンテナに占領されてしまい、Ctrl+C を押すとコンテナも止まってしまいます。
バックグラウンドで動いているコンテナのログを確認するには docker logs <コンテナID> を使います。停止するときは docker stop <コンテナID> です。コンテナIDは最初の数文字だけでも認識されるので、docker stop a3f のような短縮形も使えます。
コンテナはデフォルトで外部から隔離されており、ブラウザからアクセスできません。またコンテナを削除するとその中のデータも消えます。この2つの問題を解決するのが -p(ポートマッピング)と -v(ボリュームマウント)です。
localhost:8080
:80
-p 8080:80フォルダ
のパス
-v ./data:/data$ docker run -d -p 8080:80 -v ./html:/usr/share/nginx/html nginx
上の例では -p 8080:80 で「PC の 8080 番ポートをコンテナの 80 番ポートに繋ぐ」ため、ブラウザで http://localhost:8080 にアクセスするとnginxの画面が表示されます。-v ./html:/usr/share/nginx/html でホスト側の html フォルダとコンテナ内の公開ディレクトリを同期しているため、コンテナを削除してもファイルは手元に残ります。※Windowsで動かしている方はホスト側のフォルダの書き方は/→\へ読み替えが必要ですのでご注意ください

この章で学んだコマンドを 全10ステップ で体験できます。下の順番で入力してみましょう。
docker run hello-world — 動作確認・イメージの自動 pull を体験docker ps -a — 停止済みコンテナも含めて確認docker images — ローカルのイメージ一覧を確認docker run -d --name web -p 8080:80 nginx — バックグラウンド起動・ポート公開docker ps — nginx が Up 状態か確認docker logs web — nginx の起動ログを確認docker exec web ls /etc/nginx — コンテナ内でコマンド実行docker stop web — コンテナを停止docker rm web — コンテナを削除docker rmi hello-world nginx — イメージを削除してクリーンアップrun / ps / stop / rm / rmi / exec / logs の7つdocker stop は「停止」、docker rm は「削除」。止めても消えない-it でコンテナ内に入れる、-d でバックグラウンド実行-p で外部公開、-v でデータを永続化


コメント