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_64centos01 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.5root@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 |