24 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Docker образы для универсальной системы тестирования DevOpsLab
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
🐳 Обзор
Эта директория содержит Docker образы для различных операционных систем и компонентов, используемых в универсальной системе тестирования Ansible ролей. Все образы поддерживают multi-arch сборку (amd64, arm64, riscv64, ppc64le, s390x, 386, arm/v7, arm/v6) и автоматически публикуются в Docker Hub.
📁 Структура
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 с systemd
│   └── Dockerfile
├── astra-linux/           # Astra Linux 1.7 с systemd
│   └── Dockerfile
├── redos/                 # RED OS 9 с systemd
│   └── Dockerfile
├── rhel/                  # Red Hat Enterprise Linux 8 с systemd
│   └── Dockerfile
├── centos7/               # CentOS 7 с systemd
│   └── Dockerfile
├── centos8/               # CentOS 8 Stream с systemd
│   └── Dockerfile
├── centos9/               # CentOS 9 Stream с systemd
│   └── Dockerfile
├── alma/                  # AlmaLinux 8 с systemd
│   └── Dockerfile
├── rocky/                 # Rocky Linux 8 с systemd
│   └── Dockerfile
├── ubuntu20/              # Ubuntu 20.04 LTS (focal) с systemd
│   └── Dockerfile
├── ubuntu22/              # Ubuntu 22.04 LTS (jammy) с systemd
│   └── Dockerfile
├── ubuntu24/              # Ubuntu 24.04 LTS (noble) с systemd
│   └── Dockerfile
├── debian9/               # Debian 9 (stretch) с systemd
│   └── Dockerfile
├── debian10/              # Debian 10 (buster) с systemd
│   └── Dockerfile
├── debian11/              # Debian 11 (bullseye) с systemd
│   └── Dockerfile
├── debian12/              # Debian 12 (bookworm) с systemd
│   └── Dockerfile
└── README.md              # Этот файл
🚀 Доступные образы
1. ansible-controller
Базовый образ: ubuntu:22.04
Тег: inecs/ansible-lab:ansible-controller-latest
Описание: Ansible контроллер с предустановленными коллекциями и инструментами
Компоненты:
- Ansible Core с последними коллекциями
- Docker CLI для работы с контейнерами
- yq для работы с YAML
- jq для работы с JSON
Примечание: 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"
Предустановленные роли:
- geerlingguy.docker- управление Docker
- geerlingguy.kubernetes- управление Kubernetes
Переменные окружения:
DOCKER_HOST=unix:///var/run/docker.sock
ANSIBLE_FORCE_COLOR=1
ANSIBLE_STDOUT_CALLBACK=yaml
ANSIBLE_CALLBACKS_ENABLED=profile_tasks
Использование:
# Запуск контроллера
docker run -it --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(pwd):/workspace \
  -w /workspace \
  inecs/ansible-lab:ansible-controller-latest
# Выполнение Ansible команд
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 converge.yml
2. k8s
Базовый образ: ubuntu:22.04
Тег: inecs/ansible-lab:k8s-latest
Описание: 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 хоста.
3. Ubuntu
Ubuntu 20.04 (focal)
Базовый образ: ubuntu:20.04
Тег: inecs/ansible-lab:ubuntu20
Описание: Ubuntu 20.04 LTS с systemd
Компоненты:
- Ubuntu 20.04 LTS (Focal Fossa)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Ubuntu 22.04 (jammy) - основная версия
Базовый образ: ubuntu:22.04
Тег: inecs/ansible-lab:ubuntu-latest или inecs/ansible-lab:ubuntu22
Описание: Ubuntu 22.04 LTS с systemd
Компоненты:
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Ubuntu 24.04 (noble)
Базовый образ: ubuntu:24.04
Тег: inecs/ansible-lab:ubuntu24
Описание: Ubuntu 24.04 LTS с systemd
Компоненты:
- Ubuntu 24.04 LTS (Noble Numbat)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
Использование:
# Запуск Ubuntu контейнера
docker run -d --privileged \
  --name ubuntu-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:ubuntu22
4. Debian
Debian 9 (stretch)
Базовый образ: debian:stretch
Тег: inecs/ansible-lab:debian9
Описание: Debian 9 Stretch с systemd
Компоненты:
- Debian 9 (Stretch)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Debian 10 (buster)
Базовый образ: debian:buster
Тег: inecs/ansible-lab:debian10
Описание: Debian 10 Buster с systemd
Компоненты:
- Debian 10 (Buster)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Debian 11 (bullseye)
Базовый образ: debian:bullseye
Тег: inecs/ansible-lab:debian11
Описание: Debian 11 Bullseye с systemd
Компоненты:
- Debian 11 (Bullseye)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Debian 12 (bookworm) - основная версия
Базовый образ: debian:bookworm
Тег: inecs/ansible-lab:debian-latest или inecs/ansible-lab:debian12
Описание: Debian 12 Bookworm с systemd
Компоненты:
- Debian 12 (Bookworm)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
Использование:
# Запуск Debian контейнера
docker run -d --privileged \
  --name debian-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:debian12
5. RHEL (Red Hat Enterprise Linux)
Базовый образ: registry.access.redhat.com/ubi8/ubi
Тег: inecs/ansible-lab:rhel-latest
Описание: Red Hat Enterprise Linux 8 с systemd
Компоненты:
- RHEL 8 (Universal Base Image)
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
Использование:
# Запуск RHEL контейнера
docker run -d --privileged \
  --name rhel-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:rhel-latest
6. CentOS
CentOS 7
Базовый образ: centos:7
Тег: inecs/ansible-lab:centos7
Описание: CentOS 7 с systemd
Компоненты:
- CentOS 7
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
CentOS 8
Базовый образ: quay.io/centos/centos:stream8
Тег: inecs/ansible-lab:centos8
Описание: CentOS 8 Stream с systemd
Компоненты:
- CentOS 8 Stream
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
CentOS 9 (stream) - основная версия
Базовый образ: quay.io/centos/centos:stream9
Тег: inecs/ansible-lab:centos-latest или inecs/ansible-lab:centos9
Описание: CentOS Stream 9 с systemd
Компоненты:
- CentOS Stream 9
- systemd, Python 3, базовые утилиты
- Пользователь ansible с sudo правами
Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
Использование:
# Запуск CentOS контейнера
docker run -d --privileged \
  --name centos-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:centos9
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск CentOS контейнера
docker run -d --privileged \
  --name centos-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:centos-latest
7. alma
Базовый образ: almalinux:8
Тег: inecs/ansible-lab:alma-latest
Описание: AlmaLinux 8 с systemd и Docker
Компоненты:
- 
AlmaLinux 8 
- 
systemd для управления сервисами 
- 
Python 3 с pip 
- 
Пользователь ansible с sudo правами 
Установленные пакеты:
- Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск AlmaLinux контейнера
docker run -d --privileged \
  --name alma-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:alma-latest
8. rocky
Базовый образ: rockylinux:8
Тег: inecs/ansible-lab:rocky-latest
Описание: Rocky Linux 8 с systemd и Docker
Компоненты:
- 
Rocky Linux 8 
- 
systemd для управления сервисами 
- 
Python 3 с pip 
- 
Пользователь ansible с sudo правами 
Установленные пакеты:
- Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск Rocky Linux контейнера
docker run -d --privileged \
  --name rocky-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:rocky-latest
9. alt-linux
Базовый образ: altlinux/p9
Тег: inecs/ansible-lab:alt-linux-latest
Описание: ALT Linux 9 с systemd и Docker
Компоненты:
- 
ALT Linux 9 (Platform 9) 
- 
systemd для управления сервисами 
- 
Python 3 с pip 
- 
Пользователь ansible с sudo правами 
Установленные пакеты:
- Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск ALT Linux контейнера
docker run -d --privileged \
  --name alt-linux-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:alt-linux-latest
10. astra-linux
Базовый образ: astralinux/astra-1.7
Тег: inecs/ansible-lab:astra-linux-latest
Описание: Astra Linux 1.7 с systemd и Docker
Компоненты:
- 
Astra Linux 1.7 
- 
systemd для управления сервисами 
- 
Python 3 с pip 
- 
Пользователь ansible с sudo правами 
Установленные пакеты:
- Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск Astra Linux контейнера
docker run -d --privileged \
  --name astra-linux-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:astra-linux-latest
11. redos
Базовый образ: redos/redos:9
Тег: inecs/ansible-lab:redos-latest
Описание: RED OS 9 с systemd и Docker
Компоненты:
- 
RED OS 9 
- 
systemd для управления сервисами 
- 
Python 3 с pip 
- 
Пользователь ansible с sudo правами 
Установленные пакеты:
- Примечание: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск RED OS контейнера
docker run -d --privileged \
  --name redos-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:redos-latest
🔧 Управление образами
Сборка всех образов
# Сборка всех образов (multi-arch)
make docker build
# Сборка конкретного образа
make docker build-image IMAGE=ubuntu
# Полная пересборка с очисткой кеша
make docker rebuild
Отправка в Docker Hub
# Отправка всех образов
make docker push
# Загрузка всех образов
make docker pull
Очистка образов
# Очистка локальных образов
make docker clean
# Полная очистка Docker
make docker purge
Информация об образах
# Информация о собранных образах
make docker info
# Диагностика проблем
make docker diagnose
🏗️ Multi-Arch поддержка
Поддерживаемые архитектуры
| Архитектура | Описание | Статус | 
|---|---|---|
| linux/amd64 | Intel/AMD 64-bit | ✅ Поддерживается | 
| linux/arm64 | ARM 64-bit | ✅ Поддерживается | 
| linux/riscv64 | RISC-V 64-bit | ✅ Поддерживается | 
| linux/ppc64le | PowerPC 64-bit LE | ✅ Поддерживается | 
| linux/s390x | IBM Z 64-bit | ✅ Поддерживается | 
| linux/386 | Intel 32-bit | ✅ Поддерживается | 
| linux/arm/v7 | ARM 32-bit v7 | ✅ Поддерживается | 
| linux/arm/v6 | ARM 32-bit v6 | ✅ Поддерживается | 
Настройка builder'а
# Настройка multi-arch builder
make docker setup-builder
# Проверка builder'а
make docker diagnose
# Сброс builder'а при проблемах
make docker reset-builder
🚀 Использование в preset'ах
Пример preset'а с собственными образами
# molecule/presets/custom-images.yml
---
#description: Preset с собственными образами DevOpsLab
docker_network: labnet
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# Собственные образы
images:
  ubuntu: "inecs/ansible-lab:ubuntu-latest"
  debian: "inecs/ansible-lab:debian-latest"
  rhel: "inecs/ansible-lab:rhel-latest"
  centos: "inecs/ansible-lab:centos-latest"
  alma: "inecs/ansible-lab:alma-latest"
  rocky: "inecs/ansible-lab:rocky-latest"
  alt: "inecs/ansible-lab:alt-linux-latest"
  astra: "inecs/ansible-lab:astra-linux-latest"
  redos: "inecs/ansible-lab:redos-latest"
systemd_defaults:
  privileged: true
  command: "/sbin/init"
  volumes:
    - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
  tmpfs: ["/run", "/run/lock"]
  capabilities: ["SYS_ADMIN"]
hosts:
  - name: ubuntu1
    family: ubuntu
    groups: [web, frontend]
  - name: debian1
    family: debian
    groups: [web, frontend]
  - name: rhel1
    family: rhel
    groups: [database, backend]
  - name: centos1
    family: centos
    groups: [database, backend]
  - name: alma1
    family: alma
    groups: [monitoring]
  - name: rocky1
    family: rocky
    groups: [monitoring]
  - name: alt1
    family: alt
    groups: [security]
  - name: astra1
    family: astra
    groups: [security]
  - name: redos1
    family: redos
    groups: [security]
Тестирование с собственными образами
# Тестирование с собственными образами
make custom-images test full
# Проверка наличия образов
make custom-images check
# Сборка всех образов
make custom-images build
📊 Мониторинг и диагностика
Проверка образов
# Проверка размера образов
docker images | grep inecs/ansible-lab
# Проверка архитектур
docker manifest inspect inecs/ansible-lab:ubuntu-latest
# Проверка содержимого образа
docker run --rm inecs/ansible-lab:ubuntu-latest cat /etc/os-release
Логи сборки
# Подробные логи сборки
make docker build 2>&1 | tee build.log
# Логи конкретного образа
make docker build-image IMAGE=ubuntu 2>&1 | tee ubuntu-build.log
🐛 Troubleshooting
Проблемы с сборкой
- 
Builder не создается: make docker diagnose make docker reset-builder
- 
Образы не собираются: make docker clean make docker setup-builder make docker build
- 
Проблемы с multi-arch: make docker clean-builder make docker setup-builder
Проблемы с образами
- 
Образы не запускаются: # Проверка systemd docker run --rm --privileged inecs/ansible-lab:ubuntu-latest systemctl status # Проверка Docker docker run --rm --privileged inecs/ansible-lab:ubuntu-latest docker --version
- 
Проблемы с правами: # Проверка пользователя ansible docker run --rm inecs/ansible-lab:ubuntu-latest id ansible # Проверка sudo прав docker run --rm inecs/ansible-lab:ubuntu-latest sudo -l
📈 Производительность
Оптимизация сборки
# Использование кеша Docker
make docker build
# Очистка кеша при проблемах
make docker rebuild
Оптимизация образов
- Многоэтапная сборка для уменьшения размера
- Кеширование слоев для ускорения сборки
- Минимальные базовые образы для безопасности
- Оптимизированные зависимости для производительности
🔒 Безопасность
Безопасность образов
- Регулярные обновления базовых образов
- Минимальные права для пользователей
- Сканирование уязвимостей в CI/CD
- Подписанные образы для целостности
Лучшие практики
- Используйте конкретные теги вместо latest
- Регулярно обновляйте базовые образы
- Сканируйте образы на уязвимости
- Используйте multi-arch для совместимости
📚 Дополнительные ресурсы
Автор: Сергей Антропов
Сайт: https://devops.org.ru