📘

DockerとOSの関係をちゃんと理解する

に公開

Dockerを勉強していたら、Dockerfileの1行目に出てきたこれ:

FROM ubuntu:22.04

でも、ふと疑問に思いませんか?

🤔 DockerってホストPCのカーネルを使い回すから軽いんじゃなかったっけ?

それなのに Ubuntu を指定するってどういうこと?Ubuntuも起動してるの?

この記事ではこの疑問に答えながら、Dockerの「OSイメージ」の正体をわかりやすく解説していきます!


✅ 結論:カーネルじゃなくて“ユーザー空間”がほしいだけ!

Dockerが軽量なのは「ホストPCのカーネル(OSの中枢)を使い回す」からです。

ですが、実行環境としての“ユーザー空間”は必要です。

項目 説明
カーネル OSの心臓部。プロセス管理・メモリ管理などを担う。Dockerはホストのカーネルを使う
ユーザー空間 bash, apt, ls, /etc など、OSの上にあるコマンドや構成ファイル群

つまり FROM ubuntu:22.04 は:

Ubuntuのカーネルを使う のではなく、
Ubuntuのユーザー空間(便利なコマンドや構成)を使いたい

という意味なんです。


🏗️ じゃあ、何が入ってるの?

UbuntuのDockerイメージには、次のようなものが含まれます:

  • /bin/bash(シェル)
  • /etc/apt/(aptの設定)
  • apt(パッケージ管理ツール)
  • 基本的なLinuxコマンド(ls, cat, cp, mkdirなど)

つまり、「Ubuntuのような環境」でアプリを動かせるようになるわけです。

🔧 ただし、起動しているOSそのものではない


💡 なぜUbuntuベースが使われやすいの?

LaravelのようなPHPアプリケーションを動かすとき:

  • PHPをインストールしたい
  • でも、curl https://php.net/... とか面倒
  • apt install php で一発で入れたい

⬇️

✅ それなら apt が使える Ubuntu がベースだと楽! というわけです。

Ubuntu以外にも:

  • alpine:超軽量・セキュア(小さいが学習コスト高め)
  • debian:安定性・互換性が高い

などがあります。


⚙️ Dockerはどうやって動いてるの?(簡単に)

Dockerの仕組みをざっくり振り返ると:

  • Dockerコンテナは、ホストPCのカーネルを使って動いている
  • その上に、ユーザー空間(bash, apt, phpなど)をイメージで準備する
  • イメージの内容は OSまるごとではなく「OSっぽいファイル群」だけ

🧠 カーネルは共有!ユーザー空間は専用!


📝 まとめ

疑問 答え
Dockerって軽いのにOSを指定するの? 実際は“ユーザー空間”を整えるため
FROM ubuntu:22.04 の意味は? Ubuntuっぽい環境を準備するだけ(カーネルは使わない)
なぜUbuntu? aptが使えて、Laravelの開発に便利だから

🔚 おわりに

Dockerを使うとき、FROM ubuntu と書いてあると「Ubuntuを立ち上げてる」と思いがちですが、実は「Ubuntuの中身(だけ)を使ってる」と考えるとスッキリします。

カーネルはホストのもの。コンテナの中はただの“それっぽい環境”です。

これでまた少しだけ、Dockerに対する理解が深まりました!

Discussion