# Контейнеры в VyOS - Podman Container Management

> Контейнеры Podman в VyOS - интеграция с сетью VyOS, управление ресурсами и примеры конфигураций для Pi-hole, Zabbix, Prometheus и Nginx

Source: https://opennix.org/docs/vyos/containers/


VyOS поддерживает запуск контейнеров на базе Podman, позволяя развертывать приложения непосредственно на маршрутизаторе.

## Обзор

VyOS использует **Podman** - daemonless (без демона) контейнерный движок, совместимый с Docker и OCI стандартами.

**Возможности**:
- Запуск OCI-совместимых контейнеров
- Интеграция с VyOS networking
- Управление образами из различных registries
- Пользовательские контейнерные сети
- Volume и device mounting
- Ограничение ресурсов (CPU, память)
- Автоматический перезапуск
- Управление capabilities

**Использование**:
- Мониторинг (Zabbix, Prometheus)
- DNS сервисы (Pi-hole, AdGuard)
- Веб-сервисы
- Прокси серверы (Squid, HAProxy)
- VPN клиенты
- Утилиты и инструменты

## Базовая конфигурация

### Простой контейнер

Запуск контейнера из Docker Hub:

```bash
set container name nginx image docker.io/nginx:latest
commit
```

Контейнер будет запущен автоматически после commit.

### Контейнер с портом

Пробросить порт хоста в контейнер:

```bash
set container name nginx image docker.io/nginx:latest
set container name nginx port http source 8080
set container name nginx port http destination 80
set container name nginx port http protocol tcp
commit
```

Теперь nginx доступен на `http://<vyos-ip>:8080`.

### Проверка состояния

```bash
show container
show container nginx
```

## Образы контейнеров

### Загрузка образа

Образ загружается автоматически при commit, но можно загрузить вручную:

```bash
add container image docker.io/nginx:latest
```

### Просмотр образов

```bash
show container image
```

Пример вывода:
```
REPOSITORY               TAG      IMAGE ID      CREATED      SIZE
docker.io/library/nginx  latest   3b25b682ea82  2 weeks ago  192 MB
```

### Обновление образа

```bash
update container image nginx
```

Загружает новую версию образа (если тег изменился).

### Указание образа

```bash
set container name myapp image docker.io/myuser/myapp:1.0
commit
```

Формат: `registry/repository:tag`

По умолчанию используется Docker Hub (docker.io).

### Entrypoint и Command

Переопределение entrypoint:

```bash
set container name myapp image myapp:latest
set container name myapp entrypoint '/usr/local/bin/custom-start.sh'
commit
```

Аргументы команды:

```bash
set container name myapp image myapp:latest
set container name myapp command '/bin/bash'
set container name myapp arguments '-c "echo Hello && sleep infinity"'
commit
```

## Сетевая конфигурация

### Контейнерная сеть

Создание пользовательской сети:

```bash
set container network mynet prefix 172.20.0.0/16
set container network mynet description 'Custom container network'
commit
```

IPv6:

```bash
set container network mynet prefix fd00::/64
commit
```

### Подключение контейнера к сети

```bash
set container name nginx network mynet
commit
```

Контейнер получит динамический IP из сети mynet.

### Статический IP

```bash
set container name nginx network mynet address 172.20.0.10
commit
```

### MTU для сети

```bash
set container network mynet mtu 1400
commit
```

### VRF для контейнерной сети

```bash
set container network mynet vrf MGMT
commit
```

Контейнерная сеть будет в указанном VRF.

### Просмотр сетей

```bash
show container network
```

## Volumes и монтирование

### Монтирование директории

```bash
set container name nginx volume config source /config/nginx
set container name nginx volume config destination /etc/nginx/conf.d
set container name nginx volume config mode ro
commit
```

- **source** - путь на VyOS
- **destination** - путь в контейнере
- **mode** - `ro` (read-only) или `rw` (read-write)

### Монтирование конфигурационного файла

```bash
set container name app volume appconfig source /config/app.conf
set container name app volume appconfig destination /etc/app/app.conf
set container name app volume appconfig mode ro
commit
```

### Данные в /config

Для сохранения данных между перезагрузками используйте `/config`:

```bash
set container name database volume data source /config/database
set container name database volume data destination /var/lib/postgresql/data
set container name database volume data mode rw
commit
```

`/config` - единственная директория VyOS, которая сохраняется между перезагрузками.

### Device mounting

Монтирование устройств (например, USB):

```bash
set container name app device source /dev/ttyUSB0
set container name app device destination /dev/ttyUSB0
commit
```

## Environment Variables

Передача переменных окружения в контейнер:

```bash
set container name myapp environment TZ value 'Europe/Moscow'
set container name myapp environment DEBUG value 'true'
set container name myapp environment DB_HOST value '192.168.1.100'
commit
```

Формат:
```bash
set container name <name> environment <KEY> value '<value>'
```

Секреты (пароли):

```bash
set container name db environment POSTGRES_PASSWORD value 'secret123'
commit
```

## Порты

### Проброс портов TCP

```bash
set container name webapp port http source 8080
set container name webapp port http destination 80
set container name webapp port http protocol tcp
commit
```

- **source** - порт на VyOS
- **destination** - порт в контейнере
- **protocol** - tcp или udp

Теперь трафик на `<vyos-ip>:8080` будет перенаправлен в контейнер на порт 80.

### Проброс портов UDP

```bash
set container name dnsserver port dns source 5353
set container name dnsserver port dns destination 53
set container name dnsserver port dns protocol udp
commit
```

### Множественные порты

```bash
set container name webapp port http source 8080
set container name webapp port http destination 80
set container name webapp port http protocol tcp

set container name webapp port https source 8443
set container name webapp port https destination 443
set container name webapp port https protocol tcp

commit
```

### Bind на конкретный IP

Для bind на конкретный интерфейс используйте firewall DNAT:

```bash
set nat destination rule 10 destination address 192.168.1.1
set nat destination rule 10 destination port 8080
set nat destination rule 10 inbound-interface name eth1
set nat destination rule 10 translation address 172.20.0.10
set nat destination rule 10 translation port 80
set nat destination rule 10 protocol tcp
commit
```

## Hostname

Установка hostname контейнера:

```bash
set container name myapp host-name myapp.local
commit
```

Hostname виден внутри контейнера и в DNS (если настроен).

## Restart Policy

Политика перезапуска контейнера при падении:

### Always

Всегда перезапускать (по умолчанию):

```bash
set container name myapp restart always
commit
```

### On-failure

Перезапускать только при ненулевом exit code:

```bash
set container name myapp restart on-failure
commit
```

### No

Не перезапускать:

```bash
set container name myapp restart no
commit
```

## Resource Limits

### CPU Quota

Ограничение CPU (в процентах):

```bash
set container name myapp cpu-quota 50
commit
```

50 = 50% одного CPU core.

### Memory Limit

Ограничение памяти (в мегабайтах):

```bash
set container name myapp memory 512
commit
```

Контейнер ограничен 512 MB RAM.

### Комбинированные лимиты

```bash
set container name myapp cpu-quota 25
set container name myapp memory 256
commit
```

## Capabilities

Управление Linux capabilities для контейнера.

### Добавление capability

```bash
set container name myapp capability net-admin
set container name myapp capability sys-time
commit
```

Часто используемые capabilities:
- **net-admin** - управление сетью
- **sys-time** - изменение системного времени
- **net-raw** - raw sockets (ping)
- **sys-module** - загрузка kernel модулей

### Privileged контейнеры

Для полного доступа (все capabilities):

```bash
set container name myapp capability all
commit
```

Используйте с осторожностью (снижает безопасность).

## Sysctl параметры

Изменение kernel параметров для контейнера:

```bash
set container name myapp sysctl parameter net.ipv4.ip_forward value 1
commit
```

Требует соответствующих capabilities.

## Container Registries

### Настройка registry

По умолчанию VyOS использует Docker Hub (docker.io).

Добавление дополнительного registry:

```bash
set container registry gitlab address registry.gitlab.com
commit
```

### Аутентификация

Для приватных registries:

```bash
set container registry myprivate address registry.example.com
set container registry myprivate authentication username myuser
set container registry myprivate authentication password mypassword
commit
```

### Insecure Registry

Для HTTP registry (не рекомендуется):

```bash
set container registry myregistry address registry.local:5000
set container registry myregistry disable-verify
commit
```

### Mirror Registry

Зеркало Docker Hub:

```bash
set container registry dockermirror mirror address mirror.gcr.io
commit
```

## Логирование

### Драйвер логирования

По умолчанию используется journald.

Изменение драйвера:

```bash
set container name myapp log-driver k8s-file
commit
```

Доступные драйверы:
- **journald** - systemd journal
- **k8s-file** - Kubernetes-совместимые файлы
- **none** - без логирования

### Просмотр логов

```bash
show container log myapp
```

Логи также доступны через journald:

```bash
journalctl -u vyos-container-myapp
```

## Примеры конфигурации

### Pi-hole DNS сервер

Блокировка рекламы и DNS фильтрация:

```bash
# Контейнерная сеть
set container network pihole prefix 172.21.0.0/24

# Pi-hole контейнер
set container name pihole image docker.io/pihole/pihole:latest
set container name pihole network pihole address 172.21.0.10
set container name pihole restart always

# Порты
set container name pihole port dns-tcp source 5353
set container name pihole port dns-tcp destination 53
set container name pihole port dns-tcp protocol tcp

set container name pihole port dns-udp source 5353
set container name pihole port dns-udp destination 53
set container name pihole port dns-udp protocol udp

set container name pihole port web source 8080
set container name pihole port web destination 80
set container name pihole port web protocol tcp

# Environment
set container name pihole environment TZ value 'Europe/Moscow'
set container name pihole environment WEBPASSWORD value 'admin123'

# Volumes
set container name pihole volume config source /config/pihole/config
set container name pihole volume config destination /etc/pihole
set container name pihole volume config mode rw

set container name pihole volume dnsmasq source /config/pihole/dnsmasq.d
set container name pihole volume dnsmasq destination /etc/dnsmasq.d
set container name pihole volume dnsmasq mode rw

commit
```

Доступ к веб-интерфейсу: `http://<vyos-ip>:8080/admin`

### Zabbix мониторинг

Multi-container мониторинговая система:

```bash
# Контейнерная сеть
set container network zabbix prefix 172.22.0.0/24

# PostgreSQL база данных
set container name postgres image docker.io/postgres:14
set container name postgres network zabbix address 172.22.0.2
set container name postgres restart always

set container name postgres environment POSTGRES_DB value 'zabbix'
set container name postgres environment POSTGRES_USER value 'zabbix'
set container name postgres environment POSTGRES_PASSWORD value 'zabbix_password'

set container name postgres volume data source /config/zabbix/postgresql
set container name postgres volume data destination /var/lib/postgresql/data
set container name postgres volume data mode rw

# Zabbix Server
set container name zabbix-server image docker.io/zabbix/zabbix-server-pgsql:latest
set container name zabbix-server network zabbix address 172.22.0.3
set container name zabbix-server restart always

set container name zabbix-server environment DB_SERVER_HOST value '172.22.0.2'
set container name zabbix-server environment POSTGRES_DB value 'zabbix'
set container name zabbix-server environment POSTGRES_USER value 'zabbix'
set container name zabbix-server environment POSTGRES_PASSWORD value 'zabbix_password'

set container name zabbix-server port trapper source 10051
set container name zabbix-server port trapper destination 10051
set container name zabbix-server port trapper protocol tcp

# Zabbix Web Frontend
set container name zabbix-web image docker.io/zabbix/zabbix-web-nginx-pgsql:latest
set container name zabbix-web network zabbix address 172.22.0.4
set container name zabbix-web restart always

set container name zabbix-web environment ZBX_SERVER_HOST value '172.22.0.3'
set container name zabbix-web environment DB_SERVER_HOST value '172.22.0.2'
set container name zabbix-web environment POSTGRES_DB value 'zabbix'
set container name zabbix-web environment POSTGRES_USER value 'zabbix'
set container name zabbix-web environment POSTGRES_PASSWORD value 'zabbix_password'
set container name zabbix-web environment PHP_TZ value 'Europe/Moscow'

set container name zabbix-web port http source 8081
set container name zabbix-web port http destination 8080
set container name zabbix-web port http protocol tcp

commit
```

Доступ: `http://<vyos-ip>:8081` (admin/zabbix)

### Nginx веб-сервер

Статический веб-сервер с пользовательской конфигурацией:

```bash
set container network web prefix 172.23.0.0/24

set container name nginx image docker.io/nginx:latest
set container name nginx network web address 172.23.0.10
set container name nginx restart always

set container name nginx port http source 8080
set container name nginx port http destination 80
set container name nginx port http protocol tcp

set container name nginx port https source 8443
set container name nginx port https destination 443
set container name nginx port https protocol tcp

# Volumes
set container name nginx volume html source /config/www/html
set container name nginx volume html destination /usr/share/nginx/html
set container name nginx volume html mode ro

set container name nginx volume config source /config/www/nginx.conf
set container name nginx volume config destination /etc/nginx/nginx.conf
set container name nginx volume config mode ro

commit
```

### Squid прокси-сервер

HTTP/HTTPS прокси:

```bash
set container network proxy prefix 172.24.0.0/24

set container name squid image docker.io/ubuntu/squid:latest
set container name squid network proxy address 172.24.0.10
set container name squid restart always

set container name squid port proxy source 3128
set container name squid port proxy destination 3128
set container name squid port proxy protocol tcp

set container name squid volume config source /config/squid/squid.conf
set container name squid volume config destination /etc/squid/squid.conf
set container name squid volume config mode ro

set container name squid volume cache source /config/squid/cache
set container name squid volume cache destination /var/spool/squid
set container name squid volume cache mode rw

commit
```

### OpenVPN клиент

VPN клиент в контейнере для маршрутизации трафика:

```bash
set container network vpn prefix 172.25.0.0/24

set container name ovpn-client image docker.io/dperson/openvpn-client:latest
set container name ovpn-client network vpn address 172.25.0.10
set container name ovpn-client restart always

set container name ovpn-client capability net-admin

set container name ovpn-client volume config source /config/openvpn/client.ovpn
set container name ovpn-client volume config destination /vpn/client.ovpn
set container name ovpn-client volume config mode ro

set container name ovpn-client volume auth source /config/openvpn/auth.txt
set container name ovpn-client volume auth destination /vpn/auth.txt
set container name ovpn-client volume auth mode ro

set container name ovpn-client device source /dev/net/tun
set container name ovpn-client device destination /dev/net/tun

commit
```

### Prometheus мониторинг

Metrics и мониторинг:

```bash
set container network monitoring prefix 172.26.0.0/24

# Prometheus
set container name prometheus image docker.io/prom/prometheus:latest
set container name prometheus network monitoring address 172.26.0.10
set container name prometheus restart always

set container name prometheus port web source 9090
set container name prometheus port web destination 9090
set container name prometheus port web protocol tcp

set container name prometheus volume config source /config/prometheus/prometheus.yml
set container name prometheus volume config destination /etc/prometheus/prometheus.yml
set container name prometheus volume config mode ro

set container name prometheus volume data source /config/prometheus/data
set container name prometheus volume data destination /prometheus
set container name prometheus volume data mode rw

# Node Exporter (host metrics)
set container name node-exporter image docker.io/prom/node-exporter:latest
set container name node-exporter network monitoring address 172.26.0.11
set container name node-exporter restart always

set container name node-exporter port metrics source 9100
set container name node-exporter port metrics destination 9100
set container name node-exporter port metrics protocol tcp

# Grafana
set container name grafana image docker.io/grafana/grafana:latest
set container name grafana network monitoring address 172.26.0.12
set container name grafana restart always

set container name grafana port web source 3000
set container name grafana port web destination 3000
set container name grafana port web protocol tcp

set container name grafana volume data source /config/grafana
set container name grafana volume data destination /var/lib/grafana
set container name grafana volume data mode rw

set container name grafana environment GF_SECURITY_ADMIN_PASSWORD value 'admin123'

commit
```

## Операционные команды

### Просмотр контейнеров

Все контейнеры:
```bash
show container
```

Пример вывода:
```
NAME      STATE    IMAGE                           NETWORK
nginx     running  docker.io/library/nginx:latest  mynet
pihole    running  docker.io/pihole/pihole:latest  pihole
```

Детали контейнера:
```bash
show container nginx
```

### Просмотр образов

```bash
show container image
```

### Просмотр сетей

```bash
show container network
```

Пример вывода:
```
NETWORK ID    NAME     DRIVER
abc123def456  mynet    bridge
```

### Логи контейнера

```bash
show container log nginx
```

Последние 50 строк:
```bash
show container log nginx tail 50
```

### Перезапуск контейнера

```bash
restart container nginx
```

### Загрузка образа

```bash
add container image docker.io/nginx:alpine
```

### Обновление образа

```bash
update container image nginx
```

Загружает новую версию образа (если доступна).

### Удаление контейнера

```bash
delete container name nginx
commit
```

## Интеграция с VyOS

### Firewall для контейнеров

Защита доступа к контейнерам:

```bash
# Разрешить доступ к nginx только из LAN
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 destination address 172.20.0.10
set firewall ipv4 forward filter rule 100 destination port 80
set firewall ipv4 forward filter rule 100 source address 192.168.1.0/24
set firewall ipv4 forward filter rule 100 protocol tcp

set firewall ipv4 forward filter rule 101 action drop
set firewall ipv4 forward filter rule 101 destination address 172.20.0.10
set firewall ipv4 forward filter rule 101 destination port 80
set firewall ipv4 forward filter rule 101 protocol tcp

commit
```

### NAT для контейнеров

Контейнеры с доступом в интернет через NAT:

```bash
# SNAT для контейнерной сети
set nat source rule 100 source address 172.20.0.0/16
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 translation address masquerade

commit
```

DNAT для публикации сервиса:

```bash
# Пробросить порт 80 внешнего IP в контейнер
set nat destination rule 10 destination address 203.0.113.10
set nat destination rule 10 destination port 80
set nat destination rule 10 inbound-interface name eth0
set nat destination rule 10 protocol tcp
set nat destination rule 10 translation address 172.20.0.10
set nat destination rule 10 translation port 80

commit
```

### Routing для контейнеров

Статический маршрут для контейнерной сети:

```bash
set protocols static route 172.20.0.0/16 interface eth1
commit
```

### VRF изоляция

Контейнеры в отдельном VRF:

```bash
# Создать VRF
set vrf name CONTAINERS table 100
set vrf name CONTAINERS description 'Container network'

# Контейнерная сеть в VRF
set container network mynet vrf CONTAINERS
set container network mynet prefix 172.20.0.0/16

commit
```

## Интеграция с облачными платформами

### Yandex Cloud

При развертывании VyOS в Yandex Cloud контейнеры могут использоваться для интеграции с облачными сервисами:

**Container Registry интеграция**:
```bash
# Использование Yandex Container Registry
set container registry yandex address cr.yandex
set container registry yandex authentication username oauth
set container registry yandex authentication password '<yandex-oauth-token>'
commit

# Запуск контейнера из Yandex Container Registry
set container name myapp image cr.yandex/<registry-id>/myapp:latest
commit
```

**Мониторинг с Yandex Monitoring**:
```bash
# Prometheus exporter для метрик в Yandex Monitoring
set container name unified-agent image cr.yandex/yc/unified-agent:latest
set container name unified-agent network monitoring
set container name unified-agent environment FOLDER_ID value '<folder-id>'
set container name unified-agent environment IAM_TOKEN value '<iam-token>'
commit
```

**Логирование в Yandex Cloud Logging**:
```bash
# Fluent Bit для отправки логов
set container name fluent-bit image cr.yandex/yc/fluent-bit:latest
set container name fluent-bit network monitoring
set container name fluent-bit volume config source /config/fluent-bit.conf
set container name fluent-bit volume config destination /fluent-bit/etc/fluent-bit.conf
set container name fluent-bit volume config mode ro
commit
```

### VK Cloud

Интеграция с VK Cloud (Mail.ru Cloud Solutions):

**VK Cloud Container Registry**:
```bash
# Настройка registry для VK Cloud
set container registry vkcloud address hub.mcs.mail.ru
set container registry vkcloud authentication username '<username>'
set container registry vkcloud authentication password '<password>'
commit

# Запуск контейнера из VK Cloud Registry
set container name myapp image hub.mcs.mail.ru/<project>/myapp:latest
commit
```

**S3-совместимое хранилище**:
```bash
# MinIO клиент для интеграции с VK Cloud S3
set container name minio-client image docker.io/minio/mc:latest
set container name minio-client network storage
set container name minio-client environment MC_HOST_vkcloud value 'https://<access-key>:<secret-key>@hb.vkcs.cloud'
commit
```

## Устранение неполадок

### Контейнер не запускается

Проверьте статус:
```bash
show container myapp
```

Проверьте логи:
```bash
show container log myapp
```

Journald логи:
```bash
journalctl -u vyos-container-myapp -n 50
```

### Образ не загружается

Проверьте доступность registry:
```bash
ping registry.example.com
```

Проверьте DNS:
```bash
nslookup docker.io
```

Проверьте аутентификацию:
```bash
show container registry
```

### Сетевые проблемы

Проверьте контейнерную сеть:
```bash
show container network
```

Проверьте IP контейнера:
```bash
show container myapp
```

Ping из VyOS:
```bash
ping 172.20.0.10
```

### Порты не доступны

Проверьте проброс портов:
```bash
show configuration commands | grep "container name myapp port"
```

Проверьте firewall:
```bash
show firewall
```

Проверьте NAT:
```bash
show nat source rules
show nat destination rules
```

### Проблемы с volumes

Проверьте права доступа:
```bash
ls -la /config/myapp
```

Убедитесь что директория существует:
```bash
mkdir -p /config/myapp
```

### Высокое потребление ресурсов

Проверьте использование:
```bash
show container
```

Установите лимиты:
```bash
set container name myapp cpu-quota 50
set container name myapp memory 512
commit
```

## Безопасность

### Минимальные привилегии

Запускайте контейнеры с минимальными capabilities:

```bash
# Избегайте
set container name myapp capability all

# Предпочитайте
set container name myapp capability net-admin
```

### Изоляция сети

Используйте отдельные сети для разных приложений:

```bash
set container network web prefix 172.20.0.0/24
set container network db prefix 172.21.0.0/24
```

### Read-only volumes

Монтируйте конфигурацию как read-only:

```bash
set container name myapp volume config mode ro
```

### Регулярные обновления

Обновляйте образы для получения security patches:

```bash
update container image myapp
restart container myapp
```

### Firewall защита

Ограничьте доступ к контейнерам через firewall:

```bash
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 destination address 172.20.0.0/24
set firewall ipv4 forward filter rule 100 source address 192.168.1.0/24

set firewall ipv4 forward filter rule 999 action drop
set firewall ipv4 forward filter rule 999 destination address 172.20.0.0/24
```

### Лимиты ресурсов

Предотвращайте DoS через ограничение ресурсов:

```bash
set container name myapp cpu-quota 50
set container name myapp memory 512
commit
```

## Производительность

### Resource allocation

Планируйте ресурсы для контейнеров:

**Рекомендации**:
- Веб-сервер: 256-512 MB, CPU 25-50%
- База данных: 1024-2048 MB, CPU 50-100%
- Мониторинг: 512-1024 MB, CPU 25-50%

### Storage performance

Для баз данных используйте отдельные диски:

```bash
# Монтировать SSD для базы данных
set container name postgres volume data source /mnt/ssd/postgres
set container name postgres volume data destination /var/lib/postgresql/data
set container name postgres volume data mode rw
```

### Network performance

Используйте MTU optimization:

```bash
set container network mynet mtu 9000
```

Для jumbo frames на поддерживаемом hardware.

## Ограничения

- Podman работает в rootless режиме с ограничениями
- Некоторые контейнеры требуют privileged режим (все capabilities)
- Графические приложения не поддерживаются
- Большие контейнеры (>1GB RAM) могут влиять на производительность VyOS
- Контейнеры перезапускаются при reboot VyOS

## Лучшие практики

1. **Используйте /config** - для persistent данных
2. **Ограничивайте ресурсы** - устанавливайте CPU и memory limits
3. **Минимальные привилегии** - только необходимые capabilities
4. **Отдельные сети** - изоляция по функциям
5. **Firewall защита** - контролируйте доступ
6. **Регулярные обновления** - обновляйте образы
7. **Мониторинг** - отслеживайте логи и ресурсы
8. **Резервное копирование** - включайте /config/containers в backup
9. **Тестирование** - проверяйте контейнеры перед production
10. **Документация** - описывайте назначение контейнеров

## Дополнительные ресурсы

- [VyOS Container Documentation](https://docs.vyos.io/en/latest/configuration/container/)
- [Podman Documentation](https://docs.podman.io/)
- [OCI Specification](https://opencontainers.org/)
- [Docker Hub](https://hub.docker.com/)

## Следующие шаги

- [Firewall](/docs/vyos/firewall/) - защита контейнеров
- [NAT](/docs/vyos/nat/) - публикация сервисов
- [VRF](/docs/vyos/vrf/) - изоляция контейнерных сетей
- [System](/docs/vyos/system/) - мониторинг ресурсов

