Dockerの仕組み
from Docker
まず「Docker」を分解する
「Docker」は一語でいろんなものを指していて、これが混乱の元です。実際は層になっています。
code:_
┌─────────────────────────────────────┐
│ ④ GUI / ダッシュボード │ ← あったりなかったり
├─────────────────────────────────────┤
│ ③ docker CLI(docker run 等のコマンド)│ ← 共通。みんなこれを叩く
├─────────────────────────────────────┤
│ ② Docker Engine(dockerd / containerd)│ ← コンテナを実際に動かす本体
├─────────────────────────────────────┤
│ ① Linux カーネル │ ← コンテナはLinuxの機能で動く
└─────────────────────────────────────┘
ポイントは ①
コンテナは Linux カーネルの機能(namespace, cgroups)で動くので、Linux が必須 です。
macOS だと「VMレイヤ」が要る理由
Linux 上なら ① が最初からあるので、Docker Engine をそのまま動かせる。VM は不要。
macOS / Windows には Linux カーネルが無いので、Linux の VM を立てて、その中で Docker Engine を動かす必要がある。
Mac で docker を使うときは、見えてないだけで必ず裏で軽量 Linux VM が回っています。
code:_
macOS のホスト
└─ Linux VM ← ★ここが「VMレイヤ」
└─ Docker Engine ← ★ここが「Dockerエンジンレイヤ」
└─ コンテナたち
docker CLI(Mac側にインストール)─── 通信 ──▶ VM内のEngine
各ツールを層に当てはめる
table:_
ツール VM Engine CLI GUI 性質
Lima ✅ ❌(自分で入れる) ─ ❌ ただのLinux VM管理ツール
Colima ✅(Lima利用) ✅ docker CLIを使う ❌ CLIのみ・OSS・無料
Docker Desktop ✅ ✅ ✅ ✅ 全部入り・商用(大企業有料)
OrbStack ✅(独自・高速) ✅ ✅ ✅ 全部入り・商用(個人無料)
Lima = 「Linux VMを立てる」だけ。Docker は別途自分で。一番下の層だけ担当。
Colima = Lima の上に Docker Engine の設定まで自動でやってくれる。GUIは無く、操作は標準の docker コマンド。
Docker Desktop = VM + Engine + CLI + GUI + Kubernetes まで全部バンドルした公式の「全部入りパッケージ」。
OrbStack = Docker Desktop の軽量・高速な代替。独自に最適化した VM を持ち、起動が速くメモリ消費も少ない。GUI もある。
Docker Engine
『Goならわかるシステムプログラミング 第1版』
https://www.slideshare.net/zembutsu/what-isdockerdoing
プロセスVMとの違い #??
https://tech-lab.sios.jp/archives/18811
https://tech-lab.sios.jp/archives/19073
https://www.techscore.com/blog/2018/12/10/docker-images-and-layers/
https://iga-ninja.hatenablog.com/entry/2018/06/28/091412
https://y-ohgi.com/introduction-docker/3_production/image/
https://enakai00.hatenablog.com/entry/20140802/1406958412
layerd file system
https://en.wikipedia.org/wiki/Docker_%28software%29
https://github.com/opencontainers/runc
https://zenn.dev/ryoatsuta/articles/64dcc2e2b4e0cf