lxd2.0でlxdbr0を利用しネットワーク接続

* ubuntu16.04 と14.04にて作業

## 概要

```bash:インストール
# 16.04の場合
apt-get install -y lxd
# 14.04の場合
apt-get -t trusty-backports install lxd
```

```bash:概要
# ネットワーク設定
dpkg-reconfigure -p medium lxd
# コンテナ起動
lxc launch images:ubuntu/xenial/amd64 ubuntu
#
lxc exec ubuntu -- cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
lxc exec ubuntu -- locale-gen ja_JP.UTF-8
lxc exec ubuntu -- update-locale LANG=ja_JP.UTF-8
lxc exec ubuntu -- sed -i -e 's/archive/jp.archive/' /etc/apt/sources.list
lxc exec ubuntu -- apt-get update -qq
lxc exec ubuntu -- apt-get install -y -q ssh
lxc exec ubuntu -- passwd ubuntu
#
ssh ubuntu@10.10.10.46
```

```bash:コンテナをイメージ、tar.gz化
lxc stop ubuntu
lxc publish ubuntu --alias tmpl  #少し時間がかかる
lxc image export tmpl
```

```bash:tar.gzを復元しコンテナ起動
lxc image import *.tar.gz --alias tmpl
lxc delete ubuntu
lxc launch tmpl ubuntu
#
lxc exec ubuntu -- コマンド
...
```

----

## インストール

```bash:16.04の場合
apt-get install -y lxd
```

```bash:14.04の場合
apt-get -t trusty-backports install lxd
```

```bash:バージョン確認
$ lxd --version
2.0.0
```

* lxdをtmpfsで動かす

```diff:/etc/fstab
+ tmpfs	/var/lib/lxd/containers/ tmpfs  defaults,nofail   0     0
```


## ネットワーク設定

```
dpkg-reconfigure -p medium lxd
```

* Enterキー連打でOK。ホストで使ってないIPアドレス帯を自動で判別してくれる。
* あとで設定を変えたい場合は `/etc/default/lxd-bridge`を編集すること。
* IPv6を無効にしたい場合は以下

![ipv6.png](https://qiita-image-store.s3.amazonaws.com/0/25728/256082a8-5af1-98b9-0224-2dd93c49ebff.png)

もしくは

```bash:/etc/default/lxd-bridge
## NAT IPv6 traffic
LXD_IPV6_NAT="false"

# Run a minimal HTTP PROXY server
LXD_IPV6_PROXY="false"
```

## リポジトリ一覧確認

```bash:リポジトリ一覧
$ lxc remote list
+-----------------+------------------------------------------+---------------+--------+--------+
|      NAME       |                   URL                    |   PROTOCOL    | PUBLIC | STATIC |
+-----------------+------------------------------------------+---------------+--------+--------+
| images          | https://images.linuxcontainers.org       | lxd           | YES    | NO     |
+-----------------+------------------------------------------+---------------+--------+--------+
| local (default) | unix://                                  | lxd           | NO     | YES    |
+-----------------+------------------------------------------+---------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams | YES    | YES    |
+-----------------+------------------------------------------+---------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams | YES    | YES    |
+-----------------+------------------------------------------+---------------+--------+--------+
```

* 最初から登録されているので便利
* イメージ一覧は[images.linuxcontainers.org](https://images.linuxcontainers.org/)を参照。沢山増えてる

## コンテナ起動

```bash:ubuntuコンテナ起動
lxc launch images:ubuntu/xenial/amd64 ubuntu
```

```bash:ubuntuコンテナ内に入る
lxc exec ubuntu -- /bin/bash
```

* このままではネットワーク設定がされていない。

```bash:ip取得
dhclient eth0
```

* ネットワーク接続できることを確認。


## ディレクトリ

* /var/lib/lxd/が使われれる。

```bash:
# du -sh /var/lib/lxd/*
370M	/var/lib/lxd/containers
8.0K	/var/lib/lxd/devices
4.0K	/var/lib/lxd/devlxd
77M	/var/lib/lxd/images
44K	/var/lib/lxd/lxd.db
52K	/var/lib/lxd/security
4.0K	/var/lib/lxd/server.crt
4.0K	/var/lib/lxd/server.key
8.0K	/var/lib/lxd/shmounts
4.0K	/var/lib/lxd/snapshots
0	/var/lib/lxd/unix.socket
```

## export

```bash:ubuntuコンテナをイメージ化
lxc publish ubuntu --force --alias ubuntu_`date -I`
```


```bash:イメージ一覧の確認
# lxc image list
+-------------------+--------------+--------+----------------------------------------+--------+----------+-------------------------------+
|       ALIAS       | FINGERPRINT  | PUBLIC |              DESCRIPTION               |  ARCH  |   SIZE   |          UPLOAD DATE          |
+-------------------+--------------+--------+----------------------------------------+--------+----------+-------------------------------+
| ubuntu_2016-04-15 | f731970163f1 | no     |                                        | x86_64 | 118.85MB | Apr 15, 2016 at 12:31am (UTC) |
+-------------------+--------------+--------+----------------------------------------+--------+----------+-------------------------------+
|                   | f59985df3af9 | no     | Ubuntu xenial (amd64) (20160413_03:49) | x86_64 | 76.89MB  | Apr 14, 2016 at 11:02pm (UTC) |
+-------------------+--------------+--------+----------------------------------------+--------+----------+-------------------------------+
|                   | 8b9c1af95cb9 | no     |                                        | x86_64 | 118.85MB | Apr 15, 2016 at 12:29am (UTC) |
+-------------------+--------------+--------+----------------------------------------+--------+----------+-------------------------------+
```


```bash:ubuntuコンテナイメージをファイル出力
$ lxc image export ubuntu_`date -I`
Output is in f731970163f156d08b5ea687e5b67a231d5f7cd367c9e2f590d892a118ff6e88.tar.gz
$ du -sh f731970163f156d08b5ea687e5b67a231d5f7cd367c9e2f590d892a118ff6e88.tar.gz 
119M	f731970163f156d08b5ea687e5b67a231d5f7cd367c9e2f590d892a118ff6e88.tar.gz
```

## import


```bash:わかりやすくイメージ削除しておく
$ lxc image delete f7
$ lxc image delete f5
$ lxc image delete 8b
$ lxc image list 
+-------+-------------+--------+-------------+------+------+-------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+-------+-------------+--------+-------------+------+------+-------------+
```

```bash:exportしたイメージをimportする
$ lxc image import f731970163f156d08b5ea687e5b67a231d5f7cd367c9e2f590d892a118ff6e88.tar.gz --alias=ubuntu
Transferring image: 100%
Image imported with fingerprint: f731970163f156d08b5ea687e5b67a231d5f7cd367c9e2f590d892a118ff6e88
```

```bash:イメージ一覧確認
$ lxc image list
+--------+--------------+--------+-------------------------------------------------+--------+----------+-------------------------------+
| ALIAS  | FINGERPRINT  | PUBLIC |                   DESCRIPTION                   |  ARCH  |   SIZE   |          UPLOAD DATE          |
+--------+--------------+--------+-------------------------------------------------+--------+----------+-------------------------------+
| ubuntu | f731970163f1 | no     | ubuntu xenial x86_64 (default) (20160413_03:49) | x86_64 | 118.85MB | Apr 15, 2016 at 12:37am (UTC) |
+--------+--------------+--------+-------------------------------------------------+--------+----------+-------------------------------+
```

### importしたイメージから起動

```
lxc launch ubuntu ubuntu
lxc exec ubuntu -- /bin/bash
```

```bash:descriptionなど編集
lxc image edit ubuntu
```

## コマンドだけ投入

```bash:
lxc exec ubuntu -- dhclient eth0

lxc exec ubuntu -- apt-get update

lxc exec ubuntu -- apt-get install -y screen

lxc exec ubuntu -- apt-get install -y xrdp
lxc exec ubuntu -- service xrdp start

lxc exec ubuntu -- sh -c 'echo "ubuntu:ubuntu22" | chpasswd'

lxc exec ubuntu -- apt-get install -y ssh
lxc exec ubuntu -- service sshd start
```

```bash:ip確認
$ lxc list
+--------+---------+----------------------+------+------------+-----------+
|  NAME  |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+--------+---------+----------------------+------+------------+-----------+
| ubuntu | RUNNING | 10.154.173.49 (eth0) |      | PERSISTENT | 0         |
+--------+---------+----------------------+------+------------+-----------+
```

```bash:ssh接続
$ ssh ubuntu@10.154.173.49
```

* パスワードubuntu22を入力し接続できることを確認