LoginSignup
2
3

More than 3 years have passed since last update.

Raspberry Pi 3 Model B に lxc/lxd でコンテナ環境を構築した件

Last updated at Posted at 2017-10-03

やりたいこと

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 を使うというところで若干戸惑った。

今後の展望

  • ブリッジインターフェースを作ってブリッジ接続できるようにしたい。

参考

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3