Linux VM で間違ったディストリビューションを使用している可能性があります。スピンアップする価値があるのはこれら 3 つだけです
仮想マシンのディストリビューションの選択は間違いやすいです。ほとんどの人は、最も聞いたことのあるものを選び、何か月も戦います。ただし、これら 3 つのオプションはほぼすべてのユースケースをカバーしており、それぞれが異なる状況で威力を発揮します。
安全で万能な Ubuntu
邪魔になることはほとんどない安全なデフォルト
Ubuntu は、最初の試行でほぼすべての機能が動作するため、デフォルトの選択肢として評判を得ています。 Canonical は 2 年ごとに長期サポート リリースを発行し、それぞれに 5 年間の標準セキュリティ アップデートが提供されるため、数か月ごとに VM を再構築したくない人にとっては予測可能な OS になります。
本当の強みはそれを取り巻くエコシステムです。ほぼすべてのチュートリアル、フォーラム スレッド、トラブルシューティング ガイドは Ubuntu を前提としているため、何か問題が発生した場合でも、通常は 1 回検索するだけで答えが得られます。ソフトウェア ベンダーも最初に Ubuntu パッケージを公開する傾向があり、多くのプロジェクトが Ubuntu をリファレンス プラットフォームとして扱います。 Multipass、cloud-init、Windows Subsystem for Linux などのツールはすべて、これを第一級市民として扱います。つまり、何も再学習することなく、ローカル VM、クラウド インスタンス、コンテナーの間を移動できます。
それにはトレードオフが伴います。デスクトップ エディションは、より無駄のないオプションに比べて容量が大きく、Canonical では快適なグラフィック エクスペリエンスのために約 4 GB の RAM を推奨しています。サーバー エディションははるかに軽量であり、実際に必要になった場合にデスクトップ環境を後で追加できるため、ほとんどの VM 作業にはサーバー エディションの方が適しています。また、Ubuntu が Snap パッケージに大きく依存していることを嫌う人もいます。これにより、起動が遅くなり、従来の apt インストールとは動作が異なる可能性がありますが、通常は必要に応じて回避できます。
強い要件がなく、オンラインで読んだ例のように動作する VM が必要なだけの場合は、Ubuntu を開始点とするのが賢明です。それが最も効率的であったり、最小限のオプションであることはめったにありませんが、午後を無駄にする可能性が最も低いオプションです。
軽量 VM 用の Alpine Linux
設置面積が小さく、無駄のないワークロード向けの高速起動
Alpine Linux は、Ubuntu とは逆のアプローチを採用しています。すぐにフレンドリーになることを目指すのではなく、できる限り小規模になることを目指しています。基本コンテナー イメージの重さはわずか数メガバイトで、仮想マシン ISO は一般的なデスクトップ ディストリビューションのサイズのほんの一部です。新規インストールでは、100 メガバイトをはるかに下回るメモリでアイドル状態になる可能性があります。これは、ラップトップ上で複数の VM を実行している場合や、安価なクラウド インスタンスにサービスを詰め込んでいる場合に重要です。
そのミニマリズムは、いくつかの意図的な選択から生まれます。 Alpine は、より一般的な glibc の代わりに musl libc を使用し、コア ユーティリティとして BusyBox に依存しています。また、systemd をスキップして、より単純な init システムである OpenRC を使用します。パッケージは、ソフトウェアを数秒でインストールする高速パッケージ マネージャーである apk によって処理されます。インストールされるコンポーネントが少ないほど悪用されるものも少なくなるため、セキュリティも設計に組み込まれており、デフォルトが強化され、攻撃対象領域が小さくなります。
ここで考慮すべき点は互換性です。 musl が原因で、glibc に対してビルドされた一部のプリコンパイル済みソフトウェアは正しく実行されず、特定の Python パッケージまたは独自のバイナリでは追加の作業またはソースからのコンパイルが必要になる場合があります。 BusyBox コマンドは、GNU のコマンドとは若干異なる動作をするため、他のディストリビューションを念頭に置いて作成されたスクリプトが失敗する可能性があります。初心者にとって、これらの癖により、Alpine は許せないと感じるかもしれません。
しかし、適切な仕事に勝つのは難しいです。 Alpine は、使い捨てのテスト マシン、ネットワーク アプライアンス、コンテナ ホスト、および利便性よりもスピードと効率が重要な単一目的のサービスに最適です。何を実行したいのかが正確にわかっていて、システムに他に何も必要ない場合、Alpine はまさにそれとそれ以上のものを提供します。
安定性のための Debian
VM の実行を継続する、ゆっくりとした慎重な更新
Debian は歴史的に、Linux 世界の多くの基盤として機能しています。 Ubuntu 自体は、他の多くのよく知られたディストリビューションとともに Ubuntu 上に構築されています。その特徴は、安定性への深いこだわりです。新しいリリースはおよそ 2 年ごとにリリースされますが、パッケージのバグや互換性がチェックされる長いテスト期間を経た後にのみリリースされます。各リリースでは、約 3 年間の定期的なセキュリティ サポートが提供され、その後ボランティア チームによる追加の長期サポートが提供されるため、1 回のインストールで何年も使い続けることができます。
この保守的なアプローチがポイントです。 Debian の安定版ブランチは、ソフトウェアの最新バージョンではなく、意図的に十分にテストされた古いバージョンを出荷するため、更新後の驚きが少なくなります。データベース、ファイル サーバー、または触れたくないホーム ラボ サービスをホストする VM の場合、その予測可能性は貴重です。アップデートのほとんどはセキュリティ パッチとバグ修正であるため、今日構成したシステムは来年も同じように動作します。
Debian も難しくなく無駄がありません。ネットワーク インストール イメージは小さく、セットアップ中に含めるコンポーネントを正確に選択できるため、余分な荷物をほとんど持たずにクリーンなサーバーを構築できます。 glibc と systemd を使用しているため、大部分のソフトウェアとの互換性が維持され、Alpine で発生する可能性のある摩擦を回避できます。ドキュメントは徹底的であり、Ubuntu はパッケージ形式とツールを共有しているため、ほとんどの Ubuntu ガイドは直接翻訳されています。
欠点は、新しいソフトウェア バージョンが見つかるまでしばらく待つ必要があり、古いパッケージでは制限があると感じる開発者もいるということです。バックポートとサードパーティのリポジトリは、必要に応じてギャップを埋めることができます。しかし、静的に信頼性を維持する VM を優先する場合は、Debian を選択することをお勧めします。
業務に合ったディストリビューションを選択してください
Ubuntu は一般的な用途に適しており、Alpine はサイズと速度が重要な場合に優れており、Debian は長期的な安定性を重視する人に適しています。デフォルトで使い慣れた名前を使用するのではなく、ディストリビューションをワークロードに一致させると、仮想マシンの実行が容易になります。
このテーマについてさらに詳しく知りたい方は以下をご覧ください