Как стать автором
Поиск
Написать публикацию
Обновить

Создание Docker-образа с Astra

Уровень сложностиПростой

История о том, как начинающему DevOps инженеру выдали первое задание

Не так давно я устроился на работу, и моё первое задание было не самое простое. Нужно было создать образ Astra, которого не было в registry astra, загрузить в собственный Docker Registry и настроить на нём особую конфигурацию RabbitMQ.

Я очень долго искал в интернете информацию, были различные методы, через монтирование точек, прямое преобразование vmdk в docker-image, и тому подобное. Но я смог придумать более простой и быстрый способ, который позволит вам настраивать образ под себя во время создания.

Подготавливаем "архив"

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

Для начала нам нужно создать два файла в которые мы напишем, какие директории включать, а какие исключать.

Создаем файл исключений:

sudo nano exclude.txt

И записываем туда следующие директории:

lib/modules
user/lib/libreoffice
user/lib/firefox
user/lib/firefox-addons
user/lib/firefox-esr
user/lib/thunderbird
user/share/doc/
user/share/libreoffice
user/share/libreoffice-astra
user/share/fonts
var/spool/libreoffice

Создаем файл включений:

sudo nano include.txt

И точно также записываем в него

bin
etc
lib
lib64
sbin
usr/bin
usr/include
usr/sbin
usr/share
usr/src
var

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

Создаем сам архив

Выполните в терминале

sudo tar czvf rootfc.tar.gz -X exclude.txt -C / -T include.txt

Где

  • tar - это команда, которая создает архив. Он изменяется каждой следующей буквой, каждая из которых объясняется ниже.

    • c - создать новый архив резервных копий.

    • v - подробный режим, tar будет печатать то, что он делает, на экране.

    • z - Сожмите файл резервной копии с помощью 'gzip', чтобы сделать его меньше.

    • f <имя_файла файла> - указывает, где хранить резервную копию, backup.tar.gz имя файла используется в данном примере. Он будет храниться в текущем рабочем каталоге, который вы установили при использовании команды cd.

  • rootfs.tar.gz - название архива (Можно задать любое .tar.gz)

  • -X - флаг который показывает, что мы исключаем директории из файла

  • - переносит наш архив в корневой каталог, чтобы не было ошибок и проблем с архивацией

  • -T - флаг который показывает, что мы включаем директории из файла

Это может занять некоторое время, у меня лично архивация была 5-7 минут

Переносим архив на Сервер с Docker Registry

Переносите любым удобным для вас приложением. Я лично использовал FilleZilla

Преобразуем архив в образ

cat rootfs.tar.gz | docker import - astra:latest

Команда cat весь архив выводит в консоль, а docker import весь вывод записывает в образ под именем astra:latest
- - указывает, что мы весь вывод записываем

Тегируем образ и пушим в Registry

docker tag astra:latest хост_машины:5000/my_vm_image_custom:latest

Таким образом задаём название для образа

Теперь можем отправить тегированный образ в наш Docker Registry

docker push хост_машины:5000/my_vm_image_custom:latest

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

curl http://хост_машины:5000/v2/_catalog

должен быть подобный вывод

{"repositories":["astra"]}

Забираем образ к себе на Windows

docker pull хост_машины:5000/название_образа

Заключение

Таким образом я показал, как можно легко и быстро создать свой собственный образ специфичной ОС, которого нет в общем DockerHUB или в локальном Docker Registry.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.