MyTetra Share
Делитесь знаниями!
Как установить контейнеры LXD / LXC в Ubuntu ?
Время создания: 14.01.2021 20:10
Автор: alensav
Текстовые метки: Как установить контейнеры LXD / LXC в Ubuntu ?
Раздел: MyTetra - Ubuntu_Command
Запись: alensav/MyTetra2/main/base/1610644205ejjav7k3n8/text.html на raw.githubusercontent.com

Как установить контейнеры LXD / LXC в Ubuntu ?

0

спросил 01 Дек, 19 от Boriss (1тыс. баллов)

Имеется система Убунту. Помогите с установкой контейнеров.

  • lxd
  • lxc
  • ubuntu

136 просмотров 1 ответов

1 Ответ

0

ответил 22 Март, 20 от s_v_e (19.1тыс. баллов)

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

sudo apt update

sudo apt install lxd -y

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

sudo lxd init

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

sudo lxc info | more

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

q+-------+-------------+--------+-------------+------+------+-------------+

| 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

оставил комментарий 22 Март, 20 от s_v_e (19.1тыс. баллов)

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 deeeeeexketails.

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 kkkkkkk

ВАШЕИМЯ_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.

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования