LXD3.0入門（コンテナ起動～スナップショット～バックアップ）



# これは何？
- Linux のコンテナ技術 LXD を使ってみる。
- コンテナ技術といえば Docker が有名ですが、利用する側から見ると LXD は既存の完全/準仮想化技術(virtualboxやkvmなど)に近いものです。
- 完全/準仮想化技術との比較
   - 完全/準仮想化同様、複数のゲストOSを起動できる。
   - ただし、扱えるゲストOSは Linux のみで、ゲストはホストの linux kernel を使います。
   - 完全/準仮想化と違い、ハードウェアをシミュレーションしないので、動きは速いです。
- ここに書いたこと
   - 1) VagrantでUbuntu18.04(bionic)を起動
   - 2) LXDの初期設定
   - 3) イメージのダウンロード＆コンテナ起動
      - コンテナの停止/一時停止も
   - 4) コンテナのスナップショットを撮り、tar.gz へバックアップ
      - スナップショットのリストアも
   - 5) tar.gz バックアップからコンテナを復元

# LXD のコマンドフロー

![lxd-command-flow1.png](https://qiita-image-store.s3.amazonaws.com/0/275337/69954bb7-f589-f7c4-7241-ffd02ead662a.png)
![lxd-command-flow2.png](https://qiita-image-store.s3.amazonaws.com/0/275337/3df1b5fc-2d4c-5ec9-62c0-64ad33025522.png)


# 今回使った環境

- LXD は Ubuntu の Canonical が推している Linuxのコンテナ技術なので、ここでは、最近(2018/04)リリースされた長期サポート版、Ubuntu 18.04 LTS "Bionic Beaver" を使うことにします。（LXD は Ubuntu 以外のディストリビューションでも使えます）
- といっても、Ubuntuマシンが手元に無いので、Vagrant で ゲストOS として Ubuntu を立て、そこから LXD を使います。
- 構成はこんな感じ。

```
Windows10
→Vagrant
　→VirtualBox
　　→Ubuntu 18.04 LTS “Bionic Beaver”
　　　→LXD 3.0.1
　　　　→ストレージプール
　　　　　→イメージ
　　　　　→コンテナ(RUNNING or FROZEN or STOP)
　　　　　　→スナップショット
```


# 1) VagrantでUbuntu18.04(bionic)を起動

- Windows10へのVagrantインストール手順は省きます。

## Vagrantファイルを書く
- BOXイメージは、Ubuntu公式の "ubuntu/bonic64" を使います。

```ruby:Vagrant
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  config.vm.hostname = "ubuntu-bionic"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vb|
    vb.name = "ubuntu-bionic"
    vb.gui = true
    vb.memory = "2048"
    vb.customize [
      "modifyvm", :id,
      "--hwvirtex", "on",
      "--nestedpaging", "on",
      "--largepages", "on",
      "--pae", "on",
      "--paravirtprovider", "kvm",
#      "--vram", "256",                  # ビデオメモリ確保（フルスクリーンモードにするため）
#      "--clipboard", "bidirectional",   # クリップボードの共有
#      "--draganddrop", "bidirectional", # ドラッグアンドドロップ可能に
      "--cpus", "2",   # CPUは2つ
      "--ioapic", "on" # I/O APICを有効化
    ]
  end
end
```

## ゲストOS Ubuntu 起動

```
C:\hoge>vagrant up
```

## ゲストOS Ubuntu へ ssh でログイン
```shell-session
C:\hoge>vagrant ssh
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Aug 26 02:46:09 UTC 2018

  System load:  0.0               Processes:             95
  Usage of /:   13.6% of 9.63GB   Users logged in:       0
  Memory usage: 8%                IP address for enp0s3: 10.0.2.15
  Swap usage:   0%                IP address for enp0s8: 192.168.33.10


  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

65 packages can be updated.
26 updates are security updates.

vagrant@ubuntu-bionic:~$
```

# 2) LXD の初期設定

## LXD バージョン確認

- 念のため最新にしておきます。

```shell-session
vagrant@ubuntu-bionic:~$ sudo apt update
vagrant@ubuntu-bionic:~$ sudo apt upgrade
```

- 今回使った Vagrant の BOX イメージの場合、LXDはインストール済みなのでバージョンだけ確認しておきます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc --version
3.0.1
vagrant@ubuntu-bionic:~$ lxd --version
3.0.1
vagrant@ubuntu-bionic:~$ dpkg -l | egrep "lxd|lxc"
ii  liblxc-common                   3.0.1-0ubuntu1~18.04.2            amd64        Linux Containers userspace tools (common tools)
ii  liblxc1                         3.0.1-0ubuntu1~18.04.2            amd64        Linux Containers userspace tools (library)
ii  lxcfs                           3.0.1-0ubuntu2~18.04.1            amd64        FUSE based filesystem for LXC
ii  lxd                             3.0.1-0ubuntu1~18.04.1            amd64        Container hypervisor based on LXC - daemon
ii  lxd-client                      3.0.1-0ubuntu1~18.04.1            amd64        Container hypervisor based on LXC - client
```

- バージョンは 3.0.1 でした。
- メモ。lxc と lxd コマンドを使うので、`apt install lxc` しないとダメだと思ってた。けど実際は、lxc コマンドは lxd-client パッケージ に含まれていた。つまり、lxc パッケージは無くても LXD 使えました。

- ストレージバックエンドに btrfs を使うので、これのバージョンも確認しておきます。

```shell-session
vagrant@ubuntu-bionic:~$ dpkg -l | grep btrfs
ii  btrfs-progs                     4.15.1-1build1                    amd64        Checksumming Copy on Write Filesystem utilities
ii  btrfs-tools                     4.15.1-1build1                    amd64        transitional dummy package
```


## lxc コマンドを、ユーザ vagrant から使えるように設定

- `sudo lxc` としなくても使えるように設定します。

```shell-session
## id 確認
vagrant@ubuntu-bionic:~$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)

## lxd グループにも所属させる
vagrant@ubuntu-bionic:~$ sudo gpasswd -a vagrant lxd
Adding user vagrant to group lxd

## lxd グループに vagrant ユーザが追加されていることを確認
vagrant@ubuntu-bionic:~$ getent group lxd
lxd:x:108:ubuntu,vagrant

## 設定を有効にするため、ログインしなおす
vagrant@ubuntu-bionic:~$ exit
```

- 再ログイン後

```shell-session
## id 確認
vagrant@ubuntu-bionic:~$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),108(lxd)

## lxd グループに属しているのでOK
```

## ストレージプール、ネットワークなどの各種設定 ～ lxd init

- 全てデフォルトでもいいですが、以下変更しました。
 - ストレージプールのサイズ 15GB を 5GB へ
 - IPv6 を auto から none へ

```shell-session
vagrant@ubuntu-bionic:~$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:            # 別マシンと連携しない
Do you want to configure a new storage pool? (yes/no) [default=yes]:    # storage pool(コンテナの実体の保存先)を新しく作る
Name of the new storage pool [default=default]:                         # 名称 は "default"
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]:   # strage backend は btrfs を使う(ホストのファイルシステムは何でもいい)
Create a new BTRFS pool? (yes/no) [default=yes]:
Would you like to use an existing block device? (yes/no) [default=no]:  # ブロックデバイスは使わない(＝ループバックイメージファイル使用)
Size in GB of the new loop device (1GB minimum) [default=15GB]: 5
Would you like to connect to a MAAS server? (yes/no) [default=no]:      # MASS(ubuntu のデプロイツール？)は使わない
Would you like to create a new local network bridge? (yes/no) [default=yes]: # LXD用に local network bridge を作る
What should the new bridge be called? [default=lxdbr0]:                      # 名前は "lxdbr0"
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:  # 外部マシンからのLXDへの接続を利用禁止
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] # 取得したコンテナイメージを自動アップデートする
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
```

# 3) イメージのダウンロード＆コンテナ起動

- コンテナを起動するには、リモートが公開しているイメージをダウンロードし、これからコンテナを作り起動します。

## リモートの一覧を確認

- まず、初期登録されている リモートの一覧 を確認しておきます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc remote list
If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:16.04

+-----------------+------------------------------------------+---------------+-----------+--------+--------+
|      NAME       |                   URL                    |   PROTOCOL    | AUTH TYPE | PUBLIC | STATIC |
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
| images          | https://images.linuxcontainers.org       | simplestreams |           | YES    | NO     |
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
| local (default) | unix://                                  | lxd           | tls       | NO     | YES    |
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams |           | YES    | YES    |
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams |           | YES    | YES    |
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
```

- 今回は、**images** リモート からイメージをダウンロードすることにします。


## リモートが公開しているイメージ一覧を確認

- **images** リモートで公開されているイメージの一覧を確認します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image alias list images: | head
+---------------------------------+--------------+-------------+
|              ALIAS              | FINGERPRINT  | DESCRIPTION |
+---------------------------------+--------------+-------------+
| alpine/3.4                      | cc8b58012122 |             |
+---------------------------------+--------------+-------------+
| alpine/3.4/amd64                | cc8b58012122 |             |
+---------------------------------+--------------+-------------+
| alpine/3.4/armhf                | 7813a1299900 |             |
+---------------------------------+--------------+-------------+
| alpine/3.4/default              | cc8b58012122 |             |
```

- より詳細を見たいなら `lxc image list images:` が使えますが、ここでは省略します。 

- 今回は centos7 のイメージを使うことにします。
- イメージを探します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image alias list images: | grep centos
| centos/6                        | c25e874b12b9 |             |
| centos/6/amd64                  | c25e874b12b9 |             |
| centos/6/default                | c25e874b12b9 |             |
| centos/6/default/amd64          | c25e874b12b9 |             |
| centos/6/default/i386           | 6fc5c17866f2 |             |
| centos/6/i386                   | 6fc5c17866f2 |             |
| centos/7                        | 5206a7bf4f53 |             |
| centos/7/amd64                  | 5206a7bf4f53 |             |
| centos/7/default                | 5206a7bf4f53 |             |
| centos/7/default/amd64          | 5206a7bf4f53 |             |
```

- **centos/7** イメージを使うことにします。


## イメージのダウンロード＆コンテナ起動 ～ lxc launch

- **centos/7** イメージから、コンテナを起動します。
- コンテナ名は **c01** で作ります。

```shell-session
vagrant@ubuntu-bionic:~$ lxc launch images:centos/7 c01
Creating c01
Starting c01
```

- これで、コンテナ起動しますが、実は起動の前に、リモートからダウンロードしたイメージを、ローカルに保存します。これを確認しておきます。
- 次回からは、このローカルのイメージを使ってコンテナが作られます。（次回からコンテナ作成が速くなります）

```shell-session
vagrant@ubuntu-bionic:~$ lxc image list
+-------+--------------+--------+---------------------------------+--------+---------+------------------------------+
| ALIAS | FINGERPRINT  | PUBLIC |           DESCRIPTION           |  ARCH  |  SIZE   |         UPLOAD DATE          |
+-------+--------------+--------+---------------------------------+--------+---------+------------------------------+
|       | 5206a7bf4f53 | no     | Centos 7 amd64 (20180826_02:16) | x86_64 | 83.45MB | Aug 26, 2018 at 3:39am (UTC) |
+-------+--------------+--------+---------------------------------+--------+---------+------------------------------+
```
- ローカルに保存されたイメージがありました。（リモートとローカルイメージの FINGERPRINT が同じです）


## コンテナを確認 ～ lxc list

- 先ほど、作って起動した **c01** コンテナを確認します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc list
+------+---------+-----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+------+------------+-----------+
| c01  | RUNNING | 10.251.221.100 (eth0) |      | PERSISTENT | 0         |
+------+---------+-----------------------+------+------------+-----------+
```

- **c01** が RUNNING になってます。

## コンテナ内でコマンド実行 ～ lxc exec

- **c01** コンテナ内で bash を起動してみます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc exec c01 -- bash
[root@c01 ~]# id
uid=0(root) gid=0(root) groups=0(root)
```
- 起動できました。なお、`lxc exec` で実行したコマンドは、root権限のようです。


## コンテナを 停止、一時停止 ～ lxc stop / lxc pause

- コンテナを「停止 → 開始 → 一時停止 → 再開」してみます。
- コンテナの開始/停止は、サーバの電源ON/OFFに対応しており、Linux の init あるいは systemd の開始/終了シーケンスを実行することを意味します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc list
+------+---------+-----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+------+------------+-----------+
| c01  | RUNNING | 10.251.221.100 (eth0) |      | PERSISTENT | 0         |
+------+---------+-----------------------+------+------------+-----------+

## RUNNING → 停止
vagrant@ubuntu-bionic:~$ lxc stop c01
vagrant@ubuntu-bionic:~$ lxc list
+------+---------+------+------+------------+-----------+
| NAME |  STATE  | IPV4 | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+------+------+------------+-----------+
| c01  | STOPPED |      |      | PERSISTENT | 0         |
+------+---------+------+------+------------+-----------+
vagrant@ubuntu-bionic:~$

## STOPPED → 開始
vagrant@ubuntu-bionic:~$ lxc start c01
vagrant@ubuntu-bionic:~$ lxc list
+------+---------+-----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+------+------------+-----------+
| c01  | RUNNING | 10.251.221.100 (eth0) |      | PERSISTENT | 0         |
+------+---------+-----------------------+------+------------+-----------+

## RUNNING → 一時停止
vagrant@ubuntu-bionic:~$ lxc pause c01
vagrant@ubuntu-bionic:~$ lxc list
+------+--------+-----------------------+------+------------+-----------+
| NAME | STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+------+--------+-----------------------+------+------------+-----------+
| c01  | FROZEN | 10.251.221.100 (eth0) |      | PERSISTENT | 0         |
+------+--------+-----------------------+------+------------+-----------+

## FROZEN → 再開
vagrant@ubuntu-bionic:~$ lxc start c01
vagrant@ubuntu-bionic:~$ lxc list
+------+---------+-----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+------+------------+-----------+
| c01  | RUNNING | 10.251.221.100 (eth0) |      | PERSISTENT | 0         |
+------+---------+-----------------------+------+------------+-----------+```
```

# 4) コンテナのスナップショットを撮り、tar.gz へバックアップ

- 手順は「コンテナ → スナップショット → イメージ → tar.gz」です。
 - 実は、スナップショットは作らず、コンテナから直接イメージ化もできるので、1ステップ減らすこともできます。
- 途中、スナップショットのリストアもやってみます。

## コンテナのスナップショットを撮る ～ lxc snapshot

- **c01** コンテナのスナップショットを撮ります。
- スナップショットの名前は、**c01-snap1** とします。

```shell-session
vagrant@ubuntu-bionic:~$ lxc snapshot c01 c01-snap1
```

- スナップショットが取れたことを確認します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc list
+------+---------+-----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+------+------------+-----------+
| c01  | RUNNING | 10.251.221.100 (eth0) |      | PERSISTENT | 1         |
+------+---------+-----------------------+------+------------+-----------+
```

- **SNAPSHOTS** が カウントアップされ、**1** になっています。
- さらに、**c01** コンテナの詳細を見てみます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc info c01
Name: c01
Remote: unix://
Architecture: x86_64
Created: 2018/08/26 03:39 UTC
Status: Running
Type: persistent
Profiles: default
Pid: 8428
Ips:
  eth0: inet    10.251.221.100  vethJKJKAD
  eth0: inet6   fe80::216:3eff:febe:fb9a        vethJKJKAD
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 11
  CPU usage:
    CPU usage (in seconds): 0
  Memory usage:
    Memory (current): 19.24MB
    Memory (peak): 21.20MB
  Network usage:
    eth0:
      Bytes received: 1.47kB
      Bytes sent: 1.30kB
      Packets received: 16
      Packets sent: 15
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0
Snapshots:
  c01-snap1 (taken at 2018/08/26 03:56 UTC) (stateless)
```

- **c01-snap1** スナップショットを確認できました。


## スナップショットをリストア ～ lxc restore

- では、作ったばかりの **c01-snap1** スナップショットをリストアしてみます。
- その前に、スナップショットのリストア前後が分かるように、まず、**/tmp/abcd** ファイルを作っておきます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc exec c01 -- bash
[root@c01 ~]# touch /tmp/abcd
[root@c01 ~]# ls -al /tmp/abcd
-rw-r--r-- 1 root root 0 Aug 26 04:02 /tmp/abcd
[root@c01 ~]# exit
exit
vagrant@ubuntu-bionic:~$
```

- **c01-snap1** スナップショットをリストアすると、このファイルの作成前に戻るはずです。
- では、リストアしてみましょう。

```shell-session
vagrant@ubuntu-bionic:~$ lxc restore c01 c01-snap1
```

- 戻っているか確認します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc exec c01 -- bash
[root@c01 ~]# ls -al /tmp
total 0
drwxrwxrwt 1 root root  94 Aug 26 04:04 .
dr-xr-xr-x 1 root root 146 Aug 26 02:23 ..
drwxrwxrwt 1 root root   0 Aug 26 02:23 .ICE-unix
drwxrwxrwt 1 root root   0 Aug 26 02:23 .Test-unix
drwxrwxrwt 1 root root   0 Aug 26 02:23 .X11-unix
drwxrwxrwt 1 root root   0 Aug 26 02:23 .XIM-unix
drwxrwxrwt 1 root root   0 Aug 26 02:23 .font-unix
[root@c01 ~]# exit
exit
vagrant@ubuntu-bionic:~$
```

- **/tmp/abcd** が無くなりました。ちゃんと戻りましたね。

## スナップショットからイメージを作る ～ lxc publish

- **c01-snap1** スナップショットからイメージを作成します。
- イメージ名は、**c01-snap1-img** で作ります。

```shell-session
vagrant@ubuntu-bionic:~$ lxc publish c01/c01-snap1 --alias c01-snap1-img
Container published with fingerprint: 4410ad7c4ad6f1fe7ac411032c7a73418e8ff2cb620c08cb714df1dca934233e
```

- **c01-snap1-img** ができたか確認します。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image list
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
|     ALIAS     | FINGERPRINT  | PUBLIC |           DESCRIPTION           |  ARCH  |   SIZE   |         UPLOAD DATE          |
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
| c01-snap1-img | 4410ad7c4ad6 | no     |                                 | x86_64 | 124.82MB | Aug 26, 2018 at 4:11am (UTC) |
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
|               | 5206a7bf4f53 | no     | Centos 7 amd64 (20180826_02:16) | x86_64 | 83.45MB  | Aug 26, 2018 at 3:39am (UTC) |
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
```

- できましたね。


## イメージからtar.gzを作る ～ lxc export

- 先ほどの **c01-snap1-img** イメージ を tar.gz にしてみます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image export c01-snap1-img .
Image exported successfully!
```

- tar.gz ができたか確認します。

```shell-session
vagrant@ubuntu-bionic:~$ ls -l
total 127820
-rw-rw-r-- 1 vagrant vagrant 130886826 Aug 26 04:14 4410ad7c4ad6f1fe7ac411032c7a73418e8ff2cb620c08cb714df1dca934233e.tar.gz
```

- できました。


# 5) tar.gz バックアップからコンテナを復元

- 手順は「tar.gz → イメージ → コンテナ」です。

## tar.gz から イメージ を復元 ～ lxc iage import

- 先に作っておいた tar.gz から イメージ を作ります。
- イメージ名は、**targz-img** で作ります。

```shell-session
vagrant@ubuntu-bionic:~$ ls
4410ad7c4ad6f1fe7ac411032c7a73418e8ff2cb620c08cb714df1dca934233e.tar.gz
vagrant@ubuntu-bionic:~$ lxc image import 4410ad7c4ad6f1fe7ac411032c7a73418e8ff2cb620c08cb714df1dca934233e.tar.gz --alias targz-img
Error: Image with same fingerprint already exists
```

- 同じイメージから作った tar.gz なので、already exists になりました。
- もう一度イメージ一覧を確認して、どうするか考えてみます。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image list
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
|     ALIAS     | FINGERPRINT  | PUBLIC |           DESCRIPTION           |  ARCH  |   SIZE   |         UPLOAD DATE          |
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
| c01-snap1-img | 4410ad7c4ad6 | no     |                                 | x86_64 | 124.82MB | Aug 26, 2018 at 4:11am (UTC) |
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
|               | 5206a7bf4f53 | no     | Centos 7 amd64 (20180826_02:16) | x86_64 | 83.45MB  | Aug 26, 2018 at 3:39am (UTC) |
+---------------+--------------+--------+---------------------------------+--------+----------+------------------------------+
```

- 今回は import のやり方を確認したいだけなので、**c01-snap1-img** イメージを無理やり消してから再チャレンジします。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image delete c01-snap1-img
vagrant@ubuntu-bionic:~$ lxc image list
+-------+--------------+--------+---------------------------------+--------+---------+------------------------------+
| ALIAS | FINGERPRINT  | PUBLIC |           DESCRIPTION           |  ARCH  |  SIZE   |         UPLOAD DATE          |
+-------+--------------+--------+---------------------------------+--------+---------+------------------------------+
|       | 5206a7bf4f53 | no     | Centos 7 amd64 (20180826_02:16) | x86_64 | 83.45MB | Aug 26, 2018 at 3:39am (UTC) |
+-------+--------------+--------+---------------------------------+--------+---------+------------------------------+
```

- 削除できました。改めて、tar.gz を import して イメージ を作ります。

```shell-session
vagrant@ubuntu-bionic:~$ lxc image import 4410ad7c4ad6f1fe7ac411032c7a73418e8ff2cb620c08cb714df1dca934233e.tar.gz --alias targz-img
Image imported with fingerprint: 4410ad7c4ad6f1fe7ac411032c7a73418e8ff2cb620c08cb714df1dca934233e
vagrant@ubuntu-bionic:~$ lxc image list
+-----------+--------------+--------+--------------------------------------------+--------+----------+------------------------------+
|   ALIAS   | FINGERPRINT  | PUBLIC |                DESCRIPTION                 |  ARCH  |   SIZE   |         UPLOAD DATE          |
+-----------+--------------+--------+--------------------------------------------+--------+----------+------------------------------+
| targz-img | 4410ad7c4ad6 | no     | centos 7 x86_64 (default) (20180826_02:16) | x86_64 | 124.82MB | Aug 26, 2018 at 5:59am (UTC) |
+-----------+--------------+--------+--------------------------------------------+--------+----------+------------------------------+
|           | 5206a7bf4f53 | no     | Centos 7 amd64 (20180826_02:16)            | x86_64 | 83.45MB  | Aug 26, 2018 at 3:39am (UTC) |
+-----------+--------------+--------+--------------------------------------------+--------+----------+------------------------------+
```

- イメージができました。
- では、**targz-img** イメージから、コンテナを作ります。
- コンテナ名は、**c02-targz** で作ります。

```shell-session
vagrant@ubuntu-bionic:~$ lxc launch targz-img c02-targz
Creating c02-targz
Starting c02-targz
vagrant@ubuntu-bionic:~$ lxc list
+-----------+---------+-----------------------+------+------------+-----------+
|   NAME    |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+-----------+---------+-----------------------+------+------------+-----------+
| c01       | RUNNING | 10.251.221.100 (eth0) |      | PERSISTENT | 1         |
+-----------+---------+-----------------------+------+------------+-----------+
| c02-targz | RUNNING |                       |      | PERSISTENT | 0         |
+-----------+---------+-----------------------+------+------------+-----------+
```

- 無事、コンテナ起動できました。

# 参考サイト

第521回　入門システムコンテナマネージャーLXD 3.0：Ubuntu Weekly Recipe｜gihyo.jp … 技術評論社
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0521?page=2