Logo

LXD とコマンドラインツールのインストール

Ubuntu デスクトップと Ubuntu サーバ

Ubuntu 16.04 LTS のユーザは、以下のように LXD をインストールできます:

apt-get install lxd

Ubuntu 14.04 LTS のユーザは、以下のように backports から LXD をインストールできます:

apt-get -t trusty-backports install lxd

代わりに、最新の開発元からのリリースを取得するために、PPA が利用できます:

add-apt-repository ppa:ubuntu-lxc/lxd-stable
apt-get update
apt-get dist-upgrade
apt-get install lxd

パッケージは新しく "lxd" グループを作ります。このグループに所属するユーザ全員がローカルの Unix ソケット経由で lxd と通信を行います。"admin" と "sudoers" グループのメンバーは自動的に "lxd" グループに追加されます。あなたがこのグループのメンバーでない場合は、自身で "lxd" グループにユーザを追加する必要があります。

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

newgrp lxd

そして、必要に応じて最適化されたストレージ (ZFS) の設定、ネットワーク経由でデーモンにアクセスできるようにする設定、コンテナ向けのネットワークの設定を含めた、LXD デーモンの初期設定を行うには:

sudo lxd init

Ubuntu Core (snappy)

LXD はストア内の Snap パッケージとして Ubuntu Core で利用できます。以下のようにインストールできます。

sudo snap install lxd

インストール後、LXD は "lxd.lxc" コマンド経由で操作できます。

もし、rpi2 のようなデバイス上で実行している場合は、サーバ証明書の生成には長い時間がかかる可能性があることに注意が必要です。lxc コマンドから応答が返るまで数分かかるかもしれません。

他のディストリビューション

現時点で、Gentoo と Ubuntu の複数のディストリビューションにパッケージが存在します。 他のディストリビューションのユーザも、各ディストリビューションのパッケージマネージャ内でパッケージを見つけることができるかもしれません。

もし存在しない場合は、git リポジトリからダウンロードしてビルドするか、最新のリリース tarball を使ってください。

方法は両方ともダウンロードページに載っています。

イメージのインポート

LXD はイメージベースです。コンテナはイメージから作る必要があります。そして LXD で色々な処理を行う前に、イメージストアにイメージを取得していなければいけません。

イメージストアにイメージを取得する方法は 3 つあります:

  1. イメージサーバとしてリモートの LXD を使う
  2. ビルトインされているイメージ用リモートサーバを使う
  3. 以下のように手動でインポートする
    lxc image import <file> --alias <name>
    

イメージサーバとしてリモートサーバを使う

リモートのイメージサーバを使うと、リモートサーバとして追加してそれを使うだけですので、とても簡単です:

lxc remote add images 1.2.3.4
lxc launch images:image-name your-container

イメージリストは以下のように取得できます:

lxc image list images:

ビルトインされているイメージ用リモートサーバを使う

LXD にはデフォルトでイメージを提供するリモートサーバが 3 つ登録されています:

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

これらのビルトインのリモートサーバからコンテナを起動するには、以下のように実行します:

lxc launch ubuntu:14.04 my-ubuntu
lxc launch ubuntu-daily:16.04 my-ubuntu-dev
lxc launch images:centos/6/amd64 my-centos

手動でイメージをインポートする

lxd 互換のイメージファイルが手元にある場合は、以下のようにインポートできます:

lxc image import <file> --alias my-alias

その後、以下のようにコンテナを起動します:

lxc launch my-alias my-container

詳しくはイメージの仕様をご覧ください。

コンテナの作成と使用

"ubuntu" というエイリアスで Ubuntu クラウドイメージをインポートしたとすると、以下のようにコンテナを作成できます:

lxc launch ubuntu first

これは新しい Ubuntu コンテナを作成して起動します。起動したことは以下のように確認できます:

lxc list

あなたが作成し、起動したコンテナは "first" という名前です。"lxc launch ubuntu" のように名前を指定せずにコマンドを実行し、ランダムな名前になるように LXD を実行することもできます。

さて、これでコンテナが起動しています。以下のようにコンテナの内部でシェルを実行できます:

lxc exec first -- /bin/bash

また、以下のように直接コマンド実行もできます:

lxc exec first -- apt-get update

コンテナからファイルを取得するには以下のようにします:

lxc file pull first/etc/hosts .

コンテナへファイルを送るには以下のようにします:

lxc file push hosts first/tmp/

コンテナを停止するには以下のようにします:

lxc stop first

完全にコンテナを削除するには:

lxc delete first

複数のホスト

"lxc" コマンドラインツールは複数の LXD サーバと通信できます。デフォルトではローカルの UNIX ソケットを使ってローカルのホストと通信します。

リモート操作には、リモートサーバ上で以下の 2 つのコマンドを実行しておく必要があります:

lxc config set core.https_address "[::]"
lxc config set core.trust_password some-password

最初のコマンドは、すべてのアドレスのポート 8443 にバインドするように LXD を設定しています。 次のコマンドは、このサーバと接続ときに使うパスワードを設定しています。

このリモートの LXD と通信を行うために、以下のようにリモートホストを追加します:

lxc remote add host-a <ip address or DNS>

このコマンドを実行すると、リモートサーバのフィンガープリントの確認と、パスワードを問い合わせるプロンプトが表示されるはずです:

そのあとで、コンテナとイメージの前にリモートホスト名をつけて、先のコマンドと同様に使用します:

lxc exec host-a:first -- apt-get update