Dockerとは? 初心者向けに基本的な構造を解説
Dockerとは
Dockerは、アプリを箱に入れて動かす技術です。この箱をコンテナと呼びます。
コンテナ
├ アプリ
├ ライブラリ
├ 設定
└ 実行環境
動く環境ごとまとめる仕組みです。
なぜDockerが必要なの?
開発していると、自分のPCでは動くのに他の環境で動かないことがあります。
Pythonのバージョンやライブラリ、OSの違い、設定などが原因ですが、Dockerはこれを解決します。同じコンテナならどこでも同じ動作になります。
Dockerと仮想マシンの違いは?
仮想マシン(VM)の構造
あなたのPC
────────────────
ハードウェア
────────────────
ホストOS(Windows / macOS / Linux)
────────────────
ハイパーバイザー
────────────────
仮想マシンA
├ OS
└ アプリ
仮想マシンB
├ OS
└ アプリ
仮想マシンC
├ OS
└ アプリ
アプリごとにOSが必要です。重くなりやすく、起動に時間がかかります。
Dockerの構造
あなたのPC
────────────────
ハードウェア
────────────────
ホストOS
────────────────
Docker Engine
────────────────
コンテナA
└ アプリ
コンテナB
└ アプリ
コンテナC
└ アプリ
DockerではOSを共有します。起動が速く、管理も簡単です。
比較
仮想マシン
[App + OS]
[App + OS]
[App + OS]
✅ 家を3軒建てるイメージ
Docker
[App]
[App]
[App]
(同じOSを共有)
✅ 1つのマンションに3部屋あるイメージ
Dockerの基本用語
| コンテナ | イメージ | Dockerfile | Docker Hub |
|---|---|---|---|
| 実際に動くアプリ | コンテナの設計図 | イメージを作るレシピ | イメージの共有サイト |
Dockerを理解するための重要な3つの概念
- Dockerfile
- イメージ(Image)
- コンテナ(Container)
Dockerfile
Dockerfileはイメージの作り方を書くファイルです。
(例)Node環境を準備、ファイルコピー、依存インストール → サーバー起動
FROM node:20
WORKDIR /app
COPY . .
RUN npm install
CMD ["node","server.js"]イメージ(Image)
イメージはコンテナの設計図です。
料理で例えると、レシピ = イメージ・料理 = コンテナです。イメージには下記が含まれます。
- OSのベース
- ライブラリ
- アプリ
- 設定
(例)nginxイメージをダウンロード
docker pull nginxコンテナ(Container)
コンテナは実際に動くアプリです。
コマンドの例
docker run nginx※コンテナは使い捨てが基本です。
3つの関係
Dockerfile(設計図を書く)
↓ build
Image(イメージを作る)
↓ run
Container(コンテナを動かす)
実際の開発フロー
1 Dockerfileを書く
FROM python:3.11
COPY . .
RUN pip install flask
CMD ["python","app.py"]2 イメージ作成
docker build -t myapp .3 コンテナ起動
docker run -p 5000:5000 myappもうひとつの重要な概念
ボリューム(Volume)
基本、コンテナを削除するとデータは消えます。そこで使うのがボリュームです。
-v data:/var/lib/postgresqlこうすると、データはPCに保存されます。
まとめ
まずはこの4つを覚えればOKです!この構造を理解していれば、実際に使うときに迷わなくなります。
| Dockerfile | Image | Container | Volume |
|---|---|---|---|
| 作り方 | 設計図 | 実行体 | データ保存 |








