Создание контейнеров Linux с использованием шаблонов
LXC предоставляет готовые шаблоны для простой установки контейнеров Linux. Шаблоны обычно находятся в пути к каталогу /usr/share/lxc/templates, но при новой установке мы не получим шаблоны, поэтому для загрузки шаблонов в локальной системе выполните следующую команду:
$ sudo apt install lxc-templates -y
Как только lxc-шаблоны будут успешно установлены, они будут доступны
$ sudo ls /usr/share/lxc/templates/
lxc-alpine lxc-centos lxc-fedora lxc-oci lxc-plamo lxc-sparclinux lxc-voidlinux
lxc-altlinux lxc-cirros lxc-fedora-legacy lxc-openmandriva lxc-pld lxc-sshd
lxc-archlinux lxc-debian lxc-gentoo lxc-opensuse lxc-sabayon lxc-ubuntu
lxc-busybox lxc-download lxc-local lxc-oracle lxc-slackware lxc-ubuntu-cloud
Давайте запустим контейнер, используя шаблон
Синтаксис: lxc-create -n <container_name> lxc -t <template_name>
$ sudo lxc-create -n Вашеимя_lxc -t ubuntu
………………………
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Current default time zone: 'Etc/UTC'
Local time is now: Fri Aug 2 11:46:42 UTC 2019.
Universal Time is now: Fri Aug 2 11:46:42 UTC 2019.
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
После создания полного шаблона мы можем войти в эту консоль, выполнив следующие шаги
$ sudo lxc-start -n ВАШЕИМЯ_lxc -d
$ sudo lxc-console -n ВАШЕИМЯ_lxc
Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Ubuntu 18.04.2 LTS ВАШЕИМЯ_lxc pts/0
shashi_lxc login: ubuntu
Password:
Last login: Fri Aug 2 12:00:35 UTC 2019 on pts/0
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-20-generic x86_64)
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ВАШЕИМЯ_lxc:~$ free -h
total used free shared buff/cache available
Mem: 3.9G 23M 3.8G 112K 8.7M 3.8G
Swap: 1.9G 780K 1.9G
ubuntu@ВАШЕИМЯ_lxc:~$ grep -c processor /proc/cpuinfo
1
ubuntu@ВАШЕИМЯ_lxc:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 7.4G 31G 20% /
ubuntu@ВАШЕИМЯ_lxc:~$
Теперь выйдите или выйдите из контейнера и вернитесь в окно входа в систему хост-машины. С помощью команды lxc-ls мы видим, что контейнер ВАШЕИМЯ-lxc создан.
$ sudo lxc-ls
ВАШЕИМЯ_lxc ВАШЕИМЯ
Команда «lxc-ls -f» предоставляет подробности с IP-адресом контейнера, и то же, что и ниже,
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
ВАШЕИМЯ_lxc RUNNING 0 - 10.0.3.190 - false
Команда « lxc-info -n <container_name> » предоставляет всю необходимую информацию, а также состояние, IP-адрес и т.д.
$ sudo lxc-info -n ВАШЕИМЯ_lxc
Name: ВАШЕИМЯ_lxc
State: RUNNING
PID: 6732
IP: 10.0.3.190
CPU use: 2.38 seconds
BlkIO use: 240.00 KiB
Memory use: 27.75 MiB
KMem use: 5.04 MiB
Link: vethQ7BVGU
TX bytes: 2.01 KiB
RX bytes: 9.52 KiB
Total bytes: 11.53 KiB
Как запустить, остановить, перезапустить и удалить контейнеры LXC
$ lxc-start -n <container_name>
$ lxc-stop -n <container_name>
$ lxc-destroy -n <container_name>
Операция клонирования LXC
Теперь основная операция клонирования будет выполняться на контейнере LXC. Следующие шаги выполняются
Как описано ранее, LXC предлагает функцию клонирования контейнера из существующего контейнера, выполнив следующую команду для клонирования существующего контейнера «ВАШЕИМЯ_lxc» в новый контейнер «ВАШЕИМЯ_lxc_clone».
Примечание: мы должны убедиться, что перед началом операции клонирования сначала остановлен существующий контейнер с помощью команды «lxc-stop».
$ sudo lxc-stop -n ВАШЕИМЯ_lxc
$ sudo lxc-copy -n ВАШЕИМЯ_lxc -N ВАШЕИМЯ_lxc_clone
$ sudo lxc-ls
ВАШЕИМЯ_lxc ВАШЕИМЯ_lxc_clone
Теперь запустите клонированный контейнер
$ sudo lxc-start -n ВАШЕИМЯ_lxc_clone
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
ВАШЕИМЯ_lxc STOPPED 0 - - - false
ВАШЕИМЯ_lxc_clone RUNNING 0 - 10.0.3.201 - false
С помощью вышеуказанного набора команд операция клонирования завершается, и создается новый клон «ВАШЕИМЯ_lxc_clone». Мы можем войти в эту консоль контейнера lxc с помощью следующих шагов:
$ sudo lxc-console -n ВАШЕИМЯ_lxc_clone
Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Ubuntu 18.04.2 LTS ВАШЕИМЯ_lxc pts/0
ВАШЕИМЯ_lxc login:
Конфигурация и команды LXC Network
Мы можем присоединиться к вновь созданному контейнеру, но для удаленного входа в этот контейнер с использованием SSH или любым другим способом нам необходимо внести некоторые минимальные изменения конфигурации, как описано ниже:
$ sudo lxc-attach -n ВАШЕИМЯ_lxc_clone
root@ВАШЕИМЯ_lxc:/#
root@ВАШЕИМЯ_lxc:/# useradd -m ВАШЕИМЯ
root@ВАШЕИМЯ_lxc:/# passwd ВАШЕИМЯ
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ВАШЕИМЯ_lxc:/#
Сначала установите сервер ssh с помощью следующей команды, чтобы можно было установить плавное соединение «ssh».
root@ВАШЕИМЯ_lxc:/# apt install openssh-server -y
Теперь получите IP-адрес существующего контейнера lxc, используя следующую команду:
root@ВАШЕИМЯ_lxc:/# ip addr show eth0|grep inet
inet 10.0.3.201/24 brd 10.0.3.255 scope global dynamic eth0
inet6 fe80::216:3eff:fe82:e251/64 scope link
root@ВАШЕИМЯ_lxc:/#
На хост-машине с новым окном консоли используйте следующую команду для подключения к этому контейнеру через ssh
ssh 10.0.3.201
ВАШЕИМЯ@10.0.3.201's password:
$
Теперь мы вошли в контейнер, используя сессию ssh.
Команды, связанные с процессом LXC
$ ps aux|grep lxc|grep -v grep
LXC snapshot
snapshot - это одна из основных операций, которая поможет сделать моментальный снимок изображения контейнера lxc. Эти же снимки могут быть использованы позже для дальнейшего использования.
$ sudo lxc-stop -n ВАШЕИМЯ_lxc ВАШЕИМЯ
$ sudo lxc-snapshot -n ВАШЕИМЯ_lxc
Путь к снимку можно найти с помощью следующей команды:
$ sudo lxc-snapshot -L -n ВАШЕИМЯ_lxc
snap0 (/var/lib/lxc/ВАШЕИМЯ_lxc/snaps) 2019:08:02 20:28:49
Контейнеры LXC, LinuX - одна из первых контейнерных технологий. Понимание концепций и изучение LXC поможет глубже понять любые другие контейнеры, такие как Docker Containers.