LXC

提供: セキュリティ
2014年5月4日 (日) 18:57時点におけるDaemon (トーク | 投稿記録)による版

移動: 案内検索
スポンサーリンク

LXC (Linux Containers)とは、1つのコントロールホストの上で、複数の隔離されたLinuxシステム(コンテナ)を実行する OSレベルの仮想化です。LXCは、個別のプロセス空間とネットワーク空間を持ちます。FreeBSDにおけるjailLinux版として捉えられます。 LXCは、個別のプロセス空間とネットワーク空間を持ちます。FreeBSDにおけるjailLinux版として捉えられます。

読み方

LXC
えるえっくすしー
Linux Containers
りなっくす こんていなーず

概要

LXCは、Linuxカーネル 2.6.29 から利用できます。

Linuxカーネル 3.0.0 では、コンテナに対するセキュリティ対策が不十分です。コンテナ内のroot権限で、ホストを操作できる穴があります。

インストール

Ubuntu/Debianにインストールする場合

apt-get コマンドでインストールする場合です。

sudo apt-get install lxc

セットアップ

  • /etc/init/lxc-net.conf
  • /etc/init/lxc.conf
  • /usr/share/doc/lxc/examples
sudo mkdir /srv/lxclib /srv/lxccache
sudo rm -rf /var/lib/lxc /var/cache/lxc
sudo ln -s /srv/lxclib /var/lib/lxc
sudo ln -s /srv/lxccache /var/cache/lxc

もしくは、bind mount を使用します。

sudo mkdir /srv/lxclib /srv/lxccache
sudo sed -i '$a \
/srv/lxclib /var/lib/lxc    none defaults,bind 0 0 \
/srv/lxccache /var/cache/lxc none defaults,bind 0 0' /etc/fstab
sudo mount -a

テンプレートファイル

/usr/lib/lxc/templates/lxc-テンプレート名 のファイルが参照されます。

user@u1:~$ ls /usr/lib/lxc/templates/
lxc-busybox  lxc-fedora    lxc-sshd    lxc-ubuntu-cloud
lxc-debian   lxc-opensuse  lxc-ubuntu

使い方

コンテナの作成

-t は、テンプレート名を指定します。

sudo lxc-create -t ubuntu -n c1

/usr/lib/lxc/templates/lxc-テンプレート名 のファイルが参照されます。

-n は、作成する環境の名前です。

デフォルトユーザー ubuntu がパスワード ubuntu で作成されます。

% sudo lxc-create -t ubuntu -n c1
 
... 省略
 
Download complete
Copy /var/cache/lxc/precise/rootfs-i386 to /var/lib/lxc/c1/rootfs ...
Copying rootfs to /var/lib/lxc/c1/rootfs ...
 
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
 
'ubuntu' template installed
'c1' created

コンテナのリストを表示する

コンテナのリストは、lxc-listコマンドで表示します。

sudo lxc-list
user@u1:~$ sudo lxc-list
RUNNING
 
FROZEN
 
STOPPED

コンテナを起動する

コンテナを起動するには、lxc-startコマンドを使用します。

コンソールにいきなりアクセスします。

sudo lxc-start -n c1

コンソールにアクセスせずに、デタッチした状態で起動します。

sudo lxc-start -n c1 -d

コンテナのコンソールを切断する

コンテナのコンソールを切断(デタッチ)するには、コンソールのログインプロンプトで以下のキーを入力します。

C-a q

コンテナのコンソールに接続する

sudo lxc-console -n c1

コンテナをシャットダウンする

コンテナのシャットダウンには、lxc-shutdownコマンドを使用します。

sudo lxc-shutdown -n c1

コンテナを停止する

強制的にコンテナを終了させる場合には、lxc-stopコマンドを使用します。

sudo lxc-stop -n c1

コンテナは、 /var/lib/lxc/コンテナ名 で作られます。

コンテナを削除する

コンテナのイメージを削除する場合は、 lxc-destroyコマンドを使用します。

sudo lxc-destroy -n c1

クローンの作成

コンテナc1を元にc2を作成します。

sudo lxc-clone -o c1 -n c2

-sオプションを使うと、オリジナルのスナップショットの新しいrootfsを作成します。

sudo lxc-clone -s -o c1 -n c2

memo

sudo lxc-create -t ubuntu -n CN
sudo lxc-create -t ubuntu -n oneiric1 -- -r oneiric

ネットワークの設定

自動で設定されたDNSネームサーバーでは、名前解決ができませんでした。 /etc/resolv.conf のnameserverを書き換えればいいのですが、直接編集すべきファイルではありません。 /etc/network/interfaces を編集します。192.168.0.1を適当に置き換えてください。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp
        dns-nameservers 192.168.0.1

設定の反映は、以下の通りです。

sudo /etc/init.d/networking restart

LXCコンテナのIPアドレスを得る方法

digコマンドで確認できます。c1は、適当なコンテナの名前に置き換えてください。

dig @10.0.3.1 c1 +short
sudo lxc-attach --name c1 -- ifconfig

関連項目




スポンサーリンク