Ubuntu 14.04
Sponsored Link

LXC : インストール2014/06/16

 
OSレベルの仮想化ソフトウェア LXC (Linux Containers) による仮想環境の構築です。
一つのコントロールホスト上で、複数の隔離された Linuxシステム (コンテナ) を起動することができます。 ただし、完全仮想化とは仕組みが異なるため、Windows のような別種の OS は利用できません。
[1] LXC をインストールします。
root@lxc:~#
apt-get -y install lxc
[2] コンテナの作成と起動です。
# 「ubuntu01」コンテナを「ubuntu」テンプレートで作成

root@lxc:~#
lxc-create -n ubuntu01 -t ubuntu

Checking cache download in /var/cache/lxc/trusty/rootfs-amd64 ...
Installing packages in template: ssh,vim,language-pack-en
Downloading ubuntu trusty minimal ...
...
...
...
Current default time zone: 'Asia/Tokyo'
Local time is now:      Mon Jun 16 17:11:23 JST 2014.
Universal Time is now:  Mon Jun 16 08:11:23 UTC 2014.


##
# The default user is 'ubuntu' with password 'xxxxxx'!
# Use the 'sudo' command to run tasks as root in the container.
##

# コンテナ一覧表示

root@lxc:~#
lxc-ls

ubuntu01
# コンテナをデーモンで起動

root@lxc:~#
lxc-start -n ubuntu01 -d

# コンテナのコンソールに接続

root@lxc:~#
lxc-console -n ubuntu01

Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

Ubuntu 14.04 LTS ubuntu01 tty1

ubuntu01 login:    
# 接続できた
# 説明の通り、コンテナのコンソールを抜けるには「Ctrl+a」キーを押下後、「q」キーを押下

[3] Ubuntu 以外にもいくつかテンプレートが用意されています。
# テンプレートは以下の場所に用意してある

root@lxc:~#
ls /usr/share/lxc/templates/

lxc-alpine     lxc-centos    lxc-fedora        lxc-oracle  lxc-ubuntu-cloud
lxc-altlinux   lxc-cirros    lxc-gentoo        lxc-plamo
lxc-archlinux  lxc-debian    lxc-openmandriva  lxc-sshd
lxc-busybox    lxc-download  lxc-opensuse      lxc-ubuntu

# 例として CentOS コンテナ作成

root@lxc:~#
apt-get -y install yum

root@lxc:~#
lxc-create -n centos01 -t centos

root@lxc:~#
cat /var/lib/lxc/centos/tmp_root_pass
 
# rootパスワード確認

xxxxxxxxxxxxxxxxx
# コンテナ起動

root@lxc:~#
lxc-start -n centos01 -d

# コンテナのコンソールに接続

root@lxc:~#
lxc-console -n centos01

Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

CentOS release 6.5 (Final)
Kernel 3.13.0-29-generic on an x86_64

centos01 login:
[4] その他の操作方法です。
# コンテナを起動して特定のアプリケーションを実行

root@lxc:~#
lxc-start -n ubuntu01 /bin/echo "Welcome to the LXC World!"

Welcome to the LXC World!
# デーモン起動しているコンテナの停止

root@lxc:~#
lxc-stop -n ubuntu01
# コンテナの削除

root@lxc:~#
lxc-destroy -n ubuntu01
# コンテナ情報表示

root@lxc:~#
lxc-info -n ubuntu01
Name:           ubuntu01
State:          STOPPED

# 既存コンテナから別のコンテナを複製

root@lxc:~#
lxc-clone ubuntu01 ubuntu02

Created container ubuntu02 as copy of ubuntu01
# コンテナのスナップショットを取得

root@lxc:~#
lxc-snapshot -n ubuntu01

lxc_container: Snapshot of directory-backed container requested.
lxc_container: Making a copy-clone. If you do want snapshots, then
lxc_container: please create an aufs or overlayfs clone first, snapshot that
lxc_container: and keep the original container pristine.
root@lxc:~#
lxc-snapshot -n ubuntu01 --list
 
# 確認

snap0 (/var/lib/lxcsnaps/ubuntu01) 2014:06:16 21:36:50
# スナップショットからのリストア

root@lxc:~#
lxc-snapshot -n ubuntu01 -r snap0
# デーモン起動しているコンテナへの接続

root@lxc:~#
lxc-info -n ubuntu01 | grep IP

IP:             10.0.1.5
root@lxc:~#
ssh ubuntu@10.0.1.5

ubuntu@10.0.1.5's password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-29-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Tue Jun 16 20:20:56 2014
ubuntu@ubuntu01:~$
[5] デーモンとして起動しているコンテナ環境内へ、HTTP や SSH 経由でアクセスすることも可能です。
# デフォルトでは以下のようなネットワーク設定となっている

root@lxc:~#
egrep -v "^#|^$" /etc/default/lxc-net

USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.1.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.1.0/24"
LXC_DHCP_RANGE="10.0.1.2,10.0.1.254"
LXC_DHCP_MAX="253"

# 設定に従ってホスト側にはブリッジが構成されている

root@dlp:~#
ifconfig | grep -A1 lxcbr0

lxcbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:10.0.1.1  Bcast:10.0.1.255  Mask:255.255.255.0

# 稼働中のコンテナの IP 確認

# 以下で調べた IP アドレス宛に HTTP や SSH アクセスすることで、コンテナ環境に接続可能

root@dlp:~#
lxc-info -n ubuntu01 | grep IP

IP:             10.0.1.77
関連コンテンツ