Ubuntu Weekly Recipe

第459回 LXDを使ってDockerコンテナをマイグレーション

この記事を読むのに必要な時間:およそ 11 分

LXDのインストールと初期設定

LXDはUbuntu公式のリポジトリにパッケージが用意されていますので,それをインストールするだけです。デーモンであるlxdとそれを操作するツールであるlxcがインストールされます。Dockerと同じような感じでlxcコマンドを使うにはlxdグループに所属する必要があります。ただしグループはインストール時に作成されますし,adminグループとsudoersグループのユーザーは自動的にlxdグループに所属することになりますので,sudoコマンドを使えるユーザーであれば単にインストール後に一度ログインしなおすだけでかまいません。

$ sudo apt install lxd

LXDを使うにはまず初期設定を行う必要があります。これはlxdコマンドを使います。lxcコマンドと混同しそうですが,lxdコマンドを直接使うのはこのタイミングだけです。

$ sudo lxd init
Name of the storage backend to use (dir or zfs) [default=zfs]: dir
Would you like LXD to be available over the network (yes/no) [default=no]?
Do you want to configure the LXD bridge (yes/no) [default=yes]?
LXD has been successfully configured.

最初に設定するのがストレージバックエンドです。要するにコンテナイメージをどのように保存するかという話になります。zfsutils-linuxパッケージがインストール済みの環境であれば,導入の容易さと速度のバランスからZFSが推奨されています。またZFSの場合はホストのファイルシステムには依存しません。ただしLXD上でDockerを動かす分には相性が悪いようです。

BtrfsやLVMという選択肢もあります。特にBtrfsは機能の面から言えばZFSよりも便利なのですが,BtrfsもLVMもホストのファイルシステム(正確には/var/lib/lxdが存在するファイルシステム)と一致していなくてはなりません※3)⁠つまりExt4上では使えません。Directoryバックエンドは単純にルートファイルシステムをディレクトリとして保存する方法です。他のバックエンドに比べるとストレージの使用量は多いですし,コンテナの作成やスナップショットの速度は遅いのですが,ホストのファイルシステムに依存せずにコンテナのネストなどができるというメリットもあります。今回はDirectoryバックエンドを設定しています。

※3
体感ベースではありますが,ホストのファイルシステムとしてBtrfsを採用しているのであれば,Btrfsが一番LXDと相性と良いように感じています。Gihyo Digital PublishingではPDF版も販売されている『Software Design 2017年2月号』の第2特集は「Linuxファイルシステムの教科書」と題してBtrfsの特徴などにも言及していますので,Btrfsを導入したい場合はそちらも参考になるでしょう。

2つ目はLXDのサービスをネットワーク越しに操作できるかどうかの設定です。あとからでも設定変更可能ですので,とりあえずは「no」でもいいでしょう。3つ目はコンテナのネットワーク設定になります。こちらは設定しておきましょう。⁠yes」にすると,さらに次の問いに答えることになりますが,基本的にすべて初期設定値のままでかまいません。

図1 コンテナからホストの外に通信できるようにブリッジの設定を行うかどうか

画像

図2 ブリッジの名前

画像

図3 コンテナにIPv4アドレスを割り当てるかどうか

画像

図4 デフォルトゲートウェイ

画像

図5 サブネットマスク

画像

図6 DHCPが割り当てる範囲の最初のアドレス

画像

図7 DHCPが割り当てる範囲の最後のアドレス

画像

図8 DHCPが割り当てるアドレスの個数

画像

図9 IPv4のNAT設定を行うかどうか(以下IPv6についても同様の設定を行う)

画像

これでLXDを利用できる環境が整いました。

$ lxc info
apiextensions:
- id_map
apistatus: stable
apiversion: "1.0"
auth: trusted
environment:
  addresses: []
  architectures:
  - x86_64
  - i686
  certificate: |
    -----BEGIN CERTIFICATE-----
    (中略)
    -----END CERTIFICATE-----
  certificatefingerprint: e2deb928a0ab2192ab428b66ed6fe7802bf1809043bfcc8f01ef5a8dae77e849
  driver: lxc
  driverversion: 2.0.6
  kernel: Linux
  kernelarchitecture: x86_64
  kernelversion: 4.4.0-62-generic
  server: lxd
  serverpid: 29207
  serverversion: 2.0.8
  storage: dir
  storageversion: ""
config: {}
public: false

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入