Note: この翻訳されたページは古くなっている可能性があります。 最新のコンテンツを読むには、英語版にアクセスしてください。 [English Version]
はじめに ¶
注意
まだ LXD をセットアップしていないのであれば、まずは「はじめに - コマンドライン」を最初にご覧ください。
このガイドでは、いくつかの LXD の機能について詳細な情報を紹介しています。
インスタンスの設定 ¶
インスタンスの設定をご覧ください。
現時点では、仮想マシンがサポートする機能は、コンテナがサポートする機能よりも少ないです。
仮想マシンで設定できるオプションはLXD公式文書のインスタンスのセクションでご覧いただけます。「サポートされるインスタンスタイプ」でVM
と書かれているカテゴリー、"Condition" で virtual-machine
と書かれている設定キーが仮想マシンでサポートされています。
lxc launch コマンドのオプション ¶
lxc launch
でオプションを指定して、設定オプションを追加できます。
設定に関連するオプションのリスト: ¶
-p profilename # プロファイルの適用 -c key=value # 設定キーと値の適用
使い方:
lxc launch imageserver:imagename instancename -p profile1 -c key1=value
注意
複数のプロファイルや設定キーを適用するには、次のようにそれぞれにひとつの設定を与えます:
lxc launch imageserver:imagename instancename -p profile1 -p profile2 lxc launch imageserver:imagename instancename -c key1=value -c key2=value
プロファイル ¶
プロファイルの使用をご覧ください。
Cloud-init¶
cloud-init
は Linux ディストリビューションを自動的にカスタマイズするためのソフトウェアです。
次のような機能があります:
- パッケージのインストール
- 設定の適用や編集
- ユーザーの追加
- その他
動作環境:
- cloud-init をサポートするイメージ:
例えば、ALIAS
にcloud
という文字列を含む LXD の公式イメージはcloud-init
をサポートしています。
cloud-init で行う処理を適用する ¶
LXD プロファイル中で cloud-init で行う処理を適用できます。
簡単に編集するには、テキストエディターでプロファイルを記述し、そのテキストファイルを新しいプロファイルに適用します。
cloud-init プロファイルを記述する ¶
- 新しいテキストファイルを、例えば
cloud-profile1.profile
のような名前で作成します - テキストエディターでそのファイルを開いて編集を行います
cloud-init に対する各命令は、config
→ user.user-data
セクションに適用されます(もしくはインスタンスデータの他のセクション。下記を参照):
config: user.user-data: | #cloud-config key: value
例:
config: user.user-data: | #cloud-config package_upgrade: true packages: - package1 - package2
この例では、インストールされているパッケージすべてをアップデートし、package1 と package2 をインストールします。
cloud-init に対するその他の命令 ¶
より詳細な命令については examples in the cloud-init documentation をご覧ください。
インスタンスデータの他の設定セクション ¶
user.meta-data
- cloud-init docs - instance metadata を参照user.vendor-data
- cloud-init docs - vendordata を参照user.network-config
- cloud-init docs - network configuration を参照
Tip
cloud-init の書式が合っているかどうかは cloud-init FAQ - debug user-data でチェックできます。
プロファイルの適用 ¶
テキストファイルを保存したあとは、次のステップでそのファイルを適用します。
LXD で新しいプロファイルを作成します:
lxc profile create cloud-profile1
そして、そのテキストファイルを作成したプロファイルに適用します:
cat cloud-profile1.profile | lxc profile edit cloud-profile1
cloud-init を使ったインスタンスの起動 ¶
lxc launch
コマンドに -p
オプションを指定して、起動時にプロファイルを適用します:
lxc launch imageserver:image instancename -p cloud-profile1
これで cloud-init が動作し始めます。
注意
cloud-init は、指定した内容によっては終了までに時間がかかるかもしれません。
cloud-init の状態 ¶
次のようにして、cloud-init の状態を取得できます:
cloud-init status
上記のコマンドを実行した場合の結果:
status: running
- cloud-init は実行中です。
もしくは
status: done
- cloud-init の実行が終了しました。
次のような --wait
オプションを指定して、cloud-init が終了したときだけ反応を返すようにできます:
cloud-init status --wait
さらなる情報: ¶
次をご覧ください:
Cloud-init documentation
サーバー設定 ¶
すべてのサーバーの設定オプションは LXDドキュメントのサーバー設定の項 をご覧ください。
ここでは次のようなテーマについて紹介します:
プロジェクト ¶
サーバーをプロジェクトに分割できます。プロジェクトでは、独自のインスタンスやプロファイルを持つことができます。
詳しい情報や設定は LXDドキュメントのプロジェクトの項 をご覧ください。
セキュリティ ¶
サーバーセキュリティの詳細は LXDドキュメントのセキュリティの項 をご覧ください。
リモートサーバー ¶
LXD は色々な種類のリモートサーバーをサポートしています:
Simple streams サーバー
: simple streams フォーマットを使った純粋なイメージサーバー公開 LXD サーバー
: ストレージプールやネットワークを持たない空の LXD サーバーで、イメージサーバーとしてのみ機能します。core.https_address
オプション(詳しくはサーバー設定を参照)を:8443
に設定し、認証を設定しないことで、ネットワークに 8443 番ポートで LXD サーバーを一般公開します。そして、共有したいイメージをpublic
に設定します。LXD サーバー
: ネットワーク上で管理できる通常の LXD サーバーを、イメージサーバーとしても使えます。セキュリティ上の理由から、リモート API へのアクセスを制限し、アクセスを制御するために認証方法を設定する必要があります。詳細は、リモート API へのアクセスとリモート API 認証をご覧ください。
リモートの Simple streams サーバーの使用 ¶
リモートサーバーとして Simple streams サーバーを追加するには、次のように実行します:
lxc remote add some-name https://example.com/some/path --protocol=simplestreams
リモートの LXD サーバーの使用 ¶
リモートサーバーとして LXD サーバーを追加するには、次のように実行します:
lxc remote add some-name <IP|FQDN|URL> [flags]
認証方式によっては特定のオプションが必要です(例えば、Candid 認証の場合は lxc remote add some-name <IP|FQDN|URL> --auth-type=candid
となります)。詳しい情報はリモート API 認証をご覧ください。
IP アドレスを使う場合の例は次のとおりです:
lxc remote add remoteserver2 1.2.3.4
実行すると、リモートサーバーのフィンガープリントを確認するプロンプトが表示されます。それからリモートサーバーが使用している認証方式に応じて、パスワードまたはトークンを聞かれます。
リモートサーバーの使用 ¶
リモートサーバーのイメージリスト ¶
リモートサーバーのイメージリストは次のように取得できます:
lxc image list my-images:
インスタンスの起動 ¶
そのサーバーのイメージを使ってインスタンスを起動するには:
lxc launch some-name:image-name your-instance [--vm]
リモートサーバーのインスタンスの管理 ¶
次のようにサーバー名、イメージ名の前にリモートホスト名を付けて、(ローカルで実行するのと)同じコマンドを使用できます:
lxc exec remoteserver-name:instancename -- apt-get update
そのインスタンスで使える任意のコマンドが apt-get update
の代わりに使えます。
イメージ - Part 2 ¶
イメージに関する高度なオプション ¶
イメージのインポート ¶
次のようなイメージをインポートできます:
- 自分でビルドしたイメージ(イメージのビルド参照)
- (手動で)ダウンロードしたイメージ(手動でのダウンロード参照)
- イメージやコンテナからエクスポートしたイメージ(イメージのエクスポートとコンテナからのイメージの作成参照)
コンテナイメージのインポート ¶
次のようなコンポーネントがある場合:
- lxd.tar.xz
- rootfs.squashfs
次のように実行します:
lxc image import lxd.tar.xz rootfs.squashfs --alias custom-imagename
仮想マシンイメージのインポート ¶
次のようなコンポーネントがある場合:
- lxd.tar.xz
- disk.qcow2
次のように実行します:
lxc image import lxd.tar.xz disk.qcow2 --alias custom-imagename
手動でのダウンロード ¶
手動でイメージをダウンロードできます。その場合、イメージのインポートで説明したようなコンポーネントをダウンロードする必要があります。
LXD公式のイメージサーバーから ¶
注意: 通常使用する lxc launch
を使ったほうが簡単です。例えば、使用前にファイルを修正するなどの、何か特別な理由があるときのみ手動でのダウンロードを使用してください。
公式のイメージサーバーへのリンク
https://images.linuxcontainers.org/images/
イメージのエクスポート ¶
次のように実行します:
lxc image export imagename [target folder] [flags]
オプション:
--vm
- 仮想マシンイメージを問い合わせる
コンテナからのイメージの作成 ¶
次のコマンドを実行し、ヘルプをご覧ください:
lxc publish
イメージのビルド ¶
自分でイメージをビルドする場合に、distrobuilder
を使えます(われわれが開発しています)。
distrobuilder のインストール ¶
distrobuilder は snap 経由、もしくは手動でインストールできます:
Snap 経由でのインストール ¶
https://snapcraft.io/distrobuilder をご覧ください。
コンパイル ¶
distrobuilder の Github リポジトリの手順 をご覧ください。
テンプレートの作成・編集 ¶
distrobuilder に手順を示すためのイメージテンプレート(例: ubuntu.yaml
)が必要です。
下記のサンプルテンプレートのひとつを使って作成を始めることができます。ニーズに合うようにテンプレートを変更してください。設定キーの詳細については テンプレートの詳細 をご覧ください。
サンプルテンプレート ¶
標準テンプレート(すべての使用可能なオプションを含みます): https://github.com/lxc/distrobuilder/blob/master/doc/examples/scheme.yaml
さまざまなディストリビューションの LXD 公式テンプレート:
https://github.com/lxc/lxc-ci/tree/master/images
テンプレートの詳細 ¶
テンプレート内には複数のキーを定義できます:
セクション: | 説明: | ドキュメント: |
---|---|---|
image |
ディストリビューション、アーキテクチャ、リリースなどを定義します | Image 参照 |
source |
メインパッケージのソースやキーなどを定義します | Source 参照 |
targets |
特定のターゲット(例: LXDクライアント、インスタンスなど)に対する設定を定義します | Targets 参照 |
files |
ファイルを変更するための generators を定義します | Generators 参照 |
packages |
インストールしたり削除したりするパッケージ、追加するリポジトリを定義します | Package management 参照 |
actions |
イメージをビルドする途中の特定のステップの後に実行するスクリプトを定義します | Actions 参照 |
mappings |
特定のディストリビューションで使われているアーキテクチャ文字列と LXD で使われるアーキテクチャ文字列の差異をマッピングします (例: x86_64: amd64) | Mappings 参照 |
VMでの注意
標準サイズが比較的小さい(〜4GB)ので、cloud-init サポートでイメージをビルドするか(自動的にサイズが大きくなります)、テンプレートにより大きなサイズを設定するかのどちらかを行う必要があります。
または手動で拡張することもできます。
イメージのビルド ¶
コンテナイメージ ¶
次のようにコンテナイメージをビルドします:
distrobuilder build-lxd filename [target folder]
上の例は次のように置き換えてください:
filename
- テンプレートファイル名(例:ubuntu.yaml
)- (オプション)
[target folder]
- イメージを出力する任意のフォルダーへのパス。設定しない場合はカレントフォルダーを使います
イメージをビルドした後、ビルドしたイメージを LXD にインポートするためには イメージのインポート をご覧ください。
詳しくは How to build images をご覧ください。
仮想マシンイメージ ¶
次のように仮想マシンイメージをビルドします:
distrobuilder build-lxd filename --vm [target folder]
上の例は次のように置き換えてください:
filename
- テンプレートファイル名(例:ubuntu.yaml
)- (オプション)
[target folder]
- イメージを出力する任意のフォルダーへのパス。設定しない場合はカレントフォルダーを使います
イメージをビルドした後、ビルドしたイメージを LXD にインポートするためには イメージのインポート をご覧ください。
さらなる情報 ¶
ネットワーク ¶
詳しくは LXD ドキュメントをご覧ください:
ストレージ ¶
詳しくは LXD ドキュメントをご覧ください:
コマンドエイリアス ¶
LXD 内部で使うコマンドのエイリアスを次のコマンドで作ることができます:
lxc alias
すべてのエイリアスのリストは次のように表示できます:
lxc alias list
新しいエイリアスを作るには次のように実行します:
lxc alias add <alias> <target>
例:
lxc alias add delete "delete -i"
これはコマンド lxc delete
を lxc delete -i
にリンクします。LXD クライアントで lxc delete
と実行すると、代わりに lxc delete -i
が実行されます。
Tips & Tricks¶
インスタンスの誤った削除を防ぐ ¶
方法1
: lxc delete
を使う際には常にプロンプトで確認するようにエイリアスを設定する:
lxc alias add delete "delete -i"
方法2
: インスタンスにつぎの設定を行います: security.protection.delete=true
。この設定キーを削除しない限りは、インスタンスを削除できません。
その他の情報とリンク ¶
次のページに詳しい情報があります: