Skip to main content

Установка 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

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

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-comymlpose.yml

Открываем этот файл

sudo nano docker-comymlpose.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.jpg