Показать статистику
0 голосов
от (1.7тыс. баллов)
Имеется система Убунту. Помогите с установкой контейнеров.
936 просмотров 1 ответов

1 Ответ

0 голосов
от (26.4тыс. баллов)

Чтобы установить LXD в систему Ubuntu (18.04 LTS), мы можем начать с установки LXD, используя команду apt ниже:

sudo apt update 
sudo apt install lxd -y

После установки LXD мы можем начать с его инициализации, как показано ниже (в большинстве случаев используются параметры по умолчанию)

sudo lxd init

После успешной инициализации LXD выполните приведенную ниже команду, чтобы проверить информацию

sudo lxc info | more

Используйте приведенную ниже команду для просмотра списка загруженных контейнеров  хосте

sudo lxc image list
+-------+-------------+--------+-------------+------+------+-------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+-------+-------------+--------+-------------+------+------+-------------+

Быстрый и простой способ запустить первый контейнер в Ubuntu 18.04 (или любой поддерживаемый вариант Ubuntu), используя следующую команду. Имя контейнера, которое вы предоставили, к примеру xxx

sudo lxc launch ubuntu:18.04 xxx
Creating xxx
Starting xxx

Чтобы перечислить, какие контейнеры LXC находятся в системе

sudo lxc list 
+--------+---------+-----------------------+-----------------------------------------------+------------+-----------+
|  NAME  |  STATE  |         IPV4          |                     IPV6                      |    TYPE    | SNAPSHOTS |
+--------+---------+-----------------------+-----------------------------------------------+------------+-----------+
| shashi | RUNNING | 10.122.140.140 (eth0) | fd42:49da:7c44:cebe:216:3eff:fea4:ea06 (eth0) | PERSISTENT | 0         |
+--------+---------+-----------------------+-----------------------------------------------+------------+-----------+

Другие команды управления контейнером для LXD перечислены ниже:

Примечание. В приведенных ниже примерах xxx - это имя вашего контейнера.

Как взять bash shell из вашего LXD Контейнера?

$ sudo lxc exec xxx bash

Как остановить, запустить и перезапустить контейнер LXD?

$ sudo lxc stop xxx
 sudo lxc list 
+--------+---------+------+------+------------+-----------+
|  NAME  |  STATE  | IPV4 | IPV6 |    TYPE    | SNAPSHOTS |
+--------+---------+------+------+------------+-----------+
| shashi | STOPPED |      |      | PERSISTENT | 0         |
+--------+---------+------+------+------------+-----------+
$ sudo lxc start xxx
$ sudo lxc restart xxx

Как удалить контейнер LXD?

$ sudo lxc stop xxx
$ sudo lxc delete xxx
$ sudo lxc list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+

Как сделать снимок контейнера LXD, а затем восстановить его?

Предположим, что у вас есть контейнер pkumar на основе изображения centos7, поэтому чтобы сделать snapshot, используйте следующее:

$ sudo lxc snapshot pkumar pkumar_snap0

Используйте команду ниже, чтобы проверить снимок

$ sudo lxc info pkumar | grep -i Snapshots -A2
Snapshots:
  pkumar_snap0 (taken at 2019/08/02 19:39 UTC) (stateless)

Используйте команду ниже, чтобы восстановить контейнер LXD из их снимка

Синтаксис:

$ lxc restore {container_name} {snapshot_name}
$ sudo lxc restore pkumar pkumar_snap0

Как удалить снимок контейнера LXD?

sudo lxc delete <имя контейнера/имя снимка>

Как установить ограничение памяти, процессора и диска на контейнере LXD?

Синтаксис для установки предела памяти:

# lxc config set <container_name> limits.memory <Memory_Size>KB/MB/GB

Синтаксис для установки лимита ЦП:

# lxc config set <container_name>  limits.cpu {Number_of_CPUs}

Синтаксис для установки ограничения диска:

# lxc config device set <container_name> root size <Size_MB/GB>

Примечание. Для установки ограничения диска (требуется файловая система btrfs или ZFS).

Давайте установим лимит на память и процессор на контейнере с помощью следующих команд:

sudo lxc config set ваше_имя limits.memory 256MB
sudo lxc config set ваше_имя limits.cpu 2

Установите и настройте контейнер LXC (команды и операции)

Чтобы установить lxc в вашей системе Ubuntu, используйте команду apt ниже:

$ sudo apt install lxc -y

В более ранней версии LXC использовалась команда « lxc-clone », а позже она устарела. Теперь команда « lxc-copy » широко используется для операции клонирования.

Примечание. Чтобы команда «lxc-copy» работала, используйте следующие шаги установки:

$ sudo apt install lxc1 -y
от (26.4тыс. баллов)
0

Создание контейнеров 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.

...