[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

如何:配置支援 LXC 的 CentOS 6

1. LXC 的 介紹

LXC(Linux Container)不是真正的虛擬化技術,它更像是一個「強化版」的 chroot 環境。這裡有更多關於 LXC 的資訊: http://lxc.sourceforge.net

2. 安裝 libvirt 堆疊

yum install libvirt libvirt-client python-virtinst

3. 設置 LXC 容器

假設你想建立一個完整的容器,就像一個最小化的 CentOS 設置。

請確保你機器上的 libvirtd 已經啟動(service libvirtd start)。

我們會根據以下假設來初始化一個 CentOS 6 x86_64 容器:

3.1. 在本機的檔案系統上

{{{ 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 的 selinux 政策:

{{{ module lxc 1.0;

require {

}

#============= hald_t ============== allow hald_t virtd_lxc_t:dbus send_msg; }}}

請參詳 http://wiki.centos.org/HowTos/SELinux 頁的出色指引有關如何完成以上步驟。

請留意你不能在停用 SELinux 的情況下運用 LXC,你可嘗試把政策改為 permissive(見 https://bugzilla.redhat.com/show_bug.cgi?id=995897)

3.2. 在 chroot 檔案系統內

以下所有步驟均須要在 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 }}}

3.3. 返回本機

# 現在從該檔案系統建立 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

3.4. 有關在 KVM 虛擬機器內運行 LXC 與預設網絡

當你在 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 7


2023-09-11 07:23