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の基本用語

コンテナイメージDockerfileDocker 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です!この構造を理解していれば、実際に使うときに迷わなくなります。

DockerfileImageContainerVolume
作り方設計図実行体データ保存

おすすめ