Ubuntu 20.04 でLXD 4.0をインストールする
はじめに
Ubuntu 20.04 に LXD
をインストールするためのメモ。
【注意点】 LXCのコンテナは、ホスト機と同一のネットワークに属するようにしている。
環境
$ hostnamectl status
Static hostname: ---
Icon name: computer-vm
Chassis: vm
Machine ID: ---
Boot ID: ---
Virtualization: microsoft
Operating System: Ubuntu 20.04.4 LTS
Kernel: Linux 5.4.0-110-generic
Architecture: x86-64
インストール
001. パッケージリストとパッケージを更新
$ sudo apt update && sudo apt list --upgradable && sudo apt upgrade -y
002. LXDインストール
snap
を利用して、LXDをインストールする。
$ sudo snap install lxd --channel=4.0/stable
003. LXD/LXCのバージョンを確認
lxd --version
/lxc --version
コマンドを実行する。
$ lxd --version
4.0.9
$ lxc --version
4.0.9
004. ブリッジインターフェースを作成
「/etc/netplan/99_config.yaml」にブリッジインターフェースの以下設定を追加する。
$ sudo vim /etc/netplan/99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [eth0]
dhcp4: false
dhcp6: false
addresses: [192.168.1.48/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
parameters:
forward-delay: 0
stp: false
optional: true
005. ホスト機のリソース制限編集
以下設定を「limits.conf」の末尾に追記する。
$ sudo vim /etc/security/limits.conf
~~~
* soft nofile 1048576
* hard nofile 1048576
root soft nofile 1048576
root hard nofile 1048576
* soft memlock unlimited
* hard memlock unlimited
以下設定を「sysctl.conf」の末尾に追記する。
$ sudo vim /etc/sysctl.conf
~~~
fs.inotify.max_queued_events = 1048576
fs.inotify.max_user_instances = 1048576
fs.inotify.max_user_watches = 1048576
vm.max_map_count = 262144
006. 再起動
全ての設定を有効化するために、サーバを再起動する。
$ sudo reboot
007. LXDセットアップ
lxd init
コマンドを実行し、セットアップする。
基本はデフォルト値で設定するがブリッジネットワークのみ、004で作成したインターフェイスを入力する。
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: no
Do you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: lxd-storage
Name of the storage backend to use (btrfs, dir, lvm, zfs, ceph) [default=zfs]: zfs
Create a new ZFS pool? (yes/no) [default=yes]: yes
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: no
Size in GB of the new loop device (1GB minimum) [default=12GB]: 12GB
Would you like to connect to a MAAS server? (yes/no) [default=no]: no
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like the LXD server to be available over the network? (yes/no) [default=no]: no
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] yes
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: no
操作方法
001. リモートのコンテナイメージを検索
lxc image list images: ディストリビューション名 バージョン アーキテクチャ
コマンドを実行する。
$ lxc image list images: ubuntu 20.04 amd64
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
| ubuntu/focal (7 more) | 60a3405cf361 | yes | Ubuntu focal amd64 (20220514_07:42) | x86_64 | CONTAINER | 110.09MB | May 14, 2022 at 12:00am (UTC) |
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
| ubuntu/focal (7 more) | a29dfcbeae12 | yes | Ubuntu focal amd64 (20220514_07:42) | x86_64 | VIRTUAL-MACHINE | 229.88MB | May 14, 2022 at 12:00am (UTC) |
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
| ubuntu/focal/cloud (3 more) | 1c573de33373 | yes | Ubuntu focal amd64 (20220514_07:42) | x86_64 | CONTAINER | 121.03MB | May 14, 2022 at 12:00am (UTC) |
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
| ubuntu/focal/cloud (3 more) | a0217cf5cccd | yes | Ubuntu focal amd64 (20220514_07:42) | x86_64 | VIRTUAL-MACHINE | 246.50MB | May 14, 2022 at 12:00am (UTC) |
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
| ubuntu/focal/desktop (3 more) | 3f99c1607cba | yes | Ubuntu focal amd64 (20220514_08:49) | x86_64 | VIRTUAL-MACHINE | 989.20MB | May 14, 2022 at 12:00am (UTC) |
+-------------------------------+--------------+--------+-------------------------------------+--------------+-----------------+----------+-------------------------------+
002. リモートのコンテナイメージを取得
lxc image list
コマンドを実行する。
$ lxc image list
To start your first container, try: lxc launch ubuntu:20.04
Or for a virtual machine: lxc launch ubuntu:20.04 --vm
+-------+-------------+--------+-------------+------+------+-------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+-------+-------------+--------+-------------+------+------+-------------+
003. ローカルのコンテナイメージ一覧を取得
lxc image list
コマンドを実行する。
$ lxc image list
To start your first container, try: lxc launch ubuntu:20.04
Or for a virtual machine: lxc launch ubuntu:20.04 --vm
+-------+-------------+--------+-------------+------+------+-------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+-------+-------------+--------+-------------+------+------+-------------+
004. コンテナ作成
lxc launch images:イメージ名 コンテナ名
を実行する。
以下では、Ubuntu 20.04 64bitのイメージを指定している。
$ lxc launch images:ubuntu/focal/amd64 container-01
Creating container-01
Starting container-01
【注意点】本作業環境では、仮想化にHyper-Vを利用している。コンテナ作成時にDHCPでIPアドレスが取得できない場合は、Hyper-Vマネージャーから該当VMのネットワークアダプターで「高度な機能」→「MACアドレスのスプーフィングを有効にする」にチェックする必要がある。
005. コンテナ一覧を取得
lxc list
を実行する。
$ lxc list
+--------------+---------+----------------------+---------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------------+---------+----------------------+---------------------------------------------+-----------+-----------+
| container-01 | RUNNING | 192.168.1.145 (eth0) | 2001:ce8:100:f036:216:3eff:fe79:9355 (eth0) | CONTAINER | 0 |
+--------------+---------+----------------------+---------------------------------------------+-----------+-----------+
006. コンテナ停止
lxc stop コンテナ名
で該当コンテナを停止する。
$ lxc stop container-01
lxc list
コマンドで、コンテナ停止を確認
$ lxc list
+--------------+---------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------------+---------+------+------+-----------+-----------+
| container-01 | STOPPED | | | CONTAINER | 0 |
+--------------+---------+------+------+-----------+-----------+
007. コンテナ起動
lxc start コンテナ名
で該当コンテナを起動
$ lxc start container-01
008. コンテナにログイン
lxc exec コンテナ名 bash
コマンドを実行
$ lxc exec container-01 bash
root@container-01:~#
009. コンテナ削除
lxc delete コンテナ名
コマンドを実行
$ lxc delete container-01
010. コンテナイメージの作成
$ lxc publish container-01 --alias original-image
Instance published with fingerprint: b11797522a8742b3b0caa587db0710441d56d201face9d105f7e5e9a89214234
作成したコンテナイメージを確認
$ lxc image list
+----------------+--------------+--------+-------------------------------------+--------------+-----------+----------+------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+----------------+--------------+--------+-------------------------------------+--------------+-----------+----------+------------------------------+
| original-image | b11797522a87 | no | Ubuntu focal amd64 (20220514_07:42) | x86_64 | CONTAINER | 146.73MB | May 14, 2022 at 3:25pm (UTC) |
+----------------+--------------+--------+-------------------------------------+--------------+-----------+----------+------------------------------+
| | 60a3405cf361 | no | Ubuntu focal amd64 (20220514_07:42) | x86_64 | CONTAINER | 110.09MB | May 14, 2022 at 3:14pm (UTC) |
+----------------+--------------+--------+-------------------------------------+--------------+-----------+----------+------------------------------+
参考サイト
About
関西在住のエンジニア
言語: Ruby・Go・PHP
フレームワーク: RoR・Gin
趣味: 自作PC