OSを整える
初級Dockerを整える。
= コンテナの作り方と動かし方
このページはブラウザの中で動きをまねるだけで、実物の Docker は入っていません。表示の書式は docs.docker.com の例に寄せていますが、ID・日時・サイズは架空で、実物と完全には同じではありません。
① Dockerfile からコンテナまで
「次へ」を押すと 1 手ずつ進みます。左の Dockerfile の各行が、中央のイメージのどの層になるかが線でつながります。
② 疑似ターミナルで docker を打つ
左に Dockerfile、下に端末、右に図があります。ボタンを上から順に押すと、取得・起動・停止・ビルドまで一通り動きます。打った結果が図に反映されます。
いまの様子(ホスト・コンテナ・ポート・ボリューム)
青い箱が動いているコンテナ、灰色の点線が止まっているコンテナです。左の矢印がポートの対応、右の点線がボリュームとの接続です。
この端末で打てる命令の一覧(これ以外は「未対応」と出ます)
- docker pull 名前[:タグ]
- docker images
- docker run -d -p 8080:80 --name web -v data:/data nginx
- docker run hello-world
- docker ps / docker ps -a
- docker stop 名前 / docker start 名前
- docker rm 名前 / docker rm -f 名前
- docker rmi イメージ
- docker logs 名前
- docker exec -it 名前 sh
- docker build -t app .
- docker volume ls / create / rm
pull できるのは nginx・alpine・ubuntu・redis・node・python・postgres・hello-world の代表的なものだけです。実物の docker の出力を簡略化していて、ID・日時・サイズは架空です。
③ docker compose:複数のコンテナをまとめて動かす
compose.yaml に「どのコンテナを、どうつなぐか」を書くと、docker compose up の 1 回で全部が立ち上がります。ボタンで up と down を試せます。
compose.yaml(フォルダ名は myapp とします)
services:
web:
image: nginx
ports:
- "8080:80"
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: example
volumes:
- dbdata:/var/lib/postgresql/data
volumes:
dbdata: 言葉の整理:イメージとコンテナ、ボリューム、ポート
イメージは読み取り専用の「ひな形」、コンテナはそのひな形から起こした「動いているもの(または止まっているもの)」です。1 つのイメージから、コンテナはいくつでも起こせます。
ポート: コンテナの中の番号は、そのままでは外から届きません。-p 8080:80 は「ホストの 8080 番に来た通信を、コンテナの 80 番へ渡す」という対応づけです(左がホスト、右がコンテナ)。ポート番号の基本は ポートを整える へ。
ボリューム: コンテナを消すと、中の書き込み層は一緒に消えます。残したいデータは -v data:/data のようにボリュームへ置くと、コンテナを消しても残ります。ホストのフォルダを直接つなぐ書き方(バインドマウント)もあります。
層とキャッシュ: build は命令ごとに結果を覚えていて、変わっていない上の層は使い回します。Dockerfile の上の方を書き換えると、それより下の層は作り直しです。上の端末で build を 2 回打ち、2 回目に CACHED と出るのを確かめられます。
研修・試験での出方と、実務での意味
- 「イメージとコンテナの違い」「docker run と docker start の違い(新しく作る/止まっているものを再開)」は、新人研修で最もよく聞かれます。
docker psは動いているものだけ、-aを付けると止まっているものも出ます。名前の衝突や、ポートの取り合い(port is already allocated)はつまずきやすい場面です。- 仮想マシンとの違い(OS ごと入れるか、OS の核を共有するか)は 仮想化を整える で、複数台の管理は Kubernetesを整える で扱います。
- 実務では「手元と本番で同じ環境を再現する」「同じ Dockerfile から誰でも同じものを作る」ために使われます。Linux の基本命令は Linuxコマンドを整える へ。
たとえると、宅配のお弁当
Dockerfile はレシピ、イメージは冷凍で作り置きした弁当、コンテナは温めて食卓に出した 1 食です。同じ弁当から、何食でも出せます。食べ残し(書き込み層)は、その 1 食だけのものです。
出典・時点(2026年11月時点)
命令の書式と動きは、Docker 公式ドキュメント(docs.docker.com の Reference、CLI reference、Dockerfile reference、Compose の各ページ)を参考に簡略化しています。出力の ID・日時・サイズ・所要時間は架空です。層の数え方(WORKDIR など)や build の細かい表示は、版によって違うことがあります。実際に使うときは、お使いの Docker の公式ドキュメントで確かめてください。
このツールについて
Dockerfile からイメージ、イメージからコンテナができる流れを図で追い、架空の端末で docker の命令を打って確かめます。実物の Docker は動かしません。
Dockerfile → イメージ(層) → コンテナ の流れを図で追い、疑似ターミナルで docker の命令を打って確かめます。実物の Docker は動かしません。
主な機能
- Dockerfile の各命令がどの層になるかを図で対応づけ
- pull・run・ps・stop・build などを打てる疑似ターミナル
- ポート(8080:80)とボリュームの対応が図に反映
- build の2回目に CACHED が出る層のキャッシュ体験
- docker compose の up と down を図と出力で確認
よくある質問
Q. イメージとコンテナは何が違いますか。
A. イメージは読み取り専用のひな形で、コンテナはそのひな形から起こした動いている(または止まっている)ものです。1つのイメージから複数のコンテナを起こせます。
Q. docker run と docker start はどう違いますか。
A. docker run は新しいコンテナを作って起動します。docker start は、すでにある止まったコンテナを再開します。
Q. -p 8080:80 の数字は何ですか。
A. 左がホスト側のポート、右がコンテナ側のポートです。ホストの8080番に来た通信を、コンテナの80番に渡します。
Q. コンテナを消すとデータも消えますか。
A. コンテナの書き込み層に置いたデータは、コンテナを消すと一緒に消えます。残したいデータは -v でボリュームに置きます。
Q. このページで実物の Docker は動きますか。
A. 動きません。ブラウザの中で命令の動きをまねるだけで、ID・日時・サイズは架空です。打った内容は外に送られません。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
続けて整える
この内容は、研修でも扱っています
totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。