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 описано на странице: