Files
DevOpsLab/dockerfiles/README.md
Сергей Антропов 82afa9e981
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
docs: исправлен dockerfiles/README.md - убрано упоминание Docker CE
- Docker CE и Docker Compose не установлены в базовых образах
- Удалены устаревшие упоминания Docker пакетов
- Добавлены примечания о том, что Docker не установлен
- Документация приведена в соответствие с реальным состоянием Dockerfiles

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-26 01:30:10 +03:00

682 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker образы для универсальной системы тестирования AnsibleLab
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 2.0.0
## 🐳 Обзор
Эта директория содержит Docker образы для различных операционных систем и компонентов, используемых в универсальной системе тестирования Ansible ролей. Все образы поддерживают multi-arch сборку (amd64, arm64, riscv64, ppc64le, s390x, 386, arm/v7, arm/v6) и автоматически публикуются в Docker Hub.
## 📁 Структура
```
dockerfiles/
├── ansible-controller/ # Ansible контроллер с предустановленными коллекциями
├── alt-linux/ # ALT Linux с systemd
├── astra-linux/ # Astra Linux с systemd
├── redos/ # RED OS с systemd
├── rhel/ # Red Hat Enterprise Linux с systemd
├── centos/ # CentOS Stream с systemd
├── alma/ # AlmaLinux с systemd
├── rocky/ # Rocky Linux с systemd
├── ubuntu/ # Ubuntu с systemd
├── debian/ # Debian с systemd
└── README.md # Документация
```
## 🚀 Доступные образы
### 1. ansible-controller
**Базовый образ:** `ubuntu:22.04`
**Тег:** `inecs/ansible-lab:ansible-controller-latest`
**Описание:** Ansible контроллер с предустановленными коллекциями и инструментами
#### Компоненты:
- **Ansible Core** с последними коллекциями
- **Docker CLI** для работы с контейнерами
- **kubectl** для управления Kubernetes
- **Helm** для управления пакетами Kubernetes
- **Kind** для локального Kubernetes
- **yq** для работы с YAML
- **jq** для работы с JSON
#### Предустановленные коллекции:
```yaml
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
#### Переменные окружения:
```bash
DOCKER_HOST=unix:///var/run/docker.sock
ANSIBLE_FORCE_COLOR=1
ANSIBLE_STDOUT_CALLBACK=yaml
ANSIBLE_CALLBACKS_ENABLED=profile_tasks
```
#### Использование:
```bash
# Запуск контроллера
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 site.yml
```
### 2. ubuntu
**Базовый образ:** `ubuntu:22.04`
**Тег:** `inecs/ansible-lab:ubuntu-latest`
**Описание:** Ubuntu 22.04 LTS с systemd и Docker
#### Компоненты:
- **Ubuntu 22.04 LTS** (Jammy Jellyfish)
- **systemd** для управления сервисами
- **Python 3** с pip
- **Пользователь ansible** с sudo правами
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
#### Установленные пакеты:
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
```bash
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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:ubuntu-latest
# Подключение к контейнеру
docker exec -it ubuntu-test bash
```
### 3. debian
**Базовый образ:** `debian:bookworm`
**Тег:** `inecs/ansible-lab:debian-latest`
**Описание:** Debian 12 (Bookworm) с systemd и Docker
#### Компоненты:
- **Debian 12** (Bookworm)
- **systemd** для управления сервисами
- **Python 3** с pip
- **Пользователь ansible** с sudo правами
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
#### Установленные пакеты:
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
```bash
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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:debian-latest
```
### 4. rhel
**Базовый образ:** `registry.access.redhat.com/ubi8/ubi`
**Тег:** `inecs/ansible-lab:rhel-latest`
**Описание:** Red Hat Enterprise Linux 8 с systemd и Docker
#### Компоненты:
- **RHEL 8** (Universal Base Image)
- **systemd** для управления сервисами
- **Python 3** с pip
- **Пользователь ansible** с sudo правами
#### Установленные пакеты:
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
```bash
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
### 5. centos
**Базовый образ:** `quay.io/centos/centos:stream9`
**Тег:** `inecs/ansible-lab:centos-latest`
**Описание:** CentOS Stream 9 с systemd и Docker
#### Компоненты:
- **CentOS Stream 9**
- **systemd** для управления сервисами
- **Python 3** с pip
- **Пользователь ansible** с sudo правами
#### Установленные пакеты:
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
```bash
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
### 6. 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)
```bash
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
### 7. 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)
```bash
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
### 8. 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)
```bash
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
### 9. 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)
```bash
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
### 10. 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)
```bash
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
```
#### Настройки systemd:
```bash
systemctl set-default multi-user.target
```
#### Использование:
```bash
# Запуск 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
```
## 🔧 Управление образами
### Сборка всех образов
```bash
# Сборка всех образов (multi-arch)
make docker build
# Сборка конкретного образа
make docker build-image IMAGE=ubuntu
# Полная пересборка с очисткой кеша
make docker rebuild
```
### Отправка в Docker Hub
```bash
# Отправка всех образов
make docker push
# Загрузка всех образов
make docker pull
```
### Очистка образов
```bash
# Очистка локальных образов
make docker clean
# Полная очистка Docker
make docker purge
```
### Информация об образах
```bash
# Информация о собранных образах
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'а
```bash
# Настройка multi-arch builder
make docker setup-builder
# Проверка builder'а
make docker diagnose
# Сброс builder'а при проблемах
make docker reset-builder
```
## 🚀 Использование в preset'ах
### Пример preset'а с собственными образами
```yaml
# molecule/presets/custom-images.yml
---
#description: Preset с собственными образами AnsibleLab
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]
```
### Тестирование с собственными образами
```bash
# Тестирование с собственными образами
make custom-images test full
# Проверка наличия образов
make custom-images check
# Сборка всех образов
make custom-images build
```
## 📊 Мониторинг и диагностика
### Проверка образов
```bash
# Проверка размера образов
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
```
### Логи сборки
```bash
# Подробные логи сборки
make docker build 2>&1 | tee build.log
# Логи конкретного образа
make docker build-image IMAGE=ubuntu 2>&1 | tee ubuntu-build.log
```
## 🐛 Troubleshooting
### Проблемы с сборкой
1. **Builder не создается:**
```bash
make docker diagnose
make docker reset-builder
```
2. **Образы не собираются:**
```bash
make docker clean
make docker setup-builder
make docker build
```
3. **Проблемы с multi-arch:**
```bash
make docker clean-builder
make docker setup-builder
```
### Проблемы с образами
1. **Образы не запускаются:**
```bash
# Проверка systemd
docker run --rm --privileged inecs/ansible-lab:ubuntu-latest systemctl status
# Проверка Docker
docker run --rm --privileged inecs/ansible-lab:ubuntu-latest docker --version
```
2. **Проблемы с правами:**
```bash
# Проверка пользователя ansible
docker run --rm inecs/ansible-lab:ubuntu-latest id ansible
# Проверка sudo прав
docker run --rm inecs/ansible-lab:ubuntu-latest sudo -l
```
## 📈 Производительность
### Оптимизация сборки
```bash
# Использование кеша Docker
make docker build
# Очистка кеша при проблемах
make docker rebuild
```
### Оптимизация образов
- **Многоэтапная сборка** для уменьшения размера
- **Кеширование слоев** для ускорения сборки
- **Минимальные базовые образы** для безопасности
- **Оптимизированные зависимости** для производительности
## 🔒 Безопасность
### Безопасность образов
- **Регулярные обновления** базовых образов
- **Минимальные права** для пользователей
- **Сканирование уязвимостей** в CI/CD
- **Подписанные образы** для целостности
### Лучшие практики
1. **Используйте конкретные теги** вместо `latest`
2. **Регулярно обновляйте** базовые образы
3. **Сканируйте образы** на уязвимости
4. **Используйте multi-arch** для совместимости
## 📚 Дополнительные ресурсы
- [Docker Multi-Arch Build](https://docs.docker.com/buildx/working-with-buildx/)
- [Ansible Collections](https://docs.ansible.com/ansible/latest/collections_guide/index.html)
- [Molecule Documentation](https://molecule.readthedocs.io/)
- [Systemd in Containers](https://systemd.io/CONTAINER_INTERFACE/)
---
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru