#acl Known:read,write,delete,revert,admin Room:read All:read #format gfm # LXDメモ 公式サイト: https://linuxcontainers.org/ja/lxd/ 日本語ドキュメント: https://lxd-ja.readthedocs.io/ja/latest/ ホストのOSはDebian/Ubuntuを想定。個人的なメモです。 ## インストール snapでlxdをインストールし、lxdグループにユーザーを追加する。 ``` sudo apt install snapd # snapが入っていない場合はインストールする sudo snap install lxd sudo gpasswd -a akky lxd ``` ## LXDの初期設定 LXDのストレージやネットワークを設定する。 ストレージは後から追加したり、パーティションやイメージファイルを拡張して容量を増やすこともできるが、面倒なのでLXDのストレージ用に専用ディスク(SSD/HDD)を用意しておくのがおすすめ。 ネットワークについてはコンテナのIPアドレスの割当を外部のDHCPサーバで行う場合はブリッジの設定が必要。特になければデフォルト(LXD内部のdnsmasqで割当)のままにする。 ``` 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]: Name of the new storage pool [default=default]: Name of the storage backend to use (dir, lvm, ceph, btrfs) [default=btrfs]: Would you like to create a new btrfs subvolume under /var/snap/lxd/common/lxd? (yes/no) [default=yes]: no Create a new BTRFS pool? (yes/no) [default=yes]: Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: yes Path to the existing block device: /dev/sdX # lXDストレージ用デバイス Would you like to connect to a MAAS server? (yes/no) [default=no]: Would you like to create a new local network bridge? (yes/no) [default=yes]: What should the new bridge be called? [default=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]: Would you like the LXD server to be available over the network? (yes/no) [default=no]: 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]: ``` ## lxcコマンド ### コンテナの作成 ``` lxc launch ubuntu:20.04 c0 # ubnutu lxc launch images:debian/10/cloud c1 # debian lxc launch images:archlinux/cloud c2 # arch linux ``` ### 配布イメージの検索 ``` lxc image list images:arch # images:で配布されているイメージを検索できる ``` ### コンテナのコマンド実行 `--`の後にコマンドを書く ``` lxc exec c0 -- echo "hello world" hello world ``` ルートユーザーでログイン ``` lxc exec c0 -- su # bashとかでもOK ``` 一般ユーザーでログイン ``` lxc exec c0 -- su - ubuntu ```