やりたいこと
RaspberryPi3にLXCとLXDをインストールしてコンテナ環境を実現する。
コンテナ環境には、linebotサーバー、ファイルサーバーを構築する。
(2019/5/20)
「Raspberry Pi 3 Model B+ に lxc/lxd でコンテナ環境を構築した件」を書きました
環境
- Raspberry Pi 3 MODEL B
- 2017-09-07-raspbian-stretch-lite
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.1 (stretch)
Release: 9.1
Codename: stretch
pi@raspberrypi:~ $
やったこと
apt-get で lxc をインストール
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo apt-get install lxc -y
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base libfuse2 liblxc1 libpam-cgfs lxcfs python3-lxc uidmap
提案パッケージ:
dbus-user-session pinentry-gnome3 tor fuse apparmor btrfs-tools lvm2
以下のパッケージが新たにインストールされます:
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base libfuse2 liblxc1 libpam-cgfs lxc lxcfs python3-lxc
uidmap
アップグレード: 0 個、新規インストール: 12 個、削除: 0 個、保留: 0 個。
2,094 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,838 kB のディスク容量が消費されます。
:
:
pi@raspberrypi:~ $
apt-get で パッケージ管理ツール snapd をインストール
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo apt-get install snapd -y
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
apparmor libapparmor-perl liblzo2-2 snap-confine squashfs-tools ubuntu-core-launcher
提案パッケージ:
apparmor-profiles apparmor-profiles-extra apparmor-utils
以下のパッケージが新たにインストールされます:
apparmor libapparmor-perl liblzo2-2 snap-confine snapd squashfs-tools ubuntu-core-launcher
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
5,002 kB のアーカイブを取得する必要があります。
この操作後に追加で 27.3 MB のディスク容量が消費されます。
:
:
pi@raspberrypi:~ $
snap で lxd をインストール
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo snap search lxd
Name Version Developer Notes Summary
lxd-demo-server 0+git.18a13d5 stgraber - Online software demo sessions using LXD
lxd 2.18 canonical - System container manager and API
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo apt-get install snapd -y
2017-10-03T23:26:44+09:00 INFO snap "core" has bad plugs or slots: core-support-plug (unknown interface)
lxd 2.18 from 'canonical' installed
pi@raspberrypi:~ $
確認
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc --version
2.18
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxd --version
2.18
pi@raspberrypi:~ $
コンテナ操作
lxcの初期化
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc init
pi@raspberrypi:~ $
ダウンロード可能なイメージリスト確認
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc image list images:
+---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
| alpine/3.3 (3 more) | 5ce4c80edcf3 | yes | Alpine 3.3 armhf (20170103_17:50) | armv7l | 1.53MB | Jan 3, 2017 at 12:00am (UTC) |
+---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
| alpine/3.3/amd64 (1 more) | 512ed34baf07 | yes | Alpine 3.3 amd64 (20171003_17:50) | x86_64 | 2.00MB | Oct 3, 2017 at 12:00am (UTC) |
+---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
:
:
:
pi@raspberrypi:~ $
コンテナ起動
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc launch images:ubuntu/xenial ubuntu01
Creating ubuntu01
Starting ubuntu01
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc list
+----------+---------+---------------------+-----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+----------+---------+---------------------+-----------------------------------------------+------------+-----------+
| ubuntu01 | RUNNING | 10.55.39.107 (eth0) | fd42:5714:c6c6:e243:216:3eff:fed7:696d (eth0) | PERSISTENT | 0 |
+----------+---------+---------------------+-----------------------------------------------+------------+-----------+
pi@raspberrypi:~ $
pi@raspberrypi:~ $ ping -c 3 10.55.39.107
PING 10.55.39.107 (10.55.39.107) 56(84) bytes of data.
64 bytes from 10.55.39.107: icmp_seq=1 ttl=64 time=0.256 ms
64 bytes from 10.55.39.107: icmp_seq=2 ttl=64 time=0.160 ms
64 bytes from 10.55.39.107: icmp_seq=3 ttl=64 time=0.104 ms
--- 10.55.39.107 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.104/0.173/0.256/0.063 ms
pi@hty-sv01:~ $
pi@hty-sv01:~ $
アーキテクチャが違うと起動しません...
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc launch images:centos/7/amd64 centos7-01
Creating centos7-01
error: Failed container creation:
- https://images.linuxcontainers.org: Requested architecture isn't supported by this host
pi@raspberrypi:~ $
コンテナにアタッチ/デタッチする
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lxc exec ubuntu01 /bin/bash ← アタッチ
root@ubuntu01:~#
root@ubuntu01:~#
root@ubuntu01:~#
root@ubuntu01:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
11: eth0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:d7:69:6d brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.55.39.107/24 brd 10.55.39.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fd42:5714:c6c6:e243:216:3eff:fed7:696d/64 scope global mngtmpaddr dynamic
valid_lft 3289sec preferred_lft 3289sec
inet6 fe80::216:3eff:fed7:696d/64 scope link
valid_lft forever preferred_lft forever
root@ubuntu01:~#
root@ubuntu01:~# exit ← デタッチ
exit
pi@raspberrypi:~ $
感想
- パッケージインストールで spand を使うというところで若干戸惑った。
今後の展望
- ブリッジインターフェースを作ってブリッジ接続できるようにしたい。