Previous Post | Top | Next Post |
TOC
引き続きchrootの強化版のようなLXCを使っての仮想環境作成を特権ユーザーが 作成する簡単なケースを深堀りします。
LXC仮想環境の停止
仮想環境のカスタマイズした起動をするためには、作成し起動した仮想環境のSTATE
を
STOPPED
(停止)に確実にします。
$ sudo lxc-stop -n sid
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
buster STOPPED 0 - - - false
sid STOPPED 0 - - - false
LXC仮想環境とのデーター共有起動
仮想環境のカスタマイズした起動時に、設定変数を指定することで、ホスト側の
/home/fish/src
を仮想環境内の/home/fish
としてアクセスできるように共有化
された仮想環境として起動できます。この仮想環境環境にユーザーアカウントに
ログインするまでの手順は以下です。
$ sudo lxc-start -n sid \
-s "lxc.mount.entry=/home/fish/src home/fish none bind 0 0"
$ sudo lxc-attach -n sid
root@sid:/# login
sid login: fish
Password:
...
fish@sid:~$
ここで仮想環境内のホームディレクトリーで見えるのは/home/fish/src
と同一デバイス上の
ファイルだけです。(再帰的マウントはされません。)
このLXC仮想環境内でパッケージビルドなどをすれば綺麗な環境ででき、さらにその結果に ホスト側から直接アクセスできます。
ここでは、lxc-attach
+login
でユーザーアカウントに入っていますが、lxc-console
を
使っても良いです.
LXC仮想環境とのデーター共有設定
立ち上げ毎に長い-s
オプションを使ってのbindマウント指定をなくするには、lxc-create
コマンドが作った基本の仮想環境の設定ファイルconfig
を編集し、設定します。
# cd /var/lib/lxc/sid
# cp config config.orig
# vim config
...
# diff -u config.orig config
--- config.orig 2021-01-29 09:34:50.520450872 +0900
+++ config 2021-01-29 00:30:53.868368439 +0900
@@ -13,6 +13,7 @@
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.rootfs.path = dir:/var/lib/lxc/sid/rootfs
+lxc.mount.entry=/home/fish/src/public home/fish/mnt none bind 0 0
# Common configuration
lxc.include = /usr/share/lxc/config/debian.common.conf
これでホスト側の/home/fish/src
を仮想環境内の/home/fish
としてアクセス
できるように共有化した仮想環境として立ち上げが、単純な以下の操作でできる
ようになります。
$ sudo lxc-start -n sid
使い捨てのLXC仮想環境
pbuilder
でコアのシステム環境のコピーをベースにした使い捨ての仮想環境をchrootで準備し
パッケージを作成するように、LXCででもコアのシステム環境のコピーをベースにした使い捨ての
仮想環境を準備してみましょう。
これには、lxc-start
に代えlxc-copy
を-e
フラグとともに使います。(聞きなれない
“ephemeral"という表現は「儚い」「束の間であっけない」と言うことです。)
lxc-copy
にはlxc-start
の-s
オプションのような機能がないので、仮想環境とのデーター
共有を実現するには、コピー元の仮想環境の設定ファイルconfig
を上記のように編集し
lxc.mount.entry
を追加設定しておく必要があります。
$ sudo lxc-stop -n sid
$ sudo lxc-info -n sid
Name: sid
State: STOPPED
$ sudo lxc-copy -n sid -N sid-dev01 -e
Created sid-dev01 as clone of sid
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
buster STOPPED 0 - - - false
sid STOPPED 0 - - - false
sid-dev01 RUNNING 0 - 10.0.3.220 - false
lxc-copy
で使い捨てのLXC仮想環境を起動をするには、実行前にコピー元の仮想環境のSTATE
を
STOPPED
(停止)に確実にする必要があります。
こうして作った使い捨てのLXC仮想環境は、lxc-attach
かlxc-console
で入り利用できます。
さらに、利用後の使い捨てのLXC仮想環境は、lxc-stop
とするだけでlxc-destroy
すること無く
消滅するので、開発ホストシステム中のゴミファイルの蓄積を防げます。
$ sudo lxc-stop sid-dev01
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
buster STOPPED 0 - - - false
sid STOPPED 0 - - - false
Previous Post | Top | Next Post |