Установка Docker на Astra Linux SE 1.8.1
Сначала меняем репозитории в файле /etc/apt/sources.list
Для этого открываем файл:
sudo nano /etc/apt/sources.list
Закомментируем строку символом #, подобную этой (она видит репозитории только на вставляемом DVD):
deb cdrom:[OS Astra Linux 1.8.1.6 DVD]/ 1.8_x86-64 contrib main non-free non-free-firmware
Ниже вставляем следующие ссылки на репозитории:
# Основной репозиторий, включающий актуальное оперативное или срочное обновление
deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
# Расширенный репозиторий, соответствующий актуальному оперативному обновлению
deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
Обновляем пакеты:
sudo apt update
===================================================
Теперь можно устанавливать Docker. Он состоит из двух частей - непосредственно Docker, и Docker Compose.
Docker Compose предназначен для упрощения управления многоконтейнерными приложениями в Docker. С его помощью можно описать конфигурацию нескольких контейнеров, их взаимодействие и зависимости в одном файле docker-compose.yml
, что позволяет запускать, останавливать и масштабировать все контейнеры одной командой.
-----------
Полная инструкция установки доступна по ссылке https://wiki.astralinux.ru/pages/viewpage.action?pageId=158601444
Здесь же будет упрощённый вариант, к тому же в инструкции по ссылке нет сведений о замене репозиториев и установке Docker Compose.
------------
Устанавливаем сам Docker:
sudo apt install docker.io
Установка должна выполняться от имени пользователя, являющегося администратором системы (при включенном МКЦ - пользователя с высоким уровнем целостности). После установки Docker рекомендуется предоставить администратору право работать с контейнерами не используя sudo. Для этого пользователя нужно включить в группу docker:
sudo usermod -aG docker $USER
Аналогично в группу docker следует включить других пользователей, которые будут работать с docker.
Для начала действия включения пользователя в группу обычно рекомендуется перезапустить пользовательскую сессию. В целях тестирования актуализировать включение пользователя в группу можно следующими командами (команда действуют только на активный терминал, и для выполнения команды понадобится ввести пароль пользователя):
exec su - $USER
Проверяем установленную версию Docker:
docker -v
Должно быть так (зависит от версии):
Docker version 25.0.5~astra1, build 739b53fc 739f70c4
Это версия 2023 года, которая есть в репозиториях Astra, но она ещё актуальна.
---------------
Теперь нужно установить Docker Compose. Этот компонент распространяется как отдельно, так и в виде плагина для Docker. Сейчас всё больше предпочтения отдаётся плагину, так как он чаще обновляется и поддерживает более современные версии Docker. Тем не менее, в Astra Linux SE можно установить Docker Compose только в виде отдельного компонента (автономного пакета). Поэтому вводим такие команды:
Скачиваем и устанавливаем автономный пакет, наиболее актуальной версии.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
Делаем файл исполняемым
sudo chmod +x /usr/local/bin/docker-compose
Проверяем версию
docker-compose version
Docker Compose version v2.30.3
Запускаем поставляемый вместе с Docker тестовый контейнер, выводящий в терминал слова "Hello World".
sudo docker run hello-world
Вывод будет примерно таким:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:d211f485f2dd1dee407a80973c8f129f00d54604d2c90732e8e320e5038a0348
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
For more examples and ideas, visit:
https://docs.docker.com/get-started/
То, что там вначале есть слова "Unable to find" - ничего страшного. Просто Docker не нашёл образ контейнера на компьютере, поэтому скачал его с интернета.
-----------------
Далее проверим работу Docker Compose. Для этого временно установим веб-интерфейс для управления базами данных, который в данном варианте не очень полезен, но покажет работу Compose.
Создаём новый каталог:
sudo mkdir adminer
Переходим в этот каталог
cd adminer
Создаём файл docker-compose.yml
sudo touch docker-compose.yml
Открываем этот файл
sudo nano docker-compose.yml
Заполняем файл следующим кодом:
version: '3'
services:
adminer:
image: adminer
container_name: adminer
restart: unless-stopped
ports:
- 8080:8080
Строка 8080:8080 говорит о том, что пробрасывается порт 8080 из контейнера (число справа) на порт 8080 хостовой системы (число слева). Если нужно пробросить на другой порт хостовой системы, например 8081, запишем так: - 8081:8080
Теперь запускаем Docker Compose. Тут надо учесть, что команда для отдельного компонента (автономного пакета) такая:
sudo docker-compose up -d
Где docker-compose сама команда, up это запуск контейнера, а -d это указание, что контейнер запустится в фоновом режиме, освобождая терминал.
Если бы Docker Compose был в виде плагина, то команда была бы такая: sudo docker compose up -d
То есть между словами docker compose будет пробел, а не тире.
Итак, после запуска команды вывод будет примерно таким:
[+] Running 8/8
✔ adminer Pulled 38.6s
✔ 73226dab8db5 Pull complete 14.3s
✔ ed94e1c95a57 Pull complete 24.9s
✔ 884bce373183 Pull complete 26.7s
✔ 9a4cd7b75371 Pull complete 28.7s
✔ 574dfab7cda2 Pull complete 30.6s
✔ 798a45c9628c Pull complete 34.0s
✔ c82cd9b427d9 Pull complete 36.0s
[+] Running 2/2
✔ Network adminer_default Created 0.1s
✔ Container adminer Started
Это значит, что образ скачался, причём показано скачивание каждого слоя образа (Pull complete), и контейнер запустился (Container adminer Started). При этом создалась внутренняя сеть для контейнера (Network adminer Created).
Если к этому контейнеру подключать какие-то другие контейнеры, например, веб-сервер или базу данных, то указывая для тех контейнеров название внутренней сети, они будут все действовать совместно внутри этой сети.
---------------------
Теперь осталось проверить работу Docker Compose. Открываем браузер, вводим в адресную строку http://localhost:8080
И видим интерфейс программы Админер.
----------------------
Выходим из каталога adminer:
cd ..