Skip to content

OSと仮想化の基礎知識

1. Debian vs Alpine Linux

本プロジェクトでは、DockerイメージのベースOSとして Debian (または Alpine) の使用が強く推奨(または指定)されています。それぞれの特徴と違いを理解することは重要です。

比較表

特徴Debian (buster/bullseye)Alpine Linux
ライブラリglibc (GNU C Library)musl libc
パッケージ管理apt (Advanced Package Tool)apk (Alpine Package Keeper)
サイズ比較的小さい (約100MB〜)極小 (約5MB〜)
互換性高い (標準的なLinux環境)一部低い (glibc依存アプリが動かない)
用途汎用サーバー、開発環境コンテナ最適化、組み込み

なぜ Docker Infrastructure では Debian が選ばれるのか?

  • 安定性と互換性: Debianは「安定版 (Stable)」の信頼性が非常に高く、多くのソフトウェアが公式にサポートしています。
  • トラブルシュートのしやすさ: ユーザー数が多く情報が豊富なため、ハマった時の解決策が見つかりやすいです。
  • glibc: 多くのアプリケーションは glibc を前提に作られているため、Alpine (musl) だと動かない・ビルドできない・遅いという問題が起きることがあります(特にPythonのネイティブ拡張や一部のJavaなど)。

参考ソース:

2. なぜ仮想マシン (VM) が必要なのか?

docs/requirements/inception-subject.md には「仮想マシン上で実行すること」という要件があります。Dockerはローカル(Mac/Windows)でも動くのに、なぜわざわざVMを使うのでしょうか?

理由1: カーネルの完全な制御と隔離

  • Dockerの仕組み: コンテナはホストOSのカーネルを共有して動きます。
  • 問題点: ホストが macOS や Windows の場合、Linuxカーネルはエミュレーション(Docker Desktopの裏で動く隠れたLinux VM)上にあるため、ネットワークやボリュームの挙動が純粋なLinuxと異なる場合があります(例: ボリュームのマウント速度、PID 1の扱い、ネットワークモードの制限)。
  • 解決策: 自分で構築した Debian VM 上で Docker を動かせば、そこは 「正真正銘の Linux 環境」 です。カーネルの挙動も予測可能で、学習目的として最適です。

理由2: 環境の再現性 (Infrastructure as Code)

  • 校舎のPCは「再起動するとリセットされる」環境であったり、root権限がなかったりします。
  • VM(VirtualBox等のイメージ)を使えば、OSの設定・パーティション・ネットワーク構成を含めて「どこでも同じ環境」を持ち運べます。

理由3: システム管理の学習

  • Docker Infrastructureは単なるコンテナ起動だけでなく、「システム管理者としての振る舞い」も評価対象です(PID 1, パーティション, UFW, SSH設定など)。
  • これらはコンテナの外側(ホストOS側)で行う設定であり、借り物のPC(ホストOS)ではなく「自分の管理下にあるOS (VM)」でないと設定・検証できません。

3. 校舎環境(ホストOS)との関係

「校舎のPCもLinux (Ubuntu) で Docker が入っているなら、そこで直接やればいいのでは?」という疑問への回答です。

  1. 管理者権限 (sudo) の欠如
    • 校舎PCのホストOSでは、学生に root 権限が与えられていません。
    • そのため、必須課題である UFW (ファイアウォール) の設定や、/etc/hosts の書き換え、ディレクトリ作成 (/home/login/data) すら自由にできない場合があります。
    • 具体例: /etc/hosts が編集できないと、WordPressが生成する内部リンク(local.dev/...)をホストOSが解決できず、トップページは表示できても**「記事をクリックするとリンク切れになる」** という致命的な問題が発生します。
    • これを解決するには、VM内で名前解決を完結させ、ホストからはSOCKSプロキシ等で「名前解決ごとVMに委譲する」構成(またはVM利用)が必須となります。
  2. 環境リセット
    • 校舎PCは再起動すると初期化される設定の場合が多いです。苦労して作ったデータや設定が消えてしまいます。
    • VMを使えば、VMごとのバックアップや移行(VirtualBoxイメージのコピー)が可能になります。
  3. 隔離性 (Isolation)
    • 自分のミスでOSを壊しても、VMなら再インストールすれば済みますが、ホストOSを壊すと他の学生や運営に迷惑がかかります。

参考ソース:

Released under the MIT License.