LXC: различия между версиями

Материал из ALT Linux Wiki
(Добавление ссылки на LXD)
 
(не показано 14 промежуточных версий 3 участников)
Строка 1: Строка 1:
lxc — реализация контейнеров Linux, вошедшая в ядро, начиная с 2.6.29. Смотрите также [[LXD]].
lxc — реализация контейнеров Linux, вошедшая в ядро, начиная с 2.6.29<ref>на [[эльбрус/lxc|Эльбрусе]] работает начиная с ядра 4.9.76-elbrus-def-alt1.11.8</ref>. Не стоит путать с [[LXD]].


По применению доступно множество материалов, рекомендуется вики [http://xgu.ru/wiki/LXC xgu.ru].
== Заметки на манжетах ==
Установка:
Установка:
  apt-get install lxc
  # apt-get install lxc
 
Проверка:
# lxc-checkconfig
 
Подготовка (единожды):
# cd /var/lib/lxc
# touch config
# tar Jcf metadata.tar.xz config
# wget http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/images/cloud/x86_64/alt-p10-rootfs-sysvinit-x86_64.tar.xz
 
Создание пробного контейнера:
# cd /var/lib/lxc
# lxc-create -t local -n ''alt-p10-test'' -B dir -- --fstree ''alt-p10-rootfs-sysvinit-x86_64.tar.xz'' --metadata metadata.tar.xz
 
Запуск (по умолчанию понадобится поднятый <tt>[[#сеть|lxcbr0]]</tt>):
# lxc-start -n ''alt-p10-test''
 
Список:
# lxc-ls -f
 
Подключение:
# lxc-attach -n ''alt-p10-test''
 
Останов (извне; внутри должны работать команды {{cmd|shutdown}}/{{cmd|reboot}}/{{cmd|poweroff}}):
# lxc-stop -n ''alt-p10-test''
 
=== консоль ===
Вход в консоли:
# lxc-console -n ''alt-p10-test''
При диагностике вида
lxc-console: alt-p10-test: ../src/lxc/commands.c: lxc_cmd_get_tty_fd: 1200 Bad file descriptor - Denied access to tty
разрешите терминалы до (пере)запуска контейнера:
# cd /var/lib/lxc
# cat >> ''alt-p10-test''/config << EOF
lxc.pty.max = ''16''
lxc.tty.max = 1
EOF
# sed -i 's,^#1:234:,1:234:,' ''alt-p10-test''/rootfs/etc/inittab
и задайте пароль root внутри контейнера:
# lxc-start -n alt-p10-test
# lxc-attach ''alt-p10-test''
## passwd root


По применению доступно множество материалов, рекомендуется вики [http://xgu.ru/wiki/LXC xgu.ru].
=== сеть ===
==== пример конфигурации бриджа ====
''см. тж. [[Настройка сети в KVM#Публичный мост|статью по kvm на мосту]]''
 
Для [[etcnet|/etc/net]], имени бриджа по умолчанию <tt>lxcbr0</tt>, домена <tt>lxc.local</tt>, произвольно взятой сети <tt>172.16.15.0/24 </tt> за интерфейсом <tt>eth1</tt> с маршрутизатором по умолчанию на <tt>172.16.15.1</tt> и DNS-сервером там же:
# mkdir /etc/net/ifaces/lxcbr0/
# cd /etc/net/ifaces/lxcbr0/
# echo "''172.16.15.2/24''" >> ipv4address
# echo "default via ''172.16.15.1''" >> ipv4route
 
# cat >> options << EOF
TYPE=bri
HOST=''eth1''
ONBOOT=yes
DISABLED=no
BOOTPROTO=static
BRIDGE_OPTIONS="stp_state 0"
EOF
 
# cat >> resolv.conf << EOF
domain lxc.local
nameserver 172.16.15.1
#nameserver 77.88.8.8
EOF
 
подъём:
# ifup lxcbr0
 
==== в контейнере ====
 
Настраиваем любую подсистему конфигурации сетевых интерфейсов; например, для случая [[etcnet|/etc/net]] на eth0:
 
===== DHCP =====
<pre>
==> /etc/net/ifaces/eth0/options <==
TYPE=eth
BOOTPROTO=dhcp
</pre>
<!--
DISABLED=no
USE_IFPLUGD=yes
CONFIG_WIRELESS=no
CONFIG_IPV4=yes
NM_CONTROLLED=no
ONBOOT=yes
-->
===== статика =====
<pre>
==> /etc/net/ifaces/eth0/ipv4address <==
a.b.c.d/m
 
==> /etc/net/ifaces/eth0/ipv4route <==
default via a.b.c.g
 
==> /etc/net/ifaces/eth0/options <==
BOOTPROTO=static
ONBOOT=yes
 
==> /etc/net/ifaces/eth0/resolv.conf <==
search домены
domain домен
nameserver d.n.s.1
nameserver d.n.s.2
</pre>
 
=== диагностика ===
Проблемы запуска контейнера:
# lxc-start -F --logpriority DEBUG --logfile ''alt-p10-test.log'' -n ''alt-p10-test''
 
При отказе запуска и диагностике вида:
lxc-start: alt-p10-test: ../src/lxc/conf.c: lxc_setup_dev_console: 2028 Read-only file system - Failed to change console mode
lxc-start: alt-p10-test: ../src/lxc/conf.c: lxc_setup_console: 2188 Read-only file system - Failed to setup console
lxc-start: alt-p10-test: ../src/lxc/conf.c: lxc_setup: 4474 Failed to setup console
lxc-start: alt-p10-test: ../src/lxc/start.c: do_start: 1272 Failed to setup container "alt-p10-test"
проверьте, что никакая дрянь из состава {{pkg|lxc}} не испортила режим монтирования {{path|/dev}} или {{path|/dev/pts}}:
# mount | grep /dev
и при необходимости исправьте:
# mount -o remount,rw /dev/pts


Примечание: На Эльбрусе работает на ядре 4.9.76-elbrus-def-alt1.11.8
== Ссылки ==
* [http://habrahabr.ru/blogs/virtualization/74808/ lxc — нативные контейнеры Linux]
* [http://linuxcontainers.org/ Infrastructure for container projects]
* [http://help.ubuntu.com/community/LXC LXC on help.ubuntu.com]
* [http://lxc.teegra.net/ LXC]
* [http://www.ibm.com/developerworks/ru/library/l-lxc-containers/ LXC: Kонтейнерные утилиты Linux]
* [http://prefetch.net/blog/index.php/2009/06/21/installing-lxc-containers-on-fedora-hosts/ Installing lxc-containers on Fedora hosts]
* [http://xgu.ru/wiki/LXC LXC on wiki xgu.ru]
* [http://wiki.gentoo.org/wiki/LXC LXC — Gentoo Wiki]
* [http://habr.com/company/selectel/blog/308208/ Управление контейнерами с LXD]


=== Ссылки ===
== Примечания ==
[http://habrahabr.ru/blogs/virtualization/74808/ lxc — нативные контейнеры Linux]<br />
<references/>
[https://linuxcontainers.org/ Infrastructure for container projects]<br />
[https://help.ubuntu.com/community/LXC LXC on help.ubuntu.com]<br />
[http://lxc.teegra.net/ LXC]<br />
[http://www.ibm.com/developerworks/ru/library/l-lxc-containers/ LXC: Kонтейнерные утилиты Linux]<br />
[http://prefetch.net/blog/index.php/2009/06/21/installing-lxc-containers-on-fedora-hosts/ Installing lxc-containers on Fedora hosts]<br />
[http://xgu.ru/wiki/LXC LXC on wiki xgu.ru]<br />
[https://habr.com/company/selectel/blog/308208/ Управление контейнерами с LXD]<br />


[[Category:Admin]]
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}

Текущая версия от 21:28, 27 апреля 2024

lxc — реализация контейнеров Linux, вошедшая в ядро, начиная с 2.6.29[1]. Не стоит путать с LXD.

По применению доступно множество материалов, рекомендуется вики xgu.ru.

Заметки на манжетах

Установка:

# apt-get install lxc

Проверка:

# lxc-checkconfig

Подготовка (единожды):

# cd /var/lib/lxc
# touch config
# tar Jcf metadata.tar.xz config
# wget http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/images/cloud/x86_64/alt-p10-rootfs-sysvinit-x86_64.tar.xz

Создание пробного контейнера:

# cd /var/lib/lxc
# lxc-create -t local -n alt-p10-test -B dir -- --fstree alt-p10-rootfs-sysvinit-x86_64.tar.xz --metadata metadata.tar.xz

Запуск (по умолчанию понадобится поднятый lxcbr0):

# lxc-start -n alt-p10-test

Список:

# lxc-ls -f

Подключение:

# lxc-attach -n alt-p10-test

Останов (извне; внутри должны работать команды shutdown/reboot/poweroff):

# lxc-stop -n alt-p10-test

консоль

Вход в консоли:

# lxc-console -n alt-p10-test

При диагностике вида

lxc-console: alt-p10-test: ../src/lxc/commands.c: lxc_cmd_get_tty_fd: 1200 Bad file descriptor - Denied access to tty

разрешите терминалы до (пере)запуска контейнера:

# cd /var/lib/lxc
# cat >> alt-p10-test/config << EOF
lxc.pty.max = 16
lxc.tty.max = 1
EOF
# sed -i 's,^#1:234:,1:234:,' alt-p10-test/rootfs/etc/inittab

и задайте пароль root внутри контейнера:

# lxc-start -n alt-p10-test
# lxc-attach alt-p10-test
## passwd root

сеть

пример конфигурации бриджа

см. тж. статью по kvm на мосту

Для /etc/net, имени бриджа по умолчанию lxcbr0, домена lxc.local, произвольно взятой сети 172.16.15.0/24 за интерфейсом eth1 с маршрутизатором по умолчанию на 172.16.15.1 и DNS-сервером там же:

# mkdir /etc/net/ifaces/lxcbr0/
# cd /etc/net/ifaces/lxcbr0/
# echo "172.16.15.2/24" >> ipv4address
# echo "default via 172.16.15.1" >> ipv4route
# cat >> options << EOF
TYPE=bri
HOST=eth1
ONBOOT=yes
DISABLED=no
BOOTPROTO=static
BRIDGE_OPTIONS="stp_state 0"
EOF
# cat >> resolv.conf << EOF
domain lxc.local
nameserver 172.16.15.1
#nameserver 77.88.8.8
EOF

подъём:

# ifup lxcbr0

в контейнере

Настраиваем любую подсистему конфигурации сетевых интерфейсов; например, для случая /etc/net на eth0:

DHCP
==> /etc/net/ifaces/eth0/options <==
TYPE=eth
BOOTPROTO=dhcp
статика
==> /etc/net/ifaces/eth0/ipv4address <==
a.b.c.d/m

==> /etc/net/ifaces/eth0/ipv4route <==
default via a.b.c.g

==> /etc/net/ifaces/eth0/options <==
BOOTPROTO=static
ONBOOT=yes

==> /etc/net/ifaces/eth0/resolv.conf <==
search домены
domain домен
nameserver d.n.s.1
nameserver d.n.s.2

диагностика

Проблемы запуска контейнера:

# lxc-start -F --logpriority DEBUG --logfile alt-p10-test.log -n alt-p10-test

При отказе запуска и диагностике вида:

lxc-start: alt-p10-test: ../src/lxc/conf.c: lxc_setup_dev_console: 2028 Read-only file system - Failed to change console mode
lxc-start: alt-p10-test: ../src/lxc/conf.c: lxc_setup_console: 2188 Read-only file system - Failed to setup console
lxc-start: alt-p10-test: ../src/lxc/conf.c: lxc_setup: 4474 Failed to setup console
lxc-start: alt-p10-test: ../src/lxc/start.c: do_start: 1272 Failed to setup container "alt-p10-test"

проверьте, что никакая дрянь из состава lxc не испортила режим монтирования /dev или /dev/pts:

# mount | grep /dev

и при необходимости исправьте:

# mount -o remount,rw /dev/pts

Ссылки

Примечания

  1. на Эльбрусе работает начиная с ядра 4.9.76-elbrus-def-alt1.11.8