Контейнеры Linux (LXC) - это легкий метод виртуализации на уровне операционной системы, который позволяет нам запускать несколько изолированных систем (контейнеров) Linux на одном хосте LXC не предоставляет все функции стандартного программного обеспечения для виртуализации, такого как VMware, VirtualBox и KVM, но предоставляет виртуальную среду с собственным ЦП, памятью, блоками ввода-вывода и сетью LXC создает среду Linux, максимально приближенную к стандартной установке Linux, но без необходимости отдельного ядра
LXC является свободным программным обеспечением и выпущено под лицензией GNU LGPLv2.1 +
Проект LXC спонсируется компанией Canonical Ltd, которая поддерживает Ubuntu OS
В этом руководстве я покажу вам, как установить LXC и как создавать и управлять LXC с помощью командной строки, а также с помощью веб-портала LXC
Предпосылки
LXC не доступен на базовом репозитории. Поэтому нам нужно добавить репозиторий EPEL на сервер с помощью следующей команды:
# yum -y install epel-release
Контейнеры LXC используют мостовую сеть для доступа к / из внешней сети, перед запуском контейнера мы должны создать сетевой мост на CentOS 7 / RHEL 7
Имя сетевого моста должно быть "virbr0":
# nmtui
Добавить Мост - Edit a connection - Add - Bridge - Profile name: virbr0 - Device: virbr0 - IPV4: manual 10.10.0.1/24 - Ok
Activate connection
Настройки для контейнеров по умолчанию:
cat /etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.flags = up
lxc.net.0.ipv4.address = 10.10.0.111/24
lxc.net.0.ipv4.gateway = 10.10.0.1
lxc.start.auto = 1
Установите LXC на CentOS 7
После того, как вы выполнили необходимые условия, пришло время установить LXC
Установите LXC и другие важные пакеты, необходимые для правильной работы контейнеров:
# yum -y install lxc lxc-templates libcap-devel libcgroup busybox wget bridge-utils lxc-extra
Выполните следующую команду, чтобы проверить, все ли нормально для запуска контейнеров:
# lxc-checkconfig
Создание контейнеров Linux
LXC поставляется с готовыми шаблонами для простой установки контейнеров
Вы можете перечислить доступные шаблоны, используя следующую команду:
# ls /usr/share/lxc/templates/
Чтобы создать контейнер, введите следующую команду:
lxc-create -n centos_lxc -t centos
Где:
-n <имя контейнера>
-t <шаблон>
После того, как вы ввели вышеупомянутую команду, LXC начнет создавать контейнер с именем "centos_lxc"
Обратите внимание на указанные выше данные для входа в систему, и вы должны требовать эту информацию для входа в контейнеры
Учетные данные контейнеров
Чтобы войти в контейнер (centos_lxc), используйте временный пароль root, который хранится в следующем месте
В нашем случае "Root-centos_lxc-xK2VSL" является корневым паролем centos_lxc
Сбросьте пароль root с помощью следующей команды:
# chroot /var/lib/lxc/centos_lxc/rootfs passwd
Запуск Linux-контейнеров
Настройки созданного контейнера будут находится тут:
vi /var/lib/lxc/centos_lxc/config
lxc.network.name = eth0
lxc.network.ipv4.address = 10.10.0.2/24
lxc.network.ipv4.gateway = 10.10.0.1
После создания контейнеров запустите его с помощью следующей команды, которая запускается в фоновом режиме:
# lxc-start -n centos_lxc -d
Теперь возьмите консоль контейнера, используя следующую команду:
Примечание: я использую "-t" с "0" для соединения контейнера с tty0, просто потому что tty1 не отвечал мне:
# lxc-console -n centos_lxc -t 0
Введите имя пользователя и пароль для входа в систему
Учетные данные можно найти в конце вывода при создании контейнера
Вы должны изменить пароль root при первом входе в систему
Введите имя пользователя и пароль для входа в систему
Учетные данные можно найти в конце вывода при создании контейнера
Вы должны изменить пароль root при первом входе в систему
После входа в систему вы можете выполнять всю работу в этом контейнере, как на обычном сервере Linux
Чтобы выйти из консоли контейнера, нажмите "Ctrl + a", а затем "q". Теперь вы вернетесь обратно в терминал хост-компьютера
Если вы хотите снова подключиться к контейнеру (контейнер все еще работает), выполните следующую команду:
# lxc-console -n centos_lxc -t 0
Работа с контейнерами Linux
Чтобы вывести список контейнеров на главном компьютере, используйте следующую команду:
# lxc-ls
Также перечислите контейнеры, которые в данный момент активны и работают на главном компьютере:
# lxc-ls --active
Поскольку у меня есть только один контейнер, который в данный момент запущен, поэтому вы можете увидеть одинаковый вывод для обеих команд.
Если вы хотите получить полную информацию о работающем контейнере, выполните следующую команду:
# lxc-info -n centos_lxc
Приведенная выше команда предоставляет вам подробную информацию (имя, состояние, IP-адрес, процессор, память, ввод-вывод и использование сети) контейнера "centos_lxc"
Вы также можете использовать IP-адрес для подключения к контейнерам вместо консоли LXC
Вы можете остановить работающий контейнер, используя команду "lxc-stop", используйте следующую команду, чтобы остановить контейнер "centos_lxc":
# lxc-stop -n centos_lxc
Клонирование контейнеров Linux
Клонирование контейнера из существующего контейнера
Запустите следующую команду, чтобы клонировать существующий контейнер centos_lxc в новый контейнер centos_lxc_clone:
Примечание. Вы должны остановить работающий контейнер перед началом клонирования:
# lxc-clone centos_lxc centos_lxc_clone Created container centos_lxc_clone as copy of centos_lxc
Проверьте, успешно ли создан контейнер:
# lxc-ls centos_lxc centos_lxc_clone
Вы можете начать работать с новым контейнером как обычно:
# lxc-start -n centos_lxc_clone -d
# lxc-console -n centos_lxc_clone -t 0
Выключите контейнер из консоли.
# poweroff
Снимок
Используйте следующие команды:
Примечание. Вы должны остановить контейнер, прежде чем делать снимок:
# lxc-stop -n centos_lxc_clone
Для демонстрации я делаю снимок centos_lxc_clone:
# lxc-snapshot -n centos_lxc_clone
Чтобы узнать, где сохраняется снимок, выполните следующую команду
# lxc-snapshot -L -n centos_lxc_clone snap0 (/var/lib/lxcsnaps/centos_lxc_clone) 2019:06:17 03:15:48
В Centos 7 снимки LXC хранятся в "/var/lib/lxcsnaps/"
Восстановление снимка
Чтобы восстановить контейнер из моментального снимка, используйте следующую команду:
# lxc-snapshot -r snap0 -n centos_lxc_clone
Удаление контейнеров
Чтобы полностью удалить контейнер, используйте следующую команду:
# lxc-destroy -n centos_lxc_clone
Запуск контейнера Ubuntu в CentOS 7
Я столкнулся с множеством проблем, когда пытался запустить контейнер Ubuntu на CentOS, смог запустить Ubuntu с помощью некоторых настроек, опубликованных на других сайтах
Установите следующие пакеты для контейнеров на основе Debian:
# yum -y install debootstrap perl
# cd /usr/sbin ; ln -sf debootstrap qemu-debootstrap
Запустите следующую команду, чтобы заменить зеркало Debian на зеркало ubuntu:
Спасибо: unix.stackexchange.com
Получите точный набор ключей Ubuntu и поместите его в каталог ключей: