Страница 1 из 2
контейнеры LXC
Добавлено: 21 мар 2015, 20:50
Olej
LXC: Kонтейнерные утилиты Linux.
Контейнеры эффективно разделяют ресурсы, управляемые единственной операционной системой, на изолированные группы, для достижения лучшего баланса между конфликтующими запросами на использование ресурсов. В отличие от виртуализации, здесь не требуется ни эмуляция на командном уровне, ни компиляция "на лету" (just-in-time compilation). Контейнеры могут исполнять прямые процессорные команды, не прибегая к механизмам интерпретации. Также отпадают сложности паравиртуализации и преобразования системных вызовов.
...
Контейнерные технологии существуют уже довольно продолжительное время. В качестве примеров контейнеров из других Unix-систем следует назвать Solaris Zones и BSD jails. У контейнерных технологий в Linux также давние традиции: Linux-Vserver, OpenVZ и FreeVPS. Хотя каждая из этих технологий является вполне зрелой, решительных шагов по интеграции поддержки их контейнерных возможностей в основную ветвь ядра Linux не предпринималось.
...
Проект Linux Resource Containers ..., напротив, направлен на реализацию контейнеров в сотрудничестве с разработчиками основной ветви ядра Linux.
Только, в отличие от этих вводных публикаций, на сегодня это всё включено в основную ветвь ядра, ничего патчить и устанавливать из исходников не нужно, всё уже включено в состав дистрибутивов:
Код: Выделить всё
[Olej@modules ~]$ sudo yum install lxc*
...
=============================================================================================================
Package Архитектура Версия Репозиторий Размер
=============================================================================================================
Установка:
lxc x86_64 1.0.7-1.fc20 updates 134 k
lxc-devel x86_64 1.0.7-1.fc20 updates 16 k
lxc-doc noarch 1.0.7-1.fc20 updates 145 k
lxc-extra x86_64 1.0.7-1.fc20 updates 23 k
lxc-libs x86_64 1.0.7-1.fc20 updates 263 k
lxc-templates x86_64 1.0.7-1.fc20 updates 79 k
Установка зависимостей:
lua-alt-getopt noarch 0.7.0-6.fc20 fedora 7.7 k
lua-filesystem x86_64 1.6.2-4.fc20 fedora 28 k
lua-lxc x86_64 1.0.7-1.fc20 updates 16 k
python3-lxc x86_64 1.0.7-1.fc20 updates 24 k
Итого за операцию
=============================================================================================================
Установить 6 пакетов (+4 зависимых)
Объем загрузки: 736 k
Объем изменений: 2.2 M
...
Выполнено!
New leaves:
lxc.x86_64
lxc-devel.x86_64
lxc-doc.noarch
lxc-extra.x86_64
lxc-templates.x86_64
Код: Выделить всё
[Olej@modules ~]$ ls /bin/lxc* -w90
/bin/lxc-attach /bin/lxc-console /bin/lxc-info /bin/lxc-stop
/bin/lxc-autostart /bin/lxc-create /bin/lxc-ls /bin/lxc-top
/bin/lxc-cgroup /bin/lxc-destroy /bin/lxc-monitor /bin/lxc-unfreeze
/bin/lxc-checkconfig /bin/lxc-device /bin/lxc-snapshot /bin/lxc-unshare
/bin/lxc-clone /bin/lxc-execute /bin/lxc-start /bin/lxc-usernsexec
/bin/lxc-config /bin/lxc-freeze /bin/lxc-start-ephemeral /bin/lxc-wait
Re: контейнеры LXC
Добавлено: 22 мар 2015, 15:23
Olej
Перевод целой серии статей непосредственно от автора LXC
LXC 1.0.:
Суб, 25/01/2014 - 15:45 — vasilisc
LXC (англ. Linux Containers) — система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров ОС Linux на одном компьютере. LXC не использует виртуальные машины, а создает виртуальное окружение с собственным пространством процессов и сетевым стеком. Все экземпляры LXC используют один экземпляр ядра ОС. Данная система похожа на системы OpenVZ и Linux-VServer для ОС Linux, и на FreeBSD jail и Solaris Containers. LXC основана на технологии ядра Linux под названием cgroups (добавлено в версии ядра 2.6.29). Также используется функциональность изоляции namespaces.
Виртуализация на уровне операционной системы — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного. Эти экземпляры (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу. Для систем на базе UNIX, эта технология может рассматриваться как улучшенная реализация механизма chroot. Ядро обеспечивает полную изолированность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга.
Стефан Грабер (Stéphane Graber) работает в Canonical в Ubuntu Foundations Team. В основном он занимается сетевыми проектами в Ubuntu - IPv6, DNS, LTSP. Стефан с Сержем (Serge Hallyn) являются главными мантейнерами LXC, который зарелизится в версии LXC 1.0 в феврале 2014 года.
Для популяризации LXC Стефан решил опубликовать ряд статей:
LXC 1.0: Первый Ubuntu контейнер.
LXC 1.0: Второй контейнер.
LXC 1.0: Продвинутое использование контейнера.
LXC 1.0: Более углублённое использование контейнера.
LXC 1.0: Хранилище контейнеров.
LXC 1.0: Безопасность.
LXC 1.0: Непривилегированные контейнеры.
LXC 1.0: Скрипты и API.
LXC 1.0: GUI в контейнере.
LXC 1.0: Решение проблем и отладка.
VPN в контейнере.
Re: контейнеры LXC
Добавлено: 02 дек 2015, 00:01
Olej
Re: контейнеры LXC
Добавлено: 06 дек 2015, 22:51
Olej
Код: Выделить всё
olej@nvidia ~ $ uname -a
Linux nvidia 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:30:01 UTC 2014 i686 i686 i686 GNU/Linux
Код: Выделить всё
olej@nvidia ~ $ apt search lxc
p libclxclient-dev - Development file for libclxclient
p libclxclient3 - X Window System C++ access library
v liblxc0 -
p liblxc1 - Linux Containers userspace tools (library)
p lxc - Linux Containers userspace tools
p lxc-android-config - configuration to fire up an ubuntu-touch a
p lxc-dbg - Linux Containers userspace tools (debug)
p lxc-dev - Linux Containers userspace tools (developm
p lxc-templates - Linux Containers userspace tools (template
p lxc-tests - Linux Containers userspace tools (test bin
p lxctl - Utility to manage LXC
p nova-compute-lxc - OpenStack Compute - compute node (LXC)
p python3-lxc - Linux Containers userspace tools (Python 3
Код: Выделить всё
olej@nvidia ~ $ apt show lxc
Пакет: lxc
Новый: да
Состояние: не установлен
Версия: 1.0.8-0ubuntu0.3
Приоритет: необязательный
Раздел: admin
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: i386
Размер в распакованном виде: 721 k
Зависимости: adduser, bridge-utils, dnsmasq-base, iptables, liblxc1 (=
1.0.8-0ubuntu0.3), python3, python3-lxc, apparmor (>=
2.8.95~2430-0ubuntu4), sysv-rc (>= 2.88dsf-24) | file-rc
(>= 0.8.16), libc6 (>= 2.14)
Рекомендует: lxc-templates (>= 0.8.0~rc1-4ubuntu43)
Предлагает: btrfs-tools, lvm2, lxctl
Описание: Linux Containers userspace tools
Containers are insulated areas inside a system, which have their own namespace
for filesystem, network, PID, IPC, CPU and memory allocation and which can be
created using the Control Group and Namespace features included in the Linux
kernel.
This package provides the lxc-* tools, which can be used to start a single
daemon in a container, or to boot an entire "containerized" system, and to
manage and debug your containers.
Сайт: http://linuxcontainers.org
Код: Выделить всё
olej@nvidia ~ $ apt install lxc
Чтение списков пакетов… Готово
Построение дерева зависимостей
...
обновлено 0, установлено 6 новых пакетов, для удаления отмечено 0 пакетов, и 60 пакетов не обновлено.
Необходимо скачать 784 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 3 095 kB.
...
Код: Выделить всё
olej@nvidia ~ $ ls /usr/bin/lxc*
/usr/bin/lxc-attach /usr/bin/lxc-clone /usr/bin/lxc-destroy /usr/bin/lxc-info /usr/bin/lxc-start /usr/bin/lxc-unfreeze
/usr/bin/lxc-autostart /usr/bin/lxc-config /usr/bin/lxc-device /usr/bin/lxc-ls /usr/bin/lxc-start-ephemeral /usr/bin/lxc-unshare
/usr/bin/lxc-cgroup /usr/bin/lxc-console /usr/bin/lxc-execute /usr/bin/lxc-monitor /usr/bin/lxc-stop /usr/bin/lxc-usernsexec
/usr/bin/lxc-checkconfig /usr/bin/lxc-create /usr/bin/lxc-freeze /usr/bin/lxc-snapshot /usr/bin/lxctl /usr/bin/lxc-wait
Re: контейнеры LXC
Добавлено: 06 дек 2015, 22:55
Olej
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ lxc-create --version
1.0.8
Но этого
окажется мало!
Код: Выделить всё
olej@nvidia /usr/share/lxc/config $ lxc-create -t ubuntu -n u1
lxc_container: utils.c: get_template_path: 1128 No such file or directory - bad template: ubuntu
lxc_container: lxccontainer.c: lxcapi_create: 1223 bad template: ubuntu
lxc_container: lxc_create.c: main: 274 Error creating container u1
Потому что сами
шаблоны, необходимые для создания контейнеров/зон с пакетом LXC не устанавливаются!
(я на это дело часа 2 убил
... как-то нигде не встречал)
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ apt show lxc-templates
Пакет: lxc-templates
Новый: да
Состояние: не установлен
Версия: 1.0.8-0ubuntu0.3
Приоритет: необязательный
Раздел: admin
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: i386
Размер в распакованном виде: 391 k
Зависимости: lxc (>= 0.8.0~rc1-4ubuntu43)
Рекомендует: busybox-static, cloud-image-utils | cloud-utils, debootstrap |
cdebootstrap, openssl, rsync, uuid-runtime, xz-utils
Предлагает: qemu-user-static
Повреждает: lxc (< 0.8.0~rc1-4ubuntu43)
Заменяет: lxc (< 0.8.0~rc1-4ubuntu43)
Описание: Linux Containers userspace tools (templates)
Containers are insulated areas inside a system, which have their own namespace
for filesystem, network, PID, IPC, CPU and memory allocation and which can be
created using the Control Group and Namespace features included in the Linux
kernel.
This package contains the templates.
Сайт: http://linuxcontainers.org
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ apt install lxc-templates
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Предлагаемые пакеты:
qemu-user-static
Рекомендуемые пакеты:
cloud-image-utils cloud-utils debootstrap cdebootstrap
НОВЫЕ пакеты, которые будут установлены:
lxc-templates
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 61 пакетов не обновлено.
Необходимо скачать 63,0 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 391 kB.
Получено:1 http://ftp.tu-chemnitz.de/pub/linux/ubuntu/ trusty-updates/main lxc-templates i386 1.0.8-0ubuntu0.3 [63,0 kB]
Получено 63,0 kБ за 0с (185 kБ/c)
Выбор ранее не выбранного пакета lxc-templates.
(Чтение базы данных … на данный момент установлено 239837 файлов и каталогов.)
Preparing to unpack …/lxc-templates_1.0.8-0ubuntu0.3_i386.deb ...
Unpacking lxc-templates (1.0.8-0ubuntu0.3) ...
Настраивается пакет lxc-templates (1.0.8-0ubuntu0.3) …
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ ls /usr/share/lxc/templates
lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-sshd lxc-ubuntu-cloud
lxc-altlinux lxc-busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-ubuntu
Re: контейнеры LXC
Добавлено: 06 дек 2015, 23:13
Olej
Olej писал(а):
Но этого окажется мало!
И этого ещё ему недостаточно:
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ sudo lxc-create -t ubuntu -n C1
'debootstrap' command is missing
lxc_container: lxccontainer.c: create_run_template: 1084 container creation template for C1 failed
lxc_container: lxc_create.c: main: 274 Error creating container C1
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ apt install debootstrap
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
debootstrap
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 61 пакетов не обновлено.
Необходимо скачать 29,8 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 233 kB.
Получено:1 http://ftp.tu-chemnitz.de/pub/linux/ubuntu/ trusty-updates/main debootstrap all 1.0.59ubuntu0.4 [29,8 kB]
Получено 29,8 kБ за 0с (56,2 kБ/c)
Выбор ранее не выбранного пакета debootstrap.
(Чтение базы данных … на данный момент установлено 239859 файлов и каталогов.)
Preparing to unpack …/debootstrap_1.0.59ubuntu0.4_all.deb ...
Unpacking debootstrap (1.0.59ubuntu0.4) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Настраивается пакет debootstrap (1.0.59ubuntu0.4) …
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ sudo lxc-create -t ubuntu -n C1
Checking cache download in /var/cache/lxc/precise/rootfs-i386 ...
Installing packages in template: ssh,vim,language-pack-en,language-pack-ru
Downloading ubuntu precise minimal ...
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 630239CC130E1A7FD81A27B140976EAF437D05B5)
...
I: Configuring ubuntu-minimal...
I: Configuring libc-bin...
I: Configuring resolvconf...
I: Configuring initramfs-tools...
I: Base system installed successfully.
Installing updates
...
обновлено 97, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 45,3 MБ архивов.
После данной операции, объём занятого дискового пространства уменьшится на 513 kB.
...
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
Как легко понять, вот это последнее дело - обстоятельное
, занимает некоторое время, а лог происходящего занимает 5-6 (?) страниц.
Re: контейнеры LXC
Добавлено: 07 дек 2015, 03:08
Olej
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ sudo lxc-info -n C1
Name: C1
State: STOPPED
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ sudo lxc-start -n C1 -d
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ sudo lxc-info -n C1
Name: C1
State: RUNNING
PID: 30425
CPU use: 0.26 seconds
BlkIO use: 9.61 MiB
Memory use: 12.36 MiB
KMem use: 0 bytes
Link: vethHDUWAD
TX bytes: 1018 bytes
RX bytes: 2.90 KiB
Total bytes: 3.89 KiB
Подключение:
Код: Выделить всё
olej@nvidia ~/2014_WORK/НАРОД/Anton/2013 $ sudo lxc-console -n C1
Ubuntu 12.04.5 LTS C1 tty1
C1 login: ubuntu
Password:
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-37-generic i686)
* Documentation: https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
...
Или:
Код: Выделить всё
olej@nvidia ~ $ sudo lxc-attach -n C1
root@C1:/# who
ubuntu lxc/tty1 2015-12-02 00:00
root@C1:/# uname -a
Linux C1 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:30:01 UTC 2014 i686 i686 i386 GNU/Linux
root@C1:/# whoami
root
root@C1:/# lsb_release -ircd
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
root@C1:/# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3e:0f:49:3b
inet addr:10.0.3.176 Bcast:10.0.3.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe0f:493b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:50 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8228 (8.2 KB) TX bytes:3044 (3.0 KB)
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Re: контейнеры LXC
Добавлено: 07 дек 2015, 03:13
Olej
Код: Выделить всё
olej@nvidia /media/olej $ sudo lxc-ls --fancy
NAME STATE IPV4 IPV6 AUTOSTART
------------------------------------
C1 STOPPED - - NO
olej@nvidia /media/olej $ sudo lxc-start -n C1 -d
olej@nvidia /media/olej $ sudo lxc-ls --fancy
NAME STATE IPV4 IPV6 AUTOSTART
------------------------------------------
C1 RUNNING 10.0.3.176 - NO
Re: контейнеры LXC
Добавлено: 09 дек 2015, 03:44
Olej
Клонируем контейнеры сколько угодно раз
:
olej@nvidia /var/lib $ sudo lxc-clone -o C1 -n C2
lxc_container: lxccontainer.c: lxcapi_clone: 2635 error: Original container (C1) is running
clone failed
Только остановленный контейнер!
Код: Выделить всё
olej@nvidia /var/lib $ sudo lxc-stop -n C1
olej@nvidia /var/lib $ sudo lxc-clone -o C1 -n C2
Created container C2 as copy of C1
Код: Выделить всё
nvidia lxc # ls -l /var/lib/lxc
итого 8
drwxrwx--- 3 root root 4096 Дек 1 23:44 C1
drwxrwx--- 3 root root 4096 Дек 9 02:39 C2
nvidia lxc # du -hs C1/rootfs/
764M C1/rootfs/
nvidia lxc # du -hs C2/rootfs/
764M C2/rootfs/
Код: Выделить всё
nvidia lxc # ls -l C2/rootfs/
итого 76
drwxr-xr-x 2 root root 4096 Дек 1 23:42 bin
drwxr-xr-x 2 root root 4096 Апр 19 2012 boot
drwxr-xr-x 4 root root 4096 Дек 9 02:39 dev
drwxr-xr-x 69 root root 4096 Дек 9 02:39 etc
drwxr-xr-x 3 root root 4096 Дек 1 23:44 home
drwxr-xr-x 12 root root 4096 Дек 2 01:47 lib
drwxr-xr-x 2 root root 4096 Дек 1 23:31 media
drwxr-xr-x 2 root root 4096 Апр 19 2012 mnt
drwxr-xr-x 2 root root 4096 Дек 1 23:31 opt
drwxr-xr-x 2 root root 4096 Апр 19 2012 proc
drwx------ 6 root root 4096 Дек 2 02:21 root
drwxr-xr-x 6 root root 4096 Дек 1 23:42 run
drwxr-xr-x 2 root root 4096 Дек 1 23:43 sbin
drwxr-xr-x 2 root root 4096 Мар 5 2012 selinux
drwxr-xr-x 2 root root 4096 Дек 1 23:31 srv
drwxr-xr-x 2 root root 4096 Апр 14 2012 sys
drwxrwxrwt 3 root root 4096 Дек 9 02:17 tmp
drwxr-xr-x 10 root root 4096 Дек 1 23:31 usr
drwxr-xr-x 11 root root 4096 Дек 9 02:39 var
контейнеры LXC
Добавлено: 09 дек 2015, 21:32
Olej
Интересное, как мне кажется, применение LXC контейнеров показано в теме
TOR сеть, где:
- в каждом LXC запущен свой комплект tor SOCKS 5 proxy и polopo HTTP proxy ...
- когда можно создать и запустить несколько (по числу LXC контейнеров) профилей FireFox ...
- когда каждый профиль FF будет использовать свою цепочку TOR.