Ubuntu で lxc のインストールとテスト実行
lxc コンテナでは,プロセス,ファイルシステム,IPC,ネットワークが仮想化され,ホストや他のコンテナと完全に分離された実行環境を提供します.
参考Webページ
https://help.ubuntu.com/12.04/serverguide/lxc.html
http://www.stgraber.org/2012/05/04/lxc-in-ubuntu-12-04-lts/
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を実施するには, 次のコマンドを実行します.
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
* lxc をパッケージを用いてインストール
Ubuntu でパッケージを用いてインストールする場合の手順
次のコマンドを実行します.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install debootstrap 
sudo apt -y install lxc 
sudo apt -y install lxctl 
使ってみる
コンテナの生成,複製,破棄,および生成済コンテナの一覧表示
-  コンテナの生成
-t オプションでテンプレート名を,-n オプションでコンテナ名を指定します.利用可能なテンプレートは /usr/share/lxc/templates ディレクトリに格納されています. sudo lxc-create -t ubuntu -n hoge   結果の確認(エラーメッセージが出ないことを確認します)   
-  コンテナの複製
-o オプションで複製元のコンテナ名を,-n オプションで複製先のコンテナ名を指定します. sudo lxc-create -o hoge -n hoge2   
-  コンテナの破棄
sudo lxc-destroy -n hoge   
-  生成済のコンテナの一覧表示
lxc-ls   
コンテナの起動,終了,および状態表示
-  コンテナの起動
sudo lxc-start -n hoge     数十秒ほど待つと,下のようなコンソール画面が表示されます. ユーザ名 ubuntu,パスワード ubuntu でログインが可能です.   
-  コンテナのシャットダウン
sudo lxc-shutdown -n hoge   
-  コンテナの強制終了
sudo lxc-stop -n hoge     
-  コンテナの状態(起動中かなど)とプロセスIDの確認
sudo lxc-info -n hoge   
-  リソース使用状況の確認
sudo lxc-cgroup -n hoge memory.usage_in_bytes sudo lxc-cgroup -n hoge memory.memsw.usage_in_bytes   
コンソール接続
起動中のコンテナへのコンソール接続
sudo lxc-console -n hoge
 
コンテナ側に接続された端末での操作
-  ログイン
ユーザ名 ubuntu,パスワード ubuntu でログインが可能です. 
-  コンテナの停止
sudo poweroff 
既定(デフォルト)の設定の確認
-  ホストでコマンドを実行
sudo lxc-cgroup -n hoge cpuset.cpus sudo lxc-cgroup -n hoge memory.limit_in_bytes sudo lxc-cgroup -n hoge memory.memsw.limit_in_bytes   
-  コンテナ側でコマンドを実行
sudo ifconfig -a   
以上の実行結果から,次の設定値が確認できます.
| コンテナの仮想NIC (veth) 名 (コンテナ内部から識別される名前) | eth0 | 
| コンテナで利用可能な CPU コア数 (cpuset.cpus) | 0-8 | 
| コンテナで利用可能な メモリ使用量の上限 (memory.limit_in_bytes) | 0-8 | 
ブリッジ接続
ifconfig -a 
これらは,インターネットプロバイダから指定されたアドレスであったり, ブロードバンドルータの設定値であったりします.
ホストで「sudo apt -y install bridge-utils」を実行します.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install bridge-utils
-  /etc/network/interfaces に「br0」の設定を追記
現在ホストが使用している inet アドレス(IP アドレス), ネットワーク・アドレス, ネット・マスク, ブロードキャスト・アドレス, ゲートウエイの IP アドレス (デフォルト・ルータの IP アドレス), DNS サーバの IP アドレスを そのまま記述します. ◆ 設定例 inet アドレス(IP アドレス) 192.168.111.21 ネットワーク・アドレス 192.168.111.0 ネット・マスク 255.255.255.0 ブロードキャスト・アドレス 192.168.111.255 ゲートウエイの IP アドレス (デフォルト・ルータの IP アドレス) 192.168.111.1 DNS サーバの IP アドレス 192.168.111.1 ◆ 追記の例 auto br0 iface br0 inet static address 192.168.111.21 network 192.168.111.0 netmask 255.255.255.0 broadcast 192.168.111.255 gateway 192.168.111.1 dns-nameservers 192.168.111.1 bridge_ports eth0 bridge_stp off bridge_maxwait 1 auto eth0 iface eth0 inet static address 0.0.0.0 
-  再起動
sudo /etc/init.d/networking restart   
-  「ifconfig -a」で設定を確認
br0 が追加されていることを確認します. 
-  ufw の設定
設定ファイル /etc/default/ufw の DEFAULT_FORWARD_POLICY の行を, DEFAULT_FORWARD_POLICY="ACCEPT" のように書き換え,「sudo service ufw restart」を実行します.   
- (オプション)ホストで「sudo apt -y install dnsmas」を実行
-  lxc 設定ファイルの作成
◆ lxc 設定ファイルの例 lxc.utsname = hoge2 lxc.network.type=veth lxc.network.link=br0 lxc.network.flags=up lxc.network.name=eth0 lxc.network.ipv4=192.168.111.22/24 
-  lxc 設定ファイルを用いたコンテナの作成
◆ コマンドの例 -t オプションでテンプレート名を,-n オプションでコンテナ名を,-f オプションで lxc 設定ファイルのファイル名を指定します. sudo lxc-create -t ubuntu -n hoge2 -f lxc-veth.conf   
-  使ってみる
ホストで次のように操作します. sudo lxc-start -n hoge2   数十秒待つとコンソールが開きます.外部に ssh のポート(番号22番)が開放されているため,セキュリティ対策としてパスワードを変更しておきます.   その後,ホストから次のコマンドを実行して,lxc コンテナ上の ssh サーバへの接続をテストします. ssh ubuntu@<設定したIPアドレス>   ログインが確認できたら,セキュリティ対策として lxc-shutdown で速やかにコンテナを停止し,lxc-destroy で削除するか,適切なセキュリティ設定を実施します. 
![[kaneko lab.]](https://www.kkaneko.jp/info/logo_png.png)