本文へスキップ
totonoe.tech

OSを整える

初級

Dockerを整える。

= コンテナの作り方と動かし方

このページはブラウザの中で動きをまねるだけで、実物の Docker は入っていません。表示の書式は docs.docker.com の例に寄せていますが、ID・日時・サイズは架空で、実物と完全には同じではありません。

① Dockerfile からコンテナまで

「次へ」を押すと 1 手ずつ進みます。左の Dockerfile の各行が、中央のイメージのどの層になるかが線でつながります。

Dockerfile FROM node:20 WORKDIR /app COPY . . RUN npm install EXPOSE 3000 CMD ["node","server.js"] docker build イメージ(読み取り専用) EXPOSE・CMD は 設定のメモ(層なし) RUN の層 COPY の層 WORKDIR(※) FROM の層 (ベース。複数枚) ※ WORKDIR は無い場所を作るとき層になることがあります docker run コンテナ 書き込み層 (このコンテナ専用) イメージの層を そのまま使う (読み取り専用) ● 実行中(node server.js) ■ 停止(書き込み層は残る)

② 疑似ターミナルで docker を打つ

左に Dockerfile、下に端末、右に図があります。ボタンを上から順に押すと、取得・起動・停止・ビルドまで一通り動きます。打った結果が図に反映されます。

架空の Docker 打った内容はこのページの中だけで処理されます
練習の流れ
$

いまの様子(ホスト・コンテナ・ポート・ボリューム)

青い箱が動いているコンテナ、灰色の点線が止まっているコンテナです。左の矢印がポートの対応、右の点線がボリュームとの接続です。

この端末で打てる命令の一覧(これ以外は「未対応」と出ます)
  • 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:
ホスト(あなたの PC) ネットワーク myapp_default(中では名前で呼び合える) web nginx :80 db postgres:16 db:5432 :8080 dbdata(ボリューム) まだ何も動いていません。 上の up ボタンを押してください。
 

言葉の整理:イメージとコンテナ、ボリューム、ポート

イメージは読み取り専用の「ひな形」、コンテナはそのひな形から起こした「動いているもの(または止まっているもの)」です。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®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。

運営サイト

私たちが運営するサイト