lxc コンテナでは、プロセス、ファイルシステム、IPC、ネットワークアドレスが仮想化され、他の lxc コンテナやホストと隔離される.
参考Webページ
https://help.ubuntu.com/12.04/serverguide/lxc.html
http://www.stgraber.org/2012/05/04/lxc-in-ubuntu-12-04-lts/
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行.
Ubuntu のインストールは別ページ »で説明
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
次のコマンドを実行.
sudo apt -y 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
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 -y update sudo apt -y install bridge-utils
現在ホストが使用している inet アドレス(IP アドレス)、 ネットワーク・アドレス、 ネット・マスク、 ブロードキャスト・アドレス、 ゲートウエイの 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
br0 が追加されたことを確認する
設定ファイル /etc/default/ufw の DEFAULT_FORWARD_POLICY の行を、
DEFAULT_FORWARD_POLICY="ACCEPT"
のように書き換えて、「sudo service ufw restart」を実行
◆ 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
◆ コマンドの例
-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 で消去してしまうか、セキュリティ設定をしっかりと行う。