目次

インストール

リリースを選択する

LXD では 3 つのリリースブランチが並行してメンテナンスされています:

  • LTS リリース (LXD 4.0.x, LXD 3.0.x or LXD 2.0.x)
  • フィーチャーリリース (LXD 4.x)

LTS リリースは本番環境での使用におすすめです。定期的なバグフィックスとセキュリティアップデートが行われますが、新しい機能の追加や動作が変わるような変更は行われないためです。

LXD の新機能のすべてと月次の更新を取得したい場合は、フィーチャーリリースをお使いください。

パッケージの取得

Linux

Alpine Linux

LXD のフィーチャーブランチをインストールするには、以下を実行します:

apk add lxd

Arch Linux

フィーチャーブランチの LXD をインストールするには次のように実行します:

pacman -S lxd

代わりに snap パッケージを Arch Linux で使うこともできます(後述)。

Fedora

LXD の COPR リポジトリの使い方については こちら をご覧ください。

もしくは、snap パッケージを Fedora 上で使うこともできます (後述)。

Gentoo

LXD のフィーチャーブランチをインストールするには次のように実行します:

emerge --ask lxd

Ubuntu

Ubuntu (全リリース )

今は、snap を使って LXD をインストールするのがオススメの方法です。

最新の stable リリースの場合は次のように実行します:

snap install lxd

LXD 4.0 stable リリースの場合は次のように実行します:

snap install lxd --channel=4.0/stable

LXD 3.0 stable リリースの場合は次のように実行します:

snap install lxd --channel=3.0/stable

LXD 2.0 stable リリースの場合は次のように実行します:

snap install lxd --channel=2.0/stable

注意: 以前、LXD の deb パッケージをインストールしていた場合は、次のような方法で既存データをすべて移行できます:

lxd.migrate

Snap パッケージ (ArchLinux, Debian, Fedora, OpenSUSE, Ubuntu)

LXD 開発元では、多数の Linux ディストリビューションで動作する snap パッケージを作成し、テストしています。

開発元で現在、snap パッケージをテストしている Linux ディストリビューションのリストは こちら にあります。

これらのディストリビューションでは、こちらの手順 に従い、snapd をインストールする必要があります。

その後、LXD を以下のようにインストールできます:

snap install lxd

あるいは次のように実行します:
LXD 4.0 LTS リリースの場合は --channel=4.0/stable
LXD 3.0 LTS リリースの場合は --channel=3.0/stable
LXD 2.0 LTS リリースの場合は --channel=2.0/stable

MacOS 用クライアント

注意:

MacOS 用のビルドはクライアントのみです。サーバーは含みません。

LXD 開発元では、macOS 用の LXD クライアントのビルドを Homebrew 経由で配布しています。

LXD のフィーチャーブランチをインストールするには、以下を実行します:

brew install lxc

Windows 用クライアント

注意:

Windows 用のビルドはクライアントのみです。サーバーは含みません。

Windows 用の LXD クライアントのネイティブビルドは こちら にあります。

ソースからのインストール

LXD をソースからビルドしてインストールする方法は こちら にあります。

初期設定

注意:

インスタンスコンテナ仮想マシン の両方を指します。

コンテナを作成する前に、ストレージやネットワーク環境について少しだけ設定する必要があります。

この設定は以下のように実行して行います:

lxd init

設定オプションの概要:

デフォルト=no : デフォルトではその機能が無効化されていることを意味します

機能 説明 基本的な設定 備考
クラスタリング クラスターは複数のLXDサーバーを組み合わせます。サーバーは同じ分散データーベースを共有し、LXDクライアント(lxc)やREST APIを使って一様に管理できます デフォルト=no
yesに設定すると、既存のクラスターに接続するか新しいクラスターを作るかのどちらかが選べます
LXDドキュメント:
- クラスタリング
MAAS server 「MAASはオープンソースのツールで、ベアメタルサーバーからデータセンターを作れます」 デフォルト=no
yesに設定すると、nameURLAPI keyを指定して既存のMAASサーバーに接続します
- maas.io
- maas - install with lxd
ネットワークブリッジ インスタンスにネットワークアクセスを提供します 既存のブリッジ(もしくはインターフェース)を使うことも、LXDに新しいブリッジを作らせる(推奨オプション)こともできます。追加でブリッジを作成して、あとでインスタンスに割り当てることもできます LXDドキュメント:
- ネットワーク
- ネットワークインターフェース
ストレージプール インスタンスなどがストレージプールに保存されます テスト用途であればloopbackストレージプールを作成してもよいでしょう。
しかしプロダクション環境ではloopbackストレージではなく空のパーティション(もしくはディスク全体)の使用を推奨します(理由:loopbackプールは遅くてサイズを縮小できない)
推奨のバックエンドはZFSとbtrfsです。あとから追加のストレージプールを作成することもできます
LXDドキュメント:
- ストレージ
- LXDのデータをどこに保存するか
- バックエンドの機能比較
ネットワークアクセス LXDサーバーにネットワーク経由でアクセスする デフォルト=no
yesに設定すると、ネットワーク経由でサーバーに接続できます。
パスワードを設定するか、手動でクライアント証明書を受け付けることができます
-
イメージの自動更新 イメージサーバーからイメージがダウンロードでき、この場合イメージは自動的に更新されます デフォルト=yes
yesに設定すると、LXDはダウンロードしたイメージを定期的に更新します
LXDドキュメント:
イメージの扱い
"YAML lxd init preseed" 選択した設定オプションの概要をターミナルに表示します デフォルト=no -

アクセスコントロール

LXD のアクセスコントロールは、グループメンバーシップに基づいて行います。 root ユーザおよび "lxd" グループのメンバーはローカルデーモンと対話できます。

"lxd" グループがシステムにない場合は、作成した後、LXD デーモンを再起動します。 そして、信用するユーザを "lxd" グループに追加します。このグループに属するユーザ全員が、LXD を完全に制御できます。

グループメンバーシップはログイン時にのみ追加されるので、追加後にあなたのユーザセッションを閉じて再度開くか、LXD と通信したいシェル上で "newgrp lxd" コマンドを実行する必要があります

警告:

LXD ソケットにアクセスできる人であれば誰でも LXD を完全にコントロールできます。これには、ホストのデバイスやファイルシステムにアタッチする権限も含まれます。したがって、ホストへの root アクセスで信頼できるユーザにのみ与えられるべきです。さらに LXD のセキュリティについて学びたい場合はドキュメントのセキュリティのセクション(日本語版) (または英語版)をご覧ください。

仮想マシンについての注意

LXD 4.0 から、LXD はネイティブに仮想マシンもサポートします。そしてビルトインのエージェントのおかげで、ほぼコンテナのように使えます。

LXD は VM の機能を提供するために qemu を使います。

仮想マシンの起動方法は後の説明をご覧ください。

仮想マシンについての詳細な情報はフォーラムでご覧いただけます1

注意:

現時点では、仮想マシンで使える機能はコンテナよりは少ないです。 詳しくは Advanced Guide - Instance configuration をご覧ください。

LXD クライアント

LXD クライアント lxc は LXD サーバーを管理するコマンドラインツールです。

概観

次のコマンドで指定できるすべてのコマンドとオプションが概観できます。

lxc

フラグやオプションなどについてのコマンドについてのより詳しい情報がほしい場合は lxc [command] --help を使用してください。

インスタンスの起動

lxc launch コマンドでインスタンスが起動できます。

コンテナの起動
lxc launch imageserver:imagename instancename
仮想マシンの起動
lxc launch imageserver:imagename instancename --vm

前述のコマンド実行例は次のように置き換えます:

  • imageserver はビルトインもしくはご自身で追加したイメージサーバーの名前です
  • imagename はイメージ名です(例: 20.04debian/11)。詳しくは「イメージ」の項をご覧ください
  • instancename は付けたいインスタンス名を指定します(例: ubuntuone)。指定しなければ LXD がランダムに名前を付けます 

Ubuntu の例

lxc launch ubuntu:20.04 ubuntuone

これは(LXD が提供する) Ubuntu Focal Fossa イメージを使ってコンテナを作成します。インスタンス名は ubuntuone となります。

インスタンスの設定

Advanced Guide - Instance Configuration をご覧ください。

イメージ

インスタンスはイメージをベースにしています。これは基本的なオペレーティングシステム(例えば Linux ディストリビューション)と LXD に関係する情報を含んでいます。

次でビルトインイメージーサーバーを使った例を紹介します(後述)。

さらなるオプションについては Advanced Guide - Advanced options for Images をご覧ください。

リモートのイメージサーバーを使う

もっとも簡単にイメージを扱う方法は、ビルトインのリモートイメージサーバーを使うことです。

ビルトインのイメージサーバーは次のように取得できます:

lxc remote list

LXD はデフォルトで 3 つのサーバーが登録されています:

  1. ubuntu: (stable の Ubuntu イメージ )
  2. ubuntu-daily: (Ubuntu イメージのデイリービルド )
  3. images: (他の多数のディストリビューション))

イメージサーバー上のイメージのリスト

イメージサーバー images 上のイメージリストを取得するには次のようにします:

lxc image list images:

詳細
リストの見方は大部分は見るだけでわかります。

イメージの検索

イメージは特定の要素(例えばディストリビューション名)を指定して検索できます。

すべての Debian イメージを検索するには:

lxc image list images: debian

すべての 64bit の Debian イメージを検索するには:

lxc image list images: debian amd64

仮想マシンのイメージ

イメージの cloud バリアントを使うことをおすすめします(ALIAScloud タグで確認できます)。このようなイメージは LXD エージェントと cloud-init を含んでいます。また、サイズは自動的に大きくなり、毎日テストされています。

インスタンスの管理

すべてのインスタンスをリスト表示するには次のように実行します:

lxc list

起動・停止

インスタンスを起動するには次のように実行します:

lxc start instancename

インスタンスを停止するには次のように実行します:

lxc stop instancename

コンテナ内のシェル・ターミナル

コンテナ内のシェルを使うには次のように実行します:

lxc exec instancename -- /bin/bash

デフォルトでは root でログインされた状態になります:

root@containername:~#
ユーザーとしてログインするには

注意: 多数のコンテナでは、先にユーザーを作成する必要があります。

lxc exec instancename -- su --login username

コンテナのシェルから抜けるには次のように実行します:

root@containername:~# exit

ホストのターミナルからコマンドを実行する

ホストのターミナルから単一のコマンドを実行するには次のように行います:

lxc exec containername -- apt-get update

仮想マシン内のシェル・ターミナル

次のコマンドで VM のブートを見ることができます:

lxc console instancename

(コンソールから抜けるには ctrl+a-q)

LXD エージェントビルトインの VM の場合は、ブート後は次のようにアクセスできます:

lxc exec instancename bash

VM のシェルから抜けるには:

exit

ファイルやディレクトリをコンテナ〜ホスト間でコピーする

インスタンスからホストへのコピー

ファイルを次のように pull します:

lxc file pull instancename/path-in-container path-on-host

ディレクトリーは次のようにコピーします:

lxc file pull -r instancename/path-in-container path-on-host

例えば:

lxc file pull instancename/etc/hosts .
ホストからインスタンスへのコピー

ファイルを次のように push します:

lxc file push path-on-host instancename/path-in-container

ディレクトリーは次のように push します:

lxc file push -r path-on-host instancename/path-in-container

インスタンスの削除

警告:

次のコマンドはスナップショットもふくめてインスタンスを削除します。 ほとんどのケースでは、完全に削除されてしまい、リストアすることはできません。 うっかり削除するのを防ぐ方法については Tips & Tricks in Advanced Guide をご覧ください。

次のように実行します:

lxc delete instancename

その他の情報とリンク

次のページにさらに詳しい情報が掲載されています:


  1. LXD で仮想マシンを実行する, Microsoft Windows VM 向けの簡単な HowTo を含みます