Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Настройка Linux-контейнера с LXC на CentOS 7 / RHEL 7


 

Настройка Linux-контейнера с LXC на CentOS 7 / RHEL 7


Данная статья - вольный перевод автора данной статьи:
https://www.itzgeek.com/how-tos/linux/centos-how-tos/setup-linux-container-with-lxc-on-centos-7-rhel-7.html

При этом в нее добавлены примечания и некоторые команды и материалы уже автора-переводчика

Частично использовались материалы из:
https://sevo44.ru/lxc-ustanovka-na-centos-7/
https://github.com/lxc/lxd/issues/4393
https://discuss.linuxcontainers.org/t/lxc-2-1-has-been-released/487


Контейнеры 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


# systemctl stop NetworkManager
# systemctl disable NetworkManager
# systemctl restart network


Добавим правила в файрволл:
# firewall-cmd --get-active-zones
public
  interfaces: enp0s3 virbr0

# firewall-cmd --permanent --zone=external --add-port=22/tcp
# firewall-cmd --reload


= внешняя сеть =
# firewall-cmd --permanent --zone=external --change-interface=enp0s3

= внутренняя сеть =
# firewall-cmd --permanent --zone=internal --change-interface=virbr0


# firewall-cmd --get-active-zones
internal
  interfaces: virbr0
external
  interfaces: enp0s3


# firewall-cmd --zone=external --query-masquerade
yes


Настройки для контейнеров по умолчанию:
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

# cat /var/lib/lxc/centos_lxc/tmp_root_pass
Root-centos_lxc-xK2VSL

или же:

Сбросьте пароль 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 и поместите его в каталог ключей:

Спасибо: blog.toxa.de


Создайте контейнер Ubuntu, используя следующую команду:
# lxc-create -n ubuntu_lxc -t ubuntu

Из приведенного выше вывода видно, что пользователь по умолчанию - "ubuntu", а пароль для пользователя - "ubuntu"

Возьмите консоль контейнера Ubuntu с помощью следующей команды:
# lxc-start -n ubuntu_lxc -d
# lxc-console -n ubuntu_lxc


PS: я не проверял работоспособность сервера, кроме входа в систему, пожалуйста, пишите здесь по любым вопросам

Это все. Будьте общительными, поделитесь этим с друзьями

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект