- Создан совместимый образ 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
515 lines
16 KiB
Markdown
515 lines
16 KiB
Markdown
# 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`.
|
||
|
||
#### Предустановленные коллекции:
|
||
```yaml
|
||
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"
|
||
```
|
||
|
||
#### Использование:
|
||
```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
|
||
|
||
# Выполнение команды
|
||
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 для выполнения скриптов
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Создание 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-latest`
|
||
- `ubuntu:22.04` → `inecs/ansible-lab:ubuntu22-latest`
|
||
- `ubuntu: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)
|
||
|
||
#### Использование:
|
||
```bash
|
||
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-latest`
|
||
- `debian:10` → `inecs/ansible-lab:debian10-latest`
|
||
- `debian:11` → `inecs/ansible-lab:debian11-latest`
|
||
- `debian:bookworm` → `inecs/ansible-lab:debian12-latest`
|
||
|
||
**Платформы:** linux/amd64, linux/arm64
|
||
|
||
Debian с systemd.
|
||
|
||
#### Компоненты:
|
||
- systemd для управления сервисами
|
||
- Python 3 с pip
|
||
- Пользователь ansible с sudo правами
|
||
- Основные утилиты
|
||
- **Примечание**: Docker CE и Docker Compose не установлены
|
||
|
||
#### Использование:
|
||
```bash
|
||
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-latest`
|
||
- `quay.io/centos/centos:8` → `inecs/ansible-lab:centos8-latest`
|
||
- `quay.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 не установлены
|
||
|
||
#### Использование:
|
||
```bash
|
||
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-latest`
|
||
- `altlinux/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)
|
||
|
||
#### Использование:
|
||
```bash
|
||
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
|
||
- Поддерживает все необходимые пакеты и конфигурации
|
||
|
||
#### Использование:
|
||
```bash
|
||
# 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 версии:
|
||
```bash
|
||
# Специальная команда для сборки 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.
|
||
|
||
## 🔨 Сборка образов
|
||
|
||
### Сборка всех образов
|
||
|
||
```bash
|
||
# Собрать все образы (multi-arch)
|
||
make docker build
|
||
|
||
# Пересборка с очисткой кеша
|
||
make docker rebuild
|
||
|
||
# Сборка конкретного образа
|
||
make docker build-image IMAGE=centos7
|
||
```
|
||
|
||
### Поддерживаемые платформы
|
||
|
||
По умолчанию все образы собираются для следующих платформ:
|
||
- `linux/amd64` - 64-bit x86
|
||
- `linux/arm64` - 64-bit ARM
|
||
|
||
Дополнительные платформы (опционально):
|
||
- `linux/riscv64` - RISC-V 64-bit
|
||
- `linux/ppc64le` - PowerPC 64-bit LE
|
||
- `linux/s390x` - IBM Z
|
||
- `linux/386` - 32-bit x86
|
||
- `linux/arm/v7` - ARM v7
|
||
- `linux/arm/v6` - ARM v6
|
||
|
||
### Тегирование
|
||
|
||
Все образы автоматически получают теги:
|
||
- `inecs/ansible-lab:<имя>-<версия>` - версионированный тег
|
||
- `inecs/ansible-lab:<имя>-latest` - последняя версия
|
||
|
||
Например:
|
||
- `inecs/ansible-lab:centos9-9.0`
|
||
- `inecs/ansible-lab:centos9-latest`
|
||
- `inecs/ansible-lab:ubuntu22-22.04`
|
||
- `inecs/ansible-lab:ubuntu22-latest`
|
||
|
||
## 📤 Публикация в Docker Hub
|
||
|
||
### Требования
|
||
|
||
1. Авторизация в Docker Hub:
|
||
```bash
|
||
docker login
|
||
```
|
||
|
||
2. Настройка билд-ксер (buildx) для multi-arch:
|
||
```bash
|
||
make docker setup-builder
|
||
```
|
||
|
||
### Публикация
|
||
|
||
```bash
|
||
# Публикация всех образов
|
||
make docker push
|
||
|
||
# Публикация конкретного образа
|
||
make docker build-image IMAGE=centos7
|
||
# (публикуется автоматически при сборке)
|
||
```
|
||
|
||
## 🧪 Использование в Molecule
|
||
|
||
### Preset конфигурация
|
||
|
||
```yaml
|
||
# 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
|
||
|
||
```bash
|
||
# Использование preset в тестах
|
||
MOLECULE_PRESET=my-preset make role test
|
||
|
||
# Или напрямую
|
||
make role test my-preset
|
||
```
|
||
|
||
## 🔧 Особенности образов
|
||
|
||
### Поддержка systemd
|
||
|
||
Все образы настроены для работы с systemd в контейнере:
|
||
|
||
```bash
|
||
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 внутри контейнера:
|
||
|
||
```bash
|
||
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 | ✅ | ✅ | ✅ | ❌ |
|
||
|
||
## 🛠️ Управление образами
|
||
|
||
### Проверка наличия образов
|
||
|
||
```bash
|
||
# Проверка локальных образов
|
||
docker images | grep inecs/ansible-lab
|
||
|
||
# Проверка в Molecule
|
||
make custom-images check
|
||
```
|
||
|
||
### Обновление образов
|
||
|
||
```bash
|
||
# Загрузить свежие образы
|
||
make docker pull
|
||
|
||
# Пересобрать с обновлениями
|
||
make docker rebuild
|
||
|
||
# Полное обновление
|
||
make docker update
|
||
```
|
||
|
||
### Очистка
|
||
|
||
```bash
|
||
# Удалить локальные образы
|
||
make docker clean
|
||
|
||
# Полная очистка
|
||
make docker purge
|
||
```
|
||
|
||
## 📚 Дополнительная информация
|
||
|
||
- [Структура dockerfiles/](../dockerfiles/)
|
||
- [Makefile команды](../README.md#-управление-docker-образами)
|
||
- [Preset система](molecule-guide.md#preset-система)
|
||
- [CI/CD конфигурация](cicd-setup.md)
|
||
|
||
## 🔗 Полезные ссылки
|
||
|
||
- **Docker Hub**: https://hub.docker.com/r/inecs/ansible-lab
|
||
- **DevOpsLab**: https://devops.org.ru
|
||
- **Документация**: https://github.com/DevOpsLab/docs
|