Установка Libvirt на Centos 7 с поддержкой LXC

Установка Libvirt на Centos 7 с поддержкой LXC

Настройка Libvirt

Создайте папку для xml файлов:

mkdir -p /root/lxc && cd /root/lxc

Подключение Epel репозитория

yum -y install epel-release

Установка LXC

yum install -y bridge-utils debootstrap lxc lxc-templates qemu-kvm libvirt libvirt-python libguestfs-tools virt-install

Запуск Libvirt 

systemctl disable lxc
systemctl enable libvirtd
systemctl start libvirtd

Создайте файл LXC:

sudo nano /usr/bin/libvirt-lxc

Вставьте следующий текст:

#!/bin/bash
virsh -c lxc:/// $@

Установите права на выполнение данного файла командой

sudo chmod +x /usr/bin/libvirt-lxc

Удалите сеть по умолчанию:

virsh net-destroy default
virsh net-undefine default

Создайте файл nano /root/lxc/net-default.xml 

<network>
    <name>default</name>
    <forward mode="nat" />
    <bridge name='lxcnet' stp='on' delay='0'/>
    <mac address='52:54:00:35:a2:59'/>
    <dns>
        <forwarder addr="1.1.1.1"/>
        <forwarder addr="8.8.8.8"/>
    </dns>
    <ip address="172.30.0.1" netmask="255.255.255.0">
        <dhcp>
            <range start="172.30.0.2" end="172.30.0.254"/>
        </dhcp>
    </ip>
</network>

Создайте и запустите сеть:

virsh net-define /root/lxc/net-default.xml 
virsh net-autostart --network default
virsh net-start default
virsh net-list

Запуск контейнера debian

Создайте контейнер debian

lxc-create -t download -n debian -- --dist debian --release jessie --arch amd64

Отредактируйте секцию Network configuration nano /var/lib/lxc/debian/config

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcnet
lxc.network.ipv4 = 172.30.0.10/24
lxc.network.ipv4.gateway = 172.30.0.1
lxc.network.hwaddr = 00:16:3e:12:83:10

Отредактируйте файл nano /var/lib/lxc/debian/rootfs/etc/hostname

debian

Отредактируйте файл nano /var/lib/lxc/debian/rootfs/etc/resolv.conf

nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

Отредактируйте интерфейсы nano /var/lib/lxc/debian/rootfs/etc/network/interfaces

auto lo
iface lo inet loopback 

# auto eth0
# iface eth0 inet dhcp

Сконвертируйте конфиг:

libvirt-lxc domxml-from-native lxc-tools /var/lib/lxc/debian/config > /root/lxc/debian.xml

Откройте файл nano /root/lxc/debian.xml

<domain type='lxc'>
  <name>debian</name>
  <uuid>8359f034-c7db-4270-bb64-32b95e8ebc18</uuid>
  <memory unit='KiB'>65536</memory>
  <currentMemory unit='KiB'>65536</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <os>
    <type>exe</type>
    <init>/sbin/init</init>
  </os>
  <features>
    <capabilities policy='allow'>
    </capabilities>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/libexec/libvirt_lxc</emulator>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/var/lib/lxc/debian/rootfs'/>
      <target dir='/'/>
    </filesystem>
    <interface type='network'>
      <source network='default'/>
      <mac address='00:16:3e:12:83:10'/>
      <ip address='172.30.0.10' family='ipv4' prefix='24'/>
      <route family='ipv4' address='0.0.0.0' gateway='172.30.0.1'/>
      <guest dev='eth0'/>
      <link state='up'/>
    </interface>    
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='lxc' port='0'/>
      <alias name='console0'/>
    </console>
  </devices>
</domain>

Обратите внимание на секции idmap, interface, console. Задайте им корректные значения.

Создайте контейнер:

libvirt-lxc define /root/lxc/debian.xml

Запустите контейнер:

libvirt-lxc start debian

Подключение к контейнеру

Отредактируйте файл nano /var/lib/lxc/debian/rootfs/etc/shadow

Пропишите строчку:

root:$6$jOJaaad3$213aac5XXw7XMVrtI8dPuwyJazAeMOoaq5QOvo.uf/7V70lA3PIsV7WAiM3d1SWPyDkPiVTvizRHta1P7ZyKs/:17541:0:99999:7:::

Это хэш пароля qwerty!2

Подключитесь к гостевой консоли, используя команду

libvirt-lxc console debian

Введите логин root и пароль qwerty!2. Чтобы отключиться от терминала нужно нажать клавиши Ctrl+5

Поменяйте root пароль командой:

passwd

Рекомендуется настроить контейнер на авторизацию через SSH по ключу и удалить root пароль