Docker#

Docker — это одновременно платформа и технология для контейнеризации. Она позволяет создавать контейнеры и управлять ими для развертывания и доставки кода на целевую систему.

Приложение, развернутое с помощью Docker, будет работать одинаково в любой системе, где он установлен. Для этого требуется создавать контейнер, в котором будет содержатся весь код приложения с зависимостями и среда выполнения. При запуске Docker изолирует приложения друг от друга и от хостовой системы, что обеспечивает высокий уровень безопасности и предотвращает конфликты зависимостей.

Основные пакеты

Пакет

Версия

Репозиторий

Описание

docker.io

25.0.5.astra2+ci3

installation

Среда выполнения

Дополнительные пакеты

Пакет

Версия

Репозиторий

Описание

docker-compose

1.29.2-3+b1

installation

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

docker-compose-v2

25.0.5.astra2+ci3

installation

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

docker-buildx

25.0.5.astra2+ci3

installation

Cборка Docker-образов

Примечание

Пакет Docker Desktop не доступен из репозиториев Astra Linux, его установка аналогична установке на Debian совместимой версии (подробнее см. по ссылке).

Установка#

Docker в Astra Linux Special Edition 1.8 поддерживает два режима работы:

  • привилегированный режим - выполнение службы контейнеризации docker с правами суперпользователя;

  • непривилегированный режим (рекомендуемый) - выполнение службы контейнеризации docker в пользовательском пространстве имён.

    При использовании этого режима:

    • служба контейнеризации работает как суперпользователь только с точки зрения приложения в контейнере;

    • служба контейнеризации и контейнеры не получают прав суперпользователя в хостовой ОС;

Подробнее об особенностях и режимах работы можно посмотреть в статье “Установка и администрирование Docker в Astra Linux Special Edition”.

Привилегированный режим#

Для установки Docker следует перейти в интерфейс командной строки и выполнить:

Пункт 1#

  • установить пакет:

sudo apt install docker.io

Пункт 2#

Примечание

После установки можно добавить пользователя в группу docker, что позволит работать с Docker без использования sudo.

  • для включения пользователя в группу docker выполнить команду:

sudo usermod -aG docker <имя_пользователя>
  • текущего пользователя можно включить в группу командой:

sudo usermod -aG docker $USER

Совет

Для применения действия необходимо выйти из текущей сессии пользователя и зайти повторно.

Пункт 3#

  • для просмотра информации о версии используется команда:

docker --version

Пункт 4#

  • для проверки работы запустим образ hello-world (минимальный образ, предназначенный для подтверждения корректности установки Docker) командой:

docker run hello-world

При успешной работе Docker будет выведено подтверждающее сообщение или строка с информацией о типе ошибки.

Примечание

Для выполнения команды выше требуется подключения к интернету для загрузки тестового образа.

Пункт 5#

  • общие сведения об установленных образах и запущенных процессах Docker можно посмотреть командой:

docker info

Непривилегированный (rootless) режим#

Важно

Данный режим является рекомендованным к применению. Режим поддерживается в обновлениях Astra Linux, содержащих Docker версии 20.10 и выше. Режим не поддерживается при использовании hardened ядра ОС.

Для использования Docker в rootless режиме следует:

Пункт 1#

  • установить пакет rootless-helper-astra:

sudo apt install rootless-helper-astra

Примечание

При выполнении команды выше если ранее не был установлен пакет docker.io, он установится автоматически.

Пункт 2#

  • включить пользовательские службы Docker для пользователей, которые будут использовать контейнеры Docker в rootless режиме:

sudo systemctl start rootless-docker@<имя_пользователя>@<метка_безопасности>

Примечание

Где <метка_безопасности> - метка безопасности, с которой должна быть запущена служба, например, нулевая метка 0:0:0:0.

Метка безопасности при этом не может превышать максимальную метку безопасности пользователя.

Если метка не указана явно, то будет использована метка безопасности текущей пользовательской сессии.

Пункт 3#

  • при необходимости, разрешить автоматический запуск этих служб:

sudo systemctl enable rootless-docker@<имя_пользователя>@<метка_безопасности>

Примечание

Дальнейшее использование Docker пользователями производится с помощью команды rootlessenv.

При запуске без параметров, эта команда предоставит пользователю командную оболочку, в которой пользователь сможет выполнять команды Docker от своего имени.

При запуске с параметрами, команда rootlessenv попытается интерпретировать указанные параметры как стандартные команды Docker, и выполнить их в пользовательском окружении.

Все данные при этом будут сохраняться в домашнем каталоге пользователя.

Пункт 4#

  • для просмотра информации о версии используется команда:

rootlessenv docker --version

Пункт 5#

  • для проверки работы запустим образ hello-world (минимальный образ, предназначенный для подтверждения корректности установки Docker) командой:

rootlessenv docker run hello-world

При успешной работе Docker будет выведено подтверждающее сообщение или строка с информацией о типе ошибки.

Примечание

Для выполнения команды выше требуется подключения к интернету для загрузки тестового образа.

Пункт 6#

  • общие сведения об установленных образах и запущенных процессах Docker можно посмотреть командой:

rootlessenv docker info

Основные команды#

Дополнительная информация по основным командам доступна на странице

Docker образы для разработки#

Для разработки предложены следующие типы докер образов ALSE (подробную информацию см. по ссылке):

  • Standard – базовая ОС Astra Linux Special Edition и стандартные утилиты из базовой системы.

  • Multi-service (init) – базовая ОС Astra Linux Special Edition с системой инициализации systemd.

  • Service – базовая ОС Astra Linux Special Edition с установленным сетевым сервисом.

  • Dev – базовая ОС Astra Linux Special Edition и окружение для одного из языков программирования.

Поддерживаются следующие языки программирования (версии языков соответствуют версиям из ОС):

  • C++;

  • Erlang;

  • Go;

  • NodeJS;

  • OpenJDK;

  • Perl;

  • PHP;

  • Python;

  • Ruby;

  • Rust.

Поддерживаются следующие сетевые сервисы:

  • Apache2;

  • HaProxy;

  • MariaDB;

  • Memcached;

  • MySQL;

  • PostgreSQL;

  • RabbitMQ;

  • Redis.

Образы доступны для скачивания по ссылке в разделе astra.

Привилегированный режим#

Ограничения работы Docker в привилегированном режиме.

Пункт 1#

  • для загрузки базового образа Astra Linux Special Edition 1.8 необходимо ввести команду:

docker pull registry.astralinux.ru/library/astra/ubi18:latest

Пункт 2#

  • для запуска базового образа Astra Linux Special Edition 1.8 c доступом к командной оболочке внутри контейнера необходимо выполнить команду:

docker run -it registry.astralinux.ru/library/astra/ubi18:latest /bin/bash

Пункт 3#

  • для загрузки образа с Astra Linux Special Edition 1.8 и окружением python нужно выполнить команду:

docker pull registry.astralinux.ru/library/astra/ubi18-python311:latest

Пункт 4#

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

docker run -it registry.astralinux.ru/library/astra/ubi18-python311:latest

Непривилегированный (rootless) режим#

Пункт 1#

  • для загрузки базового образа Astra Linux Special Edition 1.8 необходимо ввести команду:

rootlessenv docker pull registry.astralinux.ru/library/astra/ubi18:latest

Пункт 2#

  • для запуска базового образа Astra Linux Special Edition 1.8 c доступом к командной оболочке внутри контейнера необходимо выполнить команду:

docker run -it registry.astralinux.ru/library/astra/ubi18:latest /bin/bash

Пункт 3#

  • для загрузки образа с Astra Linux Special Edition 1.8 и окружением python нужно выполнить команду:

rootlessenv docker pull registry.astralinux.ru/library/astra/ubi18-python311:latest

Пункт 4#

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

rootlessenv docker run -it registry.astralinux.ru/library/astra/ubi18-python311:latest

Создание собственного образа#

Докер образы представляют собой исполняемый пакет, содержащий все необходимое для запуска приложения: код, среду выполнения, библиотеки, переменные окружения и файлы конфигурации. Использование собственных образов приложений имеет ряд преимуществ при разработке. Ниже предложены два метода создания образов:

1. Создание образа из chroot-окружения (подробнее см. в статье Создание собственного образа Astra Linux для использования в Docker.

1. Создание и модификация образа с помощью докерфайла (подробнее см. в статье Установка и администрирование Docker в ALSE.

Docker-compose#

Устарел, но сохраняется для обратной совместимости.

Описание работы с docker-compose описано на странице:

Docker-compose-v2#

Современная, более быстрая и функциональная версия docker-compose.

Описание работы с docker-compose-v2 описано на странице: