UbuntuでIncusを構築:インストール手順とLXDからの移行ガイド

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Incus vs LXD:なぜ注目すべきなのか?

UbuntuでLXDを使用したことがある方なら、システムコンテナの実行がいかに便利かをご存知でしょう。しかし、CanonicalがLXDを社内管理に移行して以来、コミュニティはすぐにIncusという名前の独立したフォークを作成しました。

IncusはLXDのパワーを維持しつつ、Snapへの依存を完全に排除しています。インストールは従来のAPT経由で行えるようになり、システムをより「クリーン」で柔軟に保つことができます。Snapを捨ててIncusへ移行することは、サーバーの制御を取り戻すための最良の方法だと考えています。

私は現在、Proxmoxで約12台のVMを管理するホームラボを運用しています。集中管理にはProxmoxが非常に強力ですが、迅速なCLI操作が必要な場合にはIncusこそが究極の「武器」となります。Incus上のUbuntuコンテナは起動に1秒もかかりません。これは従来のVMでは到底到達できないスピードです。

ステップ 1:ZabblyリポジトリからのIncusインストール

古いバージョンのUbuntuのデフォルトリポジトリにはIncusが含まれていないため、Zabblyのリポジトリを使用します。これはプロジェクトの初期メンテナー自身が管理している信頼できるソースです。

1.1 リポジトリの追加

まず、システムを更新し、curlgpgをインストールします:

sudo apt update && sudo apt install -y curl gpg

次に、パッケージを検証するためのZabblyのGPGキーをダウンロードします:

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc

次に、Ubuntuのソースリストにリポジトリを登録します:

cat <<EOF | sudo tee /etc/apt/sources.list.d/zabbly-incus-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF

1.2 コンポーネントのインストール

あと2つのコマンドでインストールは完了です:

sudo apt update
sudo apt install -y incus

サービスが正常に実行されているか確認することを忘れないでください:

systemctl status incus

ステップ 2:incus admin initによるクイック設定

インストールしただけではまだ使用できません。初期化コマンドを使用して、ストレージ(Storage)とネットワーク(Network)のインフラを設定する必要があります。

sudo incus admin init

これは私がシングルサーバーでよく使用する「設定例」です:

  • Storage backend: zfs または btrfs を優先して選択してください。これらの形式では、圧縮機能(compression)により、即座のスナップショット作成と20〜30%の容量節約が可能です。ディスクに空きパーティションがない場合は、dir を選択して素早く開始してください。
  • Network Bridge: yes を選択してブリッジ(デフォルトは incusbr0)を作成します。コンテナ間およびインターネットとの通信は、NAT経由でスムーズに行われます。
  • IPv4/IPv6: Incusが自動的にIPを割り当てるように auto を選択します。
  • Server access: そのマシン上でのみ使用する場合は、安全のために no を選択してください。

sudoを毎回入力せずに済むよう、ユーザーを管理グループに追加しましょう:

sudo usermod -aG incus-admin $USER
newgrp incus-admin

ステップ 3:最初のインスタンスの作成と管理

Incusは、コンテナ(軽量、カーネル共有)と仮想マシン(完全分離)の両方をサポートしています。

3.1 コンテナの起動

このコマンドは、イメージをダウンロードし、web-serverという名前でUbuntu 22.04コンテナを実行します:

incus launch images:ubuntu/22.04 web-server

3.2 仮想マシン(VM)の起動

内部でDockerを実行したり、独自のカーネルが必要な場合は、--vmフラグを使用してください:

incus launch images:ubuntu/22.04 my-vm --vm

3.3 システム管理者のための「虎の巻」コマンド

  • リストの表示: incus list(従来の lxc list に代わるもの)。
  • マシンのターミナルに入る: incus exec web-server bash
  • リアルタイムのリソース確認: incus top
  • クイック削除: incus delete web-server --force

ステップ 4:監視と拡張

数十個のコンテナを実行している場合、どれがRAMを消費しているかを推測することは不可能です。incus topコマンドを使用すると、Linuxのtopコマンドと同様の概要を、インスタンスごとに明確に分けて表示できます。

システムログをリアルタイムで監視したい場合(ネットワークエラーのデバッグなど)は、以下を使用してください:

incus monitor

私が特に気に入っているのは、リソースを非常に素早く制限できる点です。例えば、web-serverの使用メモリを最大2GBに制限したい場合は、次の1行のコマンドだけで済みます:

incus config set web-server limits.memory 2GB

lxcからincusへの移行は、最初の数日間は少し戸惑うかもしれません。しかし、その安定性とオープン性は、移行の手間に十分見合うものです。ジュニアエンジニアの皆さんにとって、Incusを使いこなすことは、Dockerのようなアプリケーションレイヤーだけでなく、Linuxがシステムリソースをどのように管理しているかを理解するための良い基礎となるでしょう。

Share: