Debian on LXC/LXD
仮想化プラットフォームにProxmox VEを使用しています。Proxmox VEで利用できる仮想マシンにはLXCやKVMがあります。LXCは軽量仮想化技術と呼ばれており、KVMなどの仮想化技術に比べて、CPUやメモリを無駄にせず、オーバーヘッドもありません。ゲストOSがLinuxの場合、仮想マシンにLXCを選択しましょう。
LXCについて
LXCが登場してから数年経ち、日本語の情報も多くなってきたので、LXCの詳細は省きます。
LXCのインストール
ホストにDebian(Stretch)を利用しているので、LXC - Debian Wikiを参考にして、LXCをインストールします。Wikiの方が詳しいのでコマンドだけ記載します。
apt install lxc debootstrap bridge-utils
LXDについて
LXCにはLXDと呼ばれるコンテナマネージャがあります。Debian(Stretch)では、まだパッケージ化されていません。Debian(Stretch)でLXDを利用するにはSnappyと呼ばれるパッケージ管理システムを利用します。SnappyのパッケージはSnapと呼ばれ、様々なLinuxディストリビューションで動作します。Snapパッケージを利用するにはSnapdと呼ばれるツールを使用します。
SnapdとLXC/LXDのインストール
sudo apt install snapd
sudo snap install lxd
2018年3月27日にLXC 3.0.0、4月2日にLXD 3.0.0がリリースしました。Debian(Stretch)のLXCのバージョンは2.0.7、SnapパッケージのLXC/LXDのバージョンは3.0.0になります。
$ lxc --version
3.0.0
$ lxd --version
3.0.0
LXC/LXDのコマンドは/snap/bin
にあります。ログインし直して$PATH
を更新するか、既存の$PATH
を更新します。
. /etc/profile.d/apps-bin-path.sh
初期設定
rootユーザーにならずに、初期設定を行うにはsudo
に-i
のオプションを指定します。
sudo -i lxd init
これは/etc/sudoers
のenv_reset
のオプションにより、環境変数が初期化され、secure_path
に設定したPATHに固定されるからです。sudo
に-i
のオプションを指定して回避できます。
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
環境変数の確認方法です。$PATH
に/snap/bin
があることを確認してください。
env | grep PATH
sudo env | grep PATH
sudo -i env | grep PATH
LXDグループの追加
lxd
グループにユーザーを追加します。このグループに所属するユーザーはLXDを制御することができます。
gpasswd -a $USER lxd
lxd
グループが追加されたことを確認してください。
id $USER
コンテナの作成と使用
コンテナの作成します。
lxc launch ubuntu:16.04 first
作成したコンテナを確認します。
lxc list
コンテナを停止します。
lxc stop first
コンテナを削除します。
lxc delete first
LXDのコマンドラインの詳細はLinux Containers - LXD - はじめに - コマンドラインを参考にしてください。
参考文献
- LXC - Debian Wiki
- LXD - Debian Wiki
- LXD on Debian (using snapd)
- Linux Containers
- Linux Containers - LXC - ニュース
- Linux Containers - LXD - ニュース
- Linux Containers - LXD - はじめに - コマンドライン
- sudo「コマンドが見つかりません」PATHが初期化されているときの対処法 – シングスブログ
- linux - Why are PATH variables different when running via sudo and su? - Unix & Linux Stack Exchange