LXC (Linux Container)不是真正的虚拟化技术,它更像是一个 chroot 的环境。
在 http://lxc.sourceforge.net 可以获得关于 LXC 的更多信息 。
yum install libvirt libvirt-client python-virtinst
假设你想配置一个完整的容器,就像进行一个最小化的 CentOS 6 安装一样。
请确保你机器上的 libvirtd 已经启动(service libvirtd start)。
我们将初始化一个 CentOS 6 x86_64 容器,假设,
根目录为 /var/lib/libvirt/lxc/centos-6-x86_64/
root 密码为will be MYROOTPASS
机器架构与主机相同,示例中为 x86_64
容器名称是 test
mkdir /var/lib/libvirt/lxc/centos-6-x86_64/etc/yum.repos.d/ -p cat /etc/yum.repos.d/CentOS-Base.repo |sed s/'$releasever'/6/g > /var/lib/libvirt/lxc/centos-6-x86_64/etc/yum.repos.d/CentOS-Base.repo yum groupinstall core --installroot=/var/lib/libvirt/lxc/centos-6-x86_64/ --nogpgcheck -y yum install plymouth libselinux-python --installroot=/var/lib/libvirt/lxc/centos-6-x86_64/ --nogpgcheck -y
Selinux 注意:你需要创建一个规则以允许 virtd_lxc_t 使用 dbus:
module lxc 1.0; require { type hald_t; type virtd_lxc_t; class dbus send_msg; } #============= hald_t ============== allow hald_t virtd_lxc_t:dbus send_msg;
http://wiki.centos.org/zh/HowTos/SELinux 页提供了优秀的指引文档,来指导我们完成以上步骤。
以下均在 chroot 环境中操作:
chroot /var/lib/libvirt/lxc/centos-6-x86_64/ echo MYROOTPASS |passwd root --stdin #Fix root login on console echo "pts/0" >>/etc/securetty sed -i s/"session required pam_selinux.so close"/"#session required pam_selinux.so close"/g /etc/pam.d/login sed -i s/"session required pam_selinux.so open"/"#session required pam_selinux.so open"/g /etc/pam.d/login sed -i s/"session required pam_loginuid.so"/"#session required pam_loginuid.so"/g /etc/pam.d/login #Configuring basic networking cat > /etc/sysconfig/network << EOF NETWORKING=yes HOSTNAME=lxc1.test.centos.org EOF cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes EOF #Enabling sshd chkconfig sshd on # Fixing root login for sshd sed -i s/"session required pam_selinux.so close"/"#session required pam_selinux.so close"/g /etc/pam.d/sshd sed -i s/"session required pam_loginuid.so"/"#session required pam_loginuid.so"/g /etc/pam.d/sshd sed -i s/"session required pam_selinux.so open env_params"/"#session required pam_selinux.so open env_params"/g /etc/pam.d/sshd # Leaving the chroot'ed filesystem exit
# 现在从上面的文件系统创建 LXC 容器。
virt-install --connect lxc:/// --name test --ram 512 --vcpu 1 --filesystem /var/lib/libvirt/lxc/centos-6-x86_64/,/ --noautoconsole
你可以如此访问该 LXC 容器:
virsh console test
又或者
ssh -l root CONTAINER_IP
要取得 LXC 容器的 IP 地址,请在 dhcp 租约 /var/lib/libvirt/dnsmasq/default.leases 内查阅它的 MAC 地址(收录于 /etc/libvirt/lxc/test.xml)
当你在 KVM 虚拟机器内运行 LXC(两者皆采用 libvirt),缺省的 192.168.122.0/24 网络将会在 LXC 容器引导时产生冲突,你须要更改客端虚拟机器的 libvirtd(执行容器的那个)的 IP 范围来矫正问题。
service libvirtd stop sed -i 's/"192\.168\.122\./"192.168.120./' /etc/libvirt/qemu/networks/default.xml service libvirtd start
Translation of revision 6
出处:http://wiki.centos.org/zh/HowTos/LXC-on-CentOS6