US: +1 561 2500001/EU: +359 2 4925555 LiveChat
[email protected] Sign Up Login
ITLDC
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]

Запускаем виртуализацию LXC на Ubuntu

Запускаем виртуализацию LXC на Ubuntu

Авг 19, 2016antonНовости

LXC (англ. Linux Containers) — система виртуализации на уровне операционной системы, которая позволяет запустить множество изолированных пользовательских окружений в рамках одного гипервизора. Мы ранее писали о разнице в технологиях виртуализации в заметке Чем отличаются хостинг, VPS, VDS и выделенный сервер?. LXC является сравнительно молодым представителем систем «частичной» виртуализации, позволяя запускать на одном выделенном сервере или даже SSD VDS несколько гостевых контейнеров. Так как речь идет о частичной виртуализации, в качестве гостевых систем можно использовать только различные дистрибутивы Linux — как и в популярном продукте OpenVZ.

Для чего можно использовать LXC? По сравнению с доживающим свой век «традиционным» OpenVZ, решение LXC считается более простым — работает «из коробки» и не требует установки специального ядра, управляется очень просто. При этом возможности ограничения ресурсов у LXC несколько меньше, поэтому в первую очередь эту технологию стоит рассматривать не как продукт для предоставления услуг VPS, а как внутреннее решение для изоляции различных служб и легкого дальнейшего масштабирования. Конечно, немаловажным является возможность использовать в рамках одного сервера несколько диалектов Linux — наверняка многие системные администраторы сталкивались с разными продуктами, ориентированными под конкретные дистрибутивы, что усложняло инсталляцию в рамках другой версии операционной системы.

Давайте попробуем основные возможности LXC — скажем, на сервере под управлением Ubuntu 16. Вначале — переключим работу физического интерфейса в режим «моста» (bridge) — это самый простой вариант обеспечить доступ гостевым системам к сети.

В /etc/network/interfaces создаем интерфейс br0, переносим в его свойства настройки IP-адреса и подключаем этот интерфейс к сетевому адаптеру (enp2s0):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
source /etc/network/interfaces.d/*
 
# The loopback network interface
auto lo
iface lo inet loopback
 
##Bridge  Name ###
auto br0
### Bridge Information
iface br0 inet static
  address www.yyy.xxx.zzz
  netmask www.yyy.xxx.zzz
  network www.yyy.xxx.0
  broadcast www.yyy.xxx.255
  gateway www.yyy.xxx.1
  dns-nameservers 8.8.8.8
  bridge_ports enp2s0
  bridge_stp off
  bridge_fd 9
 
iface enp2s0 inet manual

После изменений — перезагрузимся или переконфигурируем сеть с помощью /etc/init.d/networking restart

Инсталлируем подсистему LXC и необходимые утилиты:

1
apt-get install lxc lxc-templates wget bridge-utils cgroup-lite

Запустим lxc-checkconfig чтобы проверить, успешно ли установлена поддержка LXC:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-4.4.0-34-generic
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
 
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
 
--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
Bridges: enabled
Advanced netfilter: enabled
CONFIG_NF_NAT_IPV4: enabled
CONFIG_NF_NAT_IPV6: enabled
CONFIG_IP_NF_TARGET_MASQUERADE: enabled
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled
FUSE (for use with lxcfs): enabled
 
--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities: enabled
 
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

Теперь настроим сеть для контейнеров LXC — отключим интерфейс bridge по умолчанию lxcbr0, который был создан во время установки LXC. Для этого в файле /etc/default/lxc-net установим значение “false” в переменной USE_LXC_BRIDGE.

Когда USE_LXC_BRIDGE установлена в true, мост с именем lxcbr0 создается в процессе запуска и может быть использован для создания приватной сети, однако мы в данном примере будем использовать стандартный мост — это позволит использовать контейнеры более универсально.

Далее в файле /etc/lxc/default.conf укажем использовать созданный ранее интерфейс br0:

1
2
3
4
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

На этом базовая настройка завершена и можно создавать контейнеры LXC. По-умолчанию инсталлируются наиболее популярные шаблоны, список которых можно получить с помощью команды ls /usr/share/lxc/templates/:

1
2
lxc-alpine    lxc-archlinux  lxc-centos  lxc-debian    lxc-fedora  lxc-openmandriva  lxc-oracle  lxc-slackware   lxc-sshd    lxc-ubuntu-cloud
lxc-altlinux  lxc-busybox    lxc-cirros  lxc-download  lxc-gentoo  lxc-opensuse      lxc-plamo   lxc-sparclinux  lxc-ubuntu

Начнем с самого простого — с виртуальной машины под управлением Ubuntu. Выполним команду lxc-create -n ubuntu_lxc -t ubuntu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
root@lxc:~# lxc-create -n ubuntu_lxc -t ubuntu
Checking cache download in /var/cache/lxc/xenial/rootfs-amd64 ...
Copy /var/cache/lxc/xenial/rootfs-amd64 to /var/lib/lxc/ubuntu_lxc/rootfs ...
Copying rootfs to /var/lib/lxc/ubuntu_lxc/rootfs ...
Generating locales (this might take a while)...
  en_US.ISO-8859-1... done
Generation complete.
Creating SSH2 RSA key; this may take some time ...
2048 SHA256:I6kcUu1e8gm4LFyitJ1b/vrxF1tF1izhNLNWUpIZ7yQ root@lxc (RSA)
Creating SSH2 DSA key; this may take some time ...
1024 SHA256:v85zUbwYi1zB6/Sn6RHAXvFOlra9o9v09L+2bpB6L1o root@lxc (DSA)
Creating SSH2 ECDSA key; this may take some time ...
256 SHA256:ozhZhiRfRludJo1pLAvea1FzocBX5s2ObpO/8cuI1AY root@lxc (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 SHA256:qeIRecmihv18OaC4iwsje/b90EXf9S9z4cedqtpSDmE root@lxc (ED25519)
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
 
Current default time zone: 'Etc/UTC'
Local time is now:      Tue Aug 16 15:40:57 UTC 2016.
Universal Time is now:  Tue Aug 16 15:40:57 UTC 2016.
 
 
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##

С помощью дополнительных параметров можно выбрать другой релиз Ubuntu или, допустим, другую архитектуру. Например, команда lxc-create -t ubuntu -n lxc_trusty — -r trusty -a amd64 может быть использована для подготовки контейнера Ubuntu 14 (Trusty) архитектуры amd64.

Итак, наша виртуальная машина создана. Теперь запустим ее с помощью lxc-start -n ubuntu_lxc -d, а затем подключимся к созданному контейнеру:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@lxc:~# lxc-console -n ubuntu_lxc
 
Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 
Ubuntu 16.04.1 LTS ubuntu_lxc pts/0
 
ubuntu1_lxc login: ubuntu
Password:
Last login: Tue Aug 16 15:57:15 UTC 2016 on pts/0
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64)
 
* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
 
ubuntu@ubuntu_lxc:~$ uname -a
Linux ubuntu_lxc 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ubuntu_lxc:~$

При необходимости, в настройках сети операционной системы можно указать сетевые настройки, активировать необходимые сервисы, установить требующиеся пакеты.

Если требуется создать виртуальную машину с Centos7, вначале необходимо инсталлировать традиционный для систем RedHat менеджер пакетов, это легко сделать всего одной командой apt-get install yum. После этого запускаем lxc-create:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
root@lxc:~# lxc-create -n centos7_lxc -t centos -- -R 7 -a x86_64
Host CPE ID from /etc/os-release:
Checking cache download in /var/cache/lxc/centos/x86_64/7/rootfs ...
Cache found. Updating...
Loaded plugins: fastestmirror
base                                                                        | 3.6 kB  00:00:00
extras                                                                      | 3.4 kB  00:00:00
updates                                                                     | 3.4 kB  00:00:00
(1/4): base/7/x86_64/group_gz                                               | 155 kB  00:00:00
(2/4): extras/7/x86_64/primary_db                                           | 160 kB  00:00:00
(3/4): base/7/x86_64/primary_db                                             | 5.3 MB  00:00:01
(4/4): updates/7/x86_64/primary_db                                          | 6.5 MB  00:00:06
 
...
 
Copy /var/cache/lxc/centos/x86_64/7/rootfs to /var/lib/lxc/centos7_lxc/rootfs ...
Copying rootfs to /var/lib/lxc/centos7_lxc/rootfs ...
Storing root password in '/var/lib/lxc/centos7_lxc/tmp_root_pass'
Expiring password for user root.
passwd: Success
 
 
Container rootfs and config have been created.
Edit the config file to check/enable networking setup.
 
The temporary root password is stored in:
 
        '/var/lib/lxc/centos7_lxc/tmp_root_pass'
 
 
The root password is set up as expired and will require it to be changed
at first login, which you should do as soon as possible.  If you lose the
root password or wish to change it without starting the container, you
can change it from the host by running the following command (which will
also reset the expired flag):
 
        chroot /var/lib/lxc/centos7_lxc/rootfs passwd

Временный пароль расположен в файле /var/lib/lxc/centos7_lxc/tmp_root_pass, скопируем его в буфер обмена, затем запустим контейнер и подключимся к нему. Обратите внимание — сразу же потребуется указать новый пароль root:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@lxc:~# lxc-start -n centos7_lxc -d
root@lxc:~# lxc-console -n centos7_lxc
Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 
CentOS Linux 7 (Core)
Kernel 4.4.0-34-generic on an x86_64
 
centos7_lxc login: root
Password:
You are required to change your password immediately (root enforced)
Changing password for root.
(current) UNIX password:
New password:
Retype new password:
[root@centos7_lxc ~]# uname -a
Linux centos7_lxc.layer6.net 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@centos7_lxc ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

Контейнеры LXC — отличное простое решение для создания собственных приватных виртуальных Linux-машин, не требующее каких-либо специальных условий для работы. Конечно, в случае с LXC нет такой гибкости и возможностей, которые дают технологии KVM/QEMU — однако для многих задач использование LXC оправдано.

Хотите начать использовать LXC прямо сейчас?

Закажите любой виртуальный сервер на SSD-дисках, введите купон ITLDCLXC и постоянная скидка 10% у вас в кармане! Если будет необходимо, наша служба технической поддержки поможет выбрать подходящую локацию и тариф. Присоединяйтесь!

Подробнее о LXC, утилитах и рекомендациях:

  • Linuxcontainers.org
  • Руководство Ubuntu — Виртуализация — LXC
  • Official Debian Wiki — LXC
  • XGU.ru Wiki — LXC
  • LXC Web Panel — панель управления контейнерами LXC
  • Proxmox VE Wiki — Linux Container
  • Linux Containers with LXC: some best practices
Tags: lxc,  ubuntu
Related Posts
  • KeyHelp — бесплатная панель управления сервером

  • Ubuntu 16.04 LTS Xenial Xerus уже доступен на наших SSD VDS

  • Какую операционную систему выбрать? Версия 2.0

  • ZPanel — бесплатная панель для хостинга сайтов

← EU1.AMS — незапланированные работы в датацентре ночью 29 июля
Простой способ подключиться по RDP к Linux VDS →

Recent Posts

  • 🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10
    🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10

    So, your server is still running CentOS...

  • 🐬 5 Modern MySQL-Compatible Databases Worth Knowing
    🐬 5 Modern MySQL-Compatible Databases Worth Knowing

    These days, saying “I’m using MySQL” is...

  • 🛠️ Mission Complete: NL Datacenter Maintenance Report!
    🛠️ Mission Complete: NL Datacenter Maintenance Report!

    Last week, while most people were enjoyi...

  • Disk Usage 🧮  in Linux: Tools, Tips, and That One Mysterious 20GB Log File
    Disk Usage 🧮 in Linux: Tools, Tips, and That One Mysterious 20GB Log File

    You’re running your awesome website, cru...

  • OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy
    OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy

    TL;DR: OpenSSH just hit version 10.0, an...

  • 🛠️ DUS Datacenter Maintenance Complete: New Servers In!
    🛠️ DUS Datacenter Maintenance Complete: New Servers In!

    Guten Tag, liebe Hosting-Freunde! 🇩🇪 Gue...

  • Bash Process Management: How to Tame Your Shell Like a Pro
    Bash Process Management: How to Tame Your Shell Like a Pro

    Running Linux commands is cool. Running...

  • 🚀 Beyond Nginx: Exploring the Best Lightweight Web Servers for PHP & HTTPS
    🚀 Beyond Nginx: Exploring the Best Lightweight Web Servers for PHP & HTTPS

    Nginx has long been the go-to web server...

US/APAC Support

ITLDC

PO Box #800054
Aventura
FL 33280
USA

+1 561 2500001

[email protected]

EU Support

Smart Industries LLC

187E Warm Springs Rd B218
Las Vegas
NV 89119
USA

+1 561 2500001

[email protected]

Services

  • SSD VDS
  • Dedicated Servers
  • Shared Hosting
  • Colocation
  • DDoS Protection
  • SSL Certificates
  • Backup Storage
  • Reselling

Support

  • Get Help
  • ITLDC Status
  • Looking Glass
  • Our SLA
  • Datacenters
  • FAQ & Knowledgebase
  • Data Security
  • Contact us

© Copyright 1995-2019 ITLDC Team. You can freely use or share information from this site with a hyperlink to the original page.