- Создан совместимый образ Astra Linux для ARM64 на базе Debian - Добавлена команда make docker build-astra-arm64 для сборки ARM64 версии - Обновлена документация по Docker образам с информацией о ARM64 поддержке - Создан новый файл docs/arm64-support.md с подробным описанием ARM64 поддержки - Обновлен README.md с информацией о multi-arch поддержке - Добавлена информация о ALT Linux P9/P10 с поддержкой ARM64 Автор: Сергей Антропов Сайт: https://devops.org.ru
16 KiB
Docker образы DevOpsLab
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
🐳 Обзор
DevOpsLab использует предварительно собранные Docker образы для различных операционных систем с полной поддержкой systemd. Все образы поддерживают multi-arch сборку и автоматически публикуются в Docker Hub под namespace inecs/ansible-lab.
📁 Структура dockerfiles/
dockerfiles/
├── ansible-controller/ # Ansible контроллер
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── requirements.txt
│ └── requirements.yml
├── k8s/ # Kubernetes контроллер (Kind, kubectl, Helm, Istio)
│ └── Dockerfile
├── k8s-portforward/ # Port-forward контейнер (устаревший)
│ ├── Dockerfile
│ └── portforward-container.py
├── alt-linux/ # ALT Linux P9
├── astra-linux/ # Astra Linux 1.7
├── redos/ # RED OS 9
├── rhel/ # Red Hat Enterprise Linux 8
├── centos7/ # CentOS 7
├── centos8/ # CentOS 8
├── centos9/ # CentOS Stream 9
├── alma/ # AlmaLinux 8
├── rocky/ # Rocky Linux 8
├── ubuntu20/ # Ubuntu 20.04 LTS
├── ubuntu22/ # Ubuntu 22.04 LTS
├── ubuntu24/ # Ubuntu 24.04 LTS
├── debian9/ # Debian 9 Stretch
├── debian10/ # Debian 10 Buster
├── debian11/ # Debian 11 Bullseye
├── debian12/ # Debian 12 Bookworm
└── README.md # Документация по Dockerfiles
🚀 Доступные образы
ansible-controller
Базовый образ: ubuntu:22.04
Теги: inecs/ansible-lab:ansible-controller-latest
Платформы: linux/amd64, linux/arm64
Ansible контроллер с предустановленными коллекциями и инструментами для разработки и тестирования.
Компоненты:
- Ansible Core с последними коллекциями
- Docker CLI для работы с контейнерами
- yq для работы с YAML
- jq для работы с JSON
- Molecule для тестирования ролей
Примечание: Kubernetes инструменты (kubectl, Helm, Kind, Istio) были перенесены в отдельный образ k8s.
Предустановленные коллекции:
collections:
- name: community.docker
version: ">=3.0.0"
- name: community.general
version: ">=7.0.0"
- name: ansible.posix
version: ">=1.5.4"
- name: kubernetes.core
version: ">=2.0.0"
Использование:
# Запуск контроллера
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd):/workspace \
-w /workspace \
inecs/ansible-lab:ansible-controller-latest
# Выполнение команды
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd):/workspace \
-w /workspace \
inecs/ansible-lab:ansible-controller-latest \
ansible-playbook site.yml
k8s
Базовый образ: ubuntu:22.04
Теги: inecs/ansible-lab:k8s-latest
Платформы: linux/amd64, linux/arm64
Kubernetes контроллер с инструментами для работы с Kubernetes, Helm, Istio и Kind кластерами.
Компоненты:
- Docker CLI (20.10.24) для работы с контейнерами
- kubectl (1.34.1) для управления Kubernetes
- Helm (latest) для управления пакетами Kubernetes
- Kind (0.30.0) для локальных Kubernetes кластеров
- Istio CLI (1.22.1) для управления Service Mesh
- Python 3 с модулем yaml для выполнения скриптов
Использование:
# Создание Kind кластера
docker run -it --rm \
--name k8s-controller \
--network kind \
-v /var/run/docker.sock:/var/run/docker.sock:rw \
inecs/ansible-lab:k8s-latest \
kind create cluster --name lab
# Выполнение kubectl команд
docker exec k8s-controller kubectl get nodes
# Установка Helm релиза
docker exec k8s-controller helm install prometheus prometheus-community/kube-prometheus-stack
Примечание: Этот образ используется автоматически при выполнении make k8s команд. Контейнер запускается с именем k8s-controller и подключен к Docker daemon хоста.
Ubuntu
Базовые образы:
ubuntu:20.04→inecs/ansible-lab:ubuntu20-latestubuntu:22.04→inecs/ansible-lab:ubuntu22-latestubuntu:24.04→inecs/ansible-lab:ubuntu24-latest
Платформы: linux/amd64, linux/arm64
Ubuntu LTS с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты (curl, wget, git, vim, nano, htop, tree, jq)
- Примечание: Docker CE и Docker Compose не установлены (закомментированы в Dockerfile)
Использование:
docker run -d --privileged \
--name ubuntu-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:ubuntu22-latest
Debian
Базовые образы:
debian:9→inecs/ansible-lab:debian9-latestdebian:10→inecs/ansible-lab:debian10-latestdebian:11→inecs/ansible-lab:debian11-latestdebian:bookworm→inecs/ansible-lab:debian12-latest
Платформы: linux/amd64, linux/arm64
Debian с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты
- Примечание: Docker CE и Docker Compose не установлены
Использование:
docker run -d --privileged \
--name debian-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:debian12-latest
CentOS
Базовые образы:
centos:7→inecs/ansible-lab:centos7-latestquay.io/centos/centos:8→inecs/ansible-lab:centos8-latestquay.io/centos/centos:stream9→inecs/ansible-lab:centos9-latest
Платформы: linux/amd64, linux/arm64
CentOS с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты
- Примечание: Docker CE и Docker Compose не установлены
Использование:
docker run -d --privileged \
--name centos-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:centos9-latest
AlmaLinux
Базовый образ: almalinux:8
Тег: inecs/ansible-lab:alma-latest
Платформы: linux/amd64, linux/arm64
AlmaLinux 8 с systemd.
Rocky Linux
Базовый образ: rockylinux:8
Тег: inecs/ansible-lab:rocky-latest
Платформы: linux/amd64, linux/arm64
Rocky Linux 8 с systemd.
Red Hat Enterprise Linux
Базовый образ: registry.access.redhat.com/ubi8/ubi
Тег: inecs/ansible-lab:rhel-latest
Платформы: linux/amd64, linux/arm64
Red Hat Enterprise Linux 8 с systemd.
ALT Linux
Базовые образы:
altlinux/p9→inecs/ansible-lab:alt9-latestaltlinux/p10→inecs/ansible-lab:alt10-latest
Платформы: linux/amd64, linux/arm64
ALT Linux P9 и P10 с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты (curl, wget, nano, sudo)
Использование:
docker run -d --privileged \
--name alt-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:alt9-latest
Astra Linux
Базовые образы:
registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2→inecs/ansible-lab:astra-linux-latest(AMD64)debian:bookworm-slim→inecs/ansible-lab:astra-linux-arm64-latest(ARM64 совместимый)
Платформы: linux/amd64, linux/arm64
Astra Linux 1.7 с systemd. Для ARM64 используется совместимый образ на базе Debian.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Docker CE и Docker Compose
- yq для работы с YAML
- Основные утилиты (curl, wget, nano, sudo)
Особенности ARM64 версии:
- Эмулирует Astra Linux через настройку
/etc/os-release - Максимально совместим с оригинальным Astra Linux
- Поддерживает все необходимые пакеты и конфигурации
Использование:
# AMD64 версия (оригинальная)
docker run -d --privileged \
--name astra-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:astra-linux-latest
# ARM64 версия (совместимая)
docker run -d --privileged \
--name astra-arm64-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:astra-linux-arm64-latest
Сборка ARM64 версии:
# Специальная команда для сборки Astra Linux с поддержкой ARM64
make docker build-astra-arm64
RED OS
Базовый образ: registry.red-soft.ru/ubi7/ubi
Тег: inecs/ansible-lab:redos-latest
Платформы: linux/amd64 (ограничение базового образа)
RED OS 9 с systemd.
🔨 Сборка образов
Сборка всех образов
# Собрать все образы (multi-arch)
make docker build
# Пересборка с очисткой кеша
make docker rebuild
# Сборка конкретного образа
make docker build-image IMAGE=centos7
Поддерживаемые платформы
По умолчанию все образы собираются для следующих платформ:
linux/amd64- 64-bit x86linux/arm64- 64-bit ARM
Дополнительные платформы (опционально):
linux/riscv64- RISC-V 64-bitlinux/ppc64le- PowerPC 64-bit LElinux/s390x- IBM Zlinux/386- 32-bit x86linux/arm/v7- ARM v7linux/arm/v6- ARM v6
Тегирование
Все образы автоматически получают теги:
inecs/ansible-lab:<имя>-<версия>- версионированный тегinecs/ansible-lab:<имя>-latest- последняя версия
Например:
inecs/ansible-lab:centos9-9.0inecs/ansible-lab:centos9-latestinecs/ansible-lab:ubuntu22-22.04inecs/ansible-lab:ubuntu22-latest
📤 Публикация в Docker Hub
Требования
- Авторизация в Docker Hub:
docker login
- Настройка билд-ксер (buildx) для multi-arch:
make docker setup-builder
Публикация
# Публикация всех образов
make docker push
# Публикация конкретного образа
make docker build-image IMAGE=centos7
# (публикуется автоматически при сборке)
🧪 Использование в Molecule
Preset конфигурация
# molecule/presets/my-preset.yml
images:
ubuntu22: "inecs/ansible-lab:ubuntu22-latest"
centos9: "inecs/ansible-lab:centos9-latest"
debian12: "inecs/ansible-lab:debian12-latest"
hosts:
- name: web1
family: ubuntu22
groups: [web, test]
- name: db1
family: centos9
groups: [database, test]
Тестирование с preset
# Использование preset в тестах
MOLECULE_PRESET=my-preset make role test
# Или напрямую
make role test my-preset
🔧 Особенности образов
Поддержка systemd
Все образы настроены для работы с systemd в контейнере:
docker run -d --privileged \
--tmpfs /run --tmpfs /run/lock \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--cap-add SYS_ADMIN \
inecs/ansible-lab:ubuntu22-latest
Настройки по умолчанию
- Пользователь ansible: пароль
ansible, sudo без пароля - SSH доступ: включен для пользователя ansible
- systemd: multi-user.target по умолчанию
- Временные файловые системы:
/run,/run/lock - Volumes:
/sys/fs/cgroup
Docker внутри Docker
Все образы поддерживают запуск Docker внутри контейнера:
docker run -d --privileged \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:centos9-latest
📋 Матрица совместимости
| Образ | Платформы | systemd | Docker | Python 3 | Kubernetes Tools |
|---|---|---|---|---|---|
| ansible-controller | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| k8s | amd64, arm64 | ❌ | ✅ | ✅ | ✅ (kubectl, Helm, Kind, Istio) |
| ubuntu20/22/24 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| debian9/10/11/12 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| centos7/8/9 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| alma | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| rocky | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| rhel | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| alt9/alt10 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux-arm64 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| redos | amd64 | ✅ | ✅ | ✅ | ❌ |
🛠️ Управление образами
Проверка наличия образов
# Проверка локальных образов
docker images | grep inecs/ansible-lab
# Проверка в Molecule
make custom-images check
Обновление образов
# Загрузить свежие образы
make docker pull
# Пересобрать с обновлениями
make docker rebuild
# Полное обновление
make docker update
Очистка
# Удалить локальные образы
make docker clean
# Полная очистка
make docker purge
📚 Дополнительная информация
🔗 Полезные ссылки
- Docker Hub: https://hub.docker.com/r/inecs/ansible-lab
- DevOpsLab: https://devops.org.ru
- Документация: https://github.com/DevOpsLab/docs