microsrv:~$
Консоль

Создание и запуск контейнеров

Пошаговое руководство по созданию, настройке параметров запуска, подключению дисков и управлению контейнерами через консоль и API.

Порядок создания контейнера

Для запуска нового контейнера перейдите в раздел Консоль → Контейнеры и нажмите Создать контейнер.

Процесс создания состоит из 5 последовательных шагов:

  1. Имя контейнера: указание уникального имени контейнера в проекте.
  2. Выбор OCI-образа: выбор предварительно добавленного образа в статусе Ready.
  3. Параметры запуска: исполняемая команда, аргументы, переменные окружения и политика перезапуска.
  4. Подключение постоянного диска (Обязательно): выбор тома для размещения слоя Stateful OverlayFS.
  5. Сетевой интерфейс VPC (Обязательно): привязка к частной сети для выделения статического IP-адреса.

Настройка параметров запуска

1. Имя контейнера

Укажите уникальное имя контейнера внутри проекта (например, api-gateway-01).

2. Выбор OCI-образа

Выберите образ в статусе Ready (см. Управление образами).

3. Команда и переменные окружения

  • Команда (Command): исполняемый бинарный файл (например, /usr/bin/python3 или nginx).
  • Аргументы (Args): параметры запуска (например, -m http.server 8080 или -g "daemon off;").
  • Переменные окружения (Environment): список переменных формата KEY=value, по одной на строку.
  • Политика перезапуска (Restart Policy):
    • always (по умолчанию) — автоматический перезапуск при любом завершении работы процесса.
    • on_failure — перезапуск только при ненулевом коде возврата.
    • never — отключение автоматического перезапуска.

4. Диски данных (Volumes)

[!IMPORTANT] Для создания контейнера необходимо выбрать как минимум один свободный том. Первый выбранный том автоматически используется как постоянное хранилище для слоя Stateful OverlayFS. Все файлы и конфигурации, созданные во время работы контейнера, будут сохранены на этом диске.

5. Сетевые интерфейсы (VPC)

[!IMPORTANT] Необходимо выбрать как минимум один свободный сетевой интерфейс. Контейнер всегда создаётся с выделенным статическим приватным IP-адресом в вашем VPC.

Выберите свободный интерфейс NetworkInterface из вашего VPC для назначения контейнеру фиксированного приватного IP-адреса.


Создание через REST API

Создание контейнеров можно полностью автоматизировать через Selene REST API:

curl -X POST "https://api.microsrv.ru/api/v1/projects/${PROJECT_ID}/containers" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "region_id": "ru-central1",
    "flavor_id": "flavor-std-2",
    "image_id": "img-nginx-alpine-ulid",
    "name": "web-proxy-01",
    "command": ["nginx"],
    "args": ["-g", "daemon off;"],
    "env": {
      "PORT": "8080",
      "NODE_ENV": "production"
    },
    "restart_policy": "always",
    "volume_ids": ["vol-01j9a4k..."],
    "network_interface_ids": ["ni-01j9a4m..."]
  }'

Сетевое взаимодействие и публикация

  1. Внутри VPC: Контейнер обращается к другим контейнерам и виртуальным машинам по внутреннему IP-адресу (10.x.x.x).
  2. Исходящий доступ в интернет: Контейнер отправляет запросы к внешним сервисам, Git и API через eBPF Outbound NAT без необходимости выделения публичного IP.
  3. Входящий веб-трафик: порт контейнера можно опубликовать через HTTPS-шлюз с доменом <name>.msrv.space и TLS-сертификатом.

Управление жизненным циклом

  • Детальная информация: на странице контейнера (/console/containers/<id>) отображаются статус песочницы, привязанные диски и назначенный IP-адрес.
  • Изменение конфигурации: через API поддерживается обновление параметров контейнера (PATCH /api/v1/containers/<id>).
  • Удаление: при удалении контейнера освобождаются vCPU/RAM и сетевой интерфейс, а прикреплённый том NVMe сохраняется и может быть примонтирован к новому контейнеру или ВМ.

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