「LXD」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:仮想化 en:LXD '''[https://linuxcontainers.org/lxd/ LXD]''' はコンテナの『ハイパーバイザ』であり Linux Containers の新しいユ...」)
 
(同期)
10行目: 10行目:
 
$ lxc-checkconfig
 
$ lxc-checkconfig
   
セキュリティ上の理由で、デフォルトの Arch カーネルでは非特権ユーザーでコンテナを実行できるようにはなっていません。しかしながら LXD はそうできることを必要とします。カーネルを自分でビルドして {{ic|CONFIG_USER_NS}} を有効にするか、[[AUR]] の {{AUR|linux-user-ns-enabled}} を使用してください。
+
セキュリティ上の理由で、デフォルトの Arch カーネルでは非特権ユーザーでコンテナを実行できるようにはなっていません。しかしながら LXD はそうできることを必要とします。カーネルを自分でビルドして {{ic|CONFIG_USER_NS}} を有効にするか、[[AUR]] の {{AUR|linux-userns}} や {{AUR|linux-lts-userns}} を使用してください。
  +
  +
{{Note|{{ic|CONFIG_USER_NS}} 機能がなくてもコンテナを起動することはできます。[[#CONFIG_USER_NS 無しでコンテナを起動する]]を参照。}}
   
 
=== Sub{u,g}id の設定 ===
 
=== Sub{u,g}id の設定 ===
44行目: 46行目:
   
 
{{ic|parent}} パラメータを設定することで LXD でコンテナに接続するブリッジを決めることができます。
 
{{ic|parent}} パラメータを設定することで LXD でコンテナに接続するブリッジを決めることができます。
  +
  +
==== ネットワーク設定例 ====
  +
  +
LXD パッケージにはネットワークの設定例が付属しており {{ic|/usr/share/lxd/}} に保存されます。設定を使用するには以下のコマンドを実行してください:
  +
  +
$ ln -s /usr/share/lxd/dnsmasq-lxd.conf /etc/dnsmasq-lxd.conf
  +
$ ln -s /usr/share/lxd/systemd/system/dnsmasq@lxd.service /etc/systemd/system/dnsmasq@lxd.service
  +
$ ln -s /usr/share/lxd/netctl/lxd /etc/netctl/lxd
  +
$ ln -s /usr/share/lxd/dbus-1/system.d/dnsmasq-lxd.conf /etc/dbus-1/system.d/dnsmasq-lxd.conf
  +
  +
[[NetworkManager]] を使用する場合、以下のようにシンボリックリンクを作成してください:
  +
  +
$ ln -s /usr/share/lxd/NetworkManager/dnsmasq.d/lxd.conf /etc/NetworkManager/dnsmasq.d/lxd.conf
  +
  +
{{ic|parent: lxcbr0}} を {{ic|parent: lxd}} に変更してください:
  +
  +
$ lxc profile edit default
  +
  +
最後に、{{ic|dnsmasq@lxd.service}} と {{ic|netctl@lxd.service}} を[[起動]]・[[有効化]]してください。
  +
  +
上記のサンプル設定で問題が発生する場合、{{AUR|lxd}} のページにコメントを投稿してください。
   
 
== 基本的な使い方 ==
 
== 基本的な使い方 ==
   
LXD はデーモン (lxd バイナリ) とクライアント (lxc バイナリ) の2つに分かれています。デーモンを設定して実行したのでイメージをイポートすることができます:
+
LXD はデーモン (lxd バイナリ) とクライアント (lxc バイナリ) の2つに分かれています。デーモンを設定して実行したテナを作成できます:
   
$ lxd-images import ubuntu --alias ubuntu
+
$ lxc launch ubuntu:14.04
   
  +
もしくは、リモートの LXD ホストをイメージソースとして使うこともできます。LXD で設定済みのイメージを使用するには (images.linuxcontainers.org):
イメージを LXD にインポートしたら、コンテナを起動できます:
 
   
$ lxc launch ubuntu
+
$ lxc launch images:centos/7/amd64 centos
   
  +
== Tips and tricks ==
もしくは、リモートの LXD ホストをイメージのソースとして使うこともできます。イメージはコンテナの起動時に自動的にキャッシュされます:
 
  +
=== プロセスやファイルの制限を変更する ===
   
  +
ファイル記述子の制限やユーザーが使用できる最大プロセス数の制限を増やしたい場合、以下のコマンドを実行 (Arch Linux ではデフォルトで1024になっています):
$ remote add images images.linuxcontainers.org
 
  +
$ launch images:centos/7/amd64 centos
 
  +
# systemctl edit lxd
  +
  +
以下のように設定してください:
  +
  +
[Service]
  +
LimitNOFILE=infinity
  +
LimitNPROC=infinity
  +
TasksMax=infinity
  +
  +
設定できたら lxd を再起動してください:
  +
  +
# systemctl restart lxd
  +
  +
== トラブルシューティング ==
  +
=== CONFIG_USER_NS 無しでコンテナを起動する ===
  +
イメージを起動するにはイメージの生成時に {{ic|1=security.privileged=true}} が必要です:
  +
  +
$ lxc launch ubuntu:16.04 test_ubuntu -c security.privileged=true
  +
  +
もしくは既存のイメージを使う場合は設定を編集してください:
  +
  +
$ lxc config edit test_ubuntu
  +
  +
name: test_ubuntu
  +
profiles:
  +
- default
  +
config:
  +
...
  +
security.privileged: "true"
  +
...
  +
devices:
  +
root:
  +
path: /
  +
type: disk
  +
ephemeral: false
   
 
== 参照 ==
 
== 参照 ==
   
* [https://linuxcontainers.org/lxd/ The official LXD homepage]
+
* [https://linuxcontainers.org/lxd/ LXD 公式ホームページ]
* [https://github.com/lxc/lxd The LXD GitHub page]
+
* [https://github.com/lxc/lxd LXD GitHub ページ]

2016年10月30日 (日) 19:15時点における版

LXD はコンテナの『ハイパーバイザ』であり Linux Containers の新しいユーザー体験です。

セットアップ

必要なソフトウェア

LXClxdAUR パッケージをインストールして、lxd.service起動してください。

実行しているカーネルがコンテナを起動できることを確認:

$ lxc-checkconfig

セキュリティ上の理由で、デフォルトの Arch カーネルでは非特権ユーザーでコンテナを実行できるようにはなっていません。しかしながら LXD はそうできることを必要とします。カーネルを自分でビルドして CONFIG_USER_NS を有効にするか、AURlinux-usernsAURlinux-lts-usernsAUR を使用してください。

ノート: CONFIG_USER_NS 機能がなくてもコンテナを起動することはできます。#CONFIG_USER_NS 無しでコンテナを起動するを参照。

Sub{u,g}id の設定

root の sub{u,g}ids を設定して、LXD が非特権のコンテナを作成できるようにします:

$ echo "root:1000000:65536" | sudo tee -a /etc/subuid /etc/subgid

非特権ユーザーとして LXD にアクセス

デフォルトでは LXD デーモンは lxd グループのユーザーからのアクセスを許可するので、ユーザーをグループに追加してください:

$ usermod -a -G lxd <user>

LXD のネットワーク

LXD は LXC のネットワーク機能を使います。デフォルトではコンテナを lxcbr0 ネットワークデバイスに接続します。コンテナのブリッジを設定する方法は LXC のネットワーク設定のドキュメントを読んでください。

lxcbr0 以外のインターフェイスを使いたい場合、lxc のコマンドラインツールを使ってデフォルト設定を編集してください:

$ lxc profile edit default

エディタで設定ファイルが開きます。デフォルトでは以下の内容になっています:

name: default
config: {}
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: lxcbr0
    type: nic

parent パラメータを設定することで LXD でコンテナに接続するブリッジを決めることができます。

ネットワーク設定例

LXD パッケージにはネットワークの設定例が付属しており /usr/share/lxd/ に保存されます。設定を使用するには以下のコマンドを実行してください:

$ ln -s /usr/share/lxd/dnsmasq-lxd.conf /etc/dnsmasq-lxd.conf
$ ln -s /usr/share/lxd/systemd/system/dnsmasq@lxd.service /etc/systemd/system/dnsmasq@lxd.service 
$ ln -s /usr/share/lxd/netctl/lxd  /etc/netctl/lxd
$ ln -s /usr/share/lxd/dbus-1/system.d/dnsmasq-lxd.conf /etc/dbus-1/system.d/dnsmasq-lxd.conf

NetworkManager を使用する場合、以下のようにシンボリックリンクを作成してください:

$ ln -s /usr/share/lxd/NetworkManager/dnsmasq.d/lxd.conf /etc/NetworkManager/dnsmasq.d/lxd.conf

parent: lxcbr0parent: lxd に変更してください:

$ lxc profile edit default

最後に、dnsmasq@lxd.servicenetctl@lxd.service起動有効化してください。

上記のサンプル設定で問題が発生する場合、lxdAUR のページにコメントを投稿してください。

基本的な使い方

LXD はデーモン (lxd バイナリ) とクライアント (lxc バイナリ) の2つに分かれています。デーモンを設定して実行したら、コンテナを作成できます:

$ lxc launch ubuntu:14.04

もしくは、リモートの LXD ホストをイメージソースとして使うこともできます。LXD で設定済みのイメージを使用するには (images.linuxcontainers.org):

$ lxc launch images:centos/7/amd64 centos

Tips and tricks

プロセスやファイルの制限を変更する

ファイル記述子の制限やユーザーが使用できる最大プロセス数の制限を増やしたい場合、以下のコマンドを実行 (Arch Linux ではデフォルトで1024になっています):

# systemctl edit lxd

以下のように設定してください:

[Service]
LimitNOFILE=infinity
LimitNPROC=infinity
TasksMax=infinity

設定できたら lxd を再起動してください:

# systemctl restart lxd

トラブルシューティング

CONFIG_USER_NS 無しでコンテナを起動する

イメージを起動するにはイメージの生成時に security.privileged=true が必要です:

$ lxc launch ubuntu:16.04 test_ubuntu -c security.privileged=true

もしくは既存のイメージを使う場合は設定を編集してください:

$ lxc config edit test_ubuntu
name: test_ubuntu
profiles:
- default
config:
  ...
  security.privileged: "true"
  ...
devices:
  root:
    path: /
    type: disk
ephemeral: false

参照