LXC: различия между версиями
Нет описания правки |
м (→сеть) |
||
(не показано 27 промежуточных версий 13 участников) | |||
Строка 1: | Строка 1: | ||
lxc — реализация контейнеров Linux, вошедшая в ядро, начиная с 2.6.29. | lxc — реализация контейнеров Linux, вошедшая в ядро, начиная с 2.6.29<ref>на [[эльбрус/lxc|Эльбрусе]] работает начиная с ядра 4.9.76-elbrus-def-alt1.11.8</ref>. Не стоит путать с [[LXD]]. | ||
По применению доступно множество материалов, рекомендуется вики [http://xgu.ru/wiki/LXC xgu.ru]. | |||
http:// | |||
== Заметки на манжетах == | |||
Установка: | |||
# 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 | |||
=== сеть === | |||
==== пример конфигурации бриджа ==== | |||
''см. тж. [[Настройка сети в 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 | |||
== Ссылки == | |||
* [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] | |||
== Примечания == | |||
<references/> | |||
{{Category navigation|title=Виртуализация|category=Виртуализация|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
Ссылки
- lxc — нативные контейнеры Linux
- Infrastructure for container projects
- LXC on help.ubuntu.com
- LXC
- LXC: Kонтейнерные утилиты Linux
- Installing lxc-containers on Fedora hosts
- LXC on wiki xgu.ru
- LXC — Gentoo Wiki
- Управление контейнерами с LXD