15分で分かるLXC(Linux Containers)の仕組みと基本的な使い方

 最近注目されている仮想化技術の1つにLXC(Linux Containers)がある。LXCはコンテナ型仮想化技術と呼ばれるものの1つで、OS上に別の隔離された環境を構築するものだ。今回はLXCの仕組みと、基本的なインストールについて紹介する。

さまざまな仮想化技術とLXC


 使使LXCLinux Container

 使XenKVMOSOSOS1
図1 Xen/KVMによる仮想化図1 Xen/KVMによる仮想化
1 Xen/KVM

 OSOSOSOS

 LXCXenKVMOS2
図2 LXCによる仮想化図2 LXCによる仮想化
2 LXC

 

LXC


 LXCchrootchroot使chroot

 FreeBSDchrootjailjailLXCjailLinux2.6.24cgroups

 cgroupsOS

 cgroupsCPUcgroupsCPULXCchrootcgroups使3
図3 cgroupsによるリソースのグルーピング図3 cgroupsによるリソースのグルーピング
3 cgroups

 cgroupsRed Hat

LXC


 LXCcgroups使CPUXenKVM

 LXCrootrootrootLXC 1.0root

LXC 1.0


 LXCLXC1.01.0

Red Hat Enterprise Linux


 Red Hat Enterprise LinuxRHELRHEL 6.5LXCFedora ProjectRHELEPELLXC0.9.0LXCEPEL

 LXCRPMSPECRPMGCCRPMrpm-build
$ tar xvzf lxc-1.0.3.tar.gz 
$ mkdir ~/rpmbuild/SPECS
$ cp lxc-1.0.3/lxc.spec ~/rpmbuild/SPECS/
$ mkdir ~/rpmbuild/SOURCES
$ cp lxc-1.0.3.tar.gz ~/rpmbuild/SOURCES/
$ rpmbuild -bb ~/rpmbuild/SPECS/lxc.spec
$ cd ~/rpmbuild/RPMS/x86_64
$ rpm -Ivh lxc-1.0.3-1.el6.x86_64.rpm lxc-libs-1.0.3-1.el6.x86_64.rpm

 RPMRPMyum

 LXCRPMdocbook2XEPELEPELepel-releseEPEL
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

 CentOSLXClibvirtcgconfig
# service libvirtd start
# service cgconfig start

Debian/Ubuntu


 UbuntuUbuntu 14.04 LTSTrusty TahrLXC 1.0.3lxcDebianjessieLXC 1.0.3

 DebianUbuntuLXCLXCconfiguremakemake install

LXC使


 LXClxc-使lxc-createlxc-start使

 LXC使LXC/usr/share/lxc/templates
$ 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

 lxc-createLXC 1.0CentOSFedoraDebianUbuntuLinuxlxc-centoslxc-fedoralxc-debianlxc-ubuntubusyboxlxc-busyboxOSlxc-sshd

 CentOSlxc-centos使centos-test01
# lxc-create -t centos -n centos-test01

 CentOSrootroot/var/lib/lxc/centos-test01/tmp_root_passroot
The temporary root password is stored in:

        '/var/lib/lxc/centos-test01/tmp_root_pass'

 centos-test01lxc-start使
# lxc-start -n centos-test01 -d

 -dlxc-start-dlxc-console

 lxc-consolecentos-test01
# lxc-console -n centos-test01

 Ctrl-AQ

 shutdownlxc-stop
# lxc-stop -n centos-test01

LXC1/


 LXC使KVMXenVMwareLXC使VPS


 /lxc-sshdlxc-busybox使