Управление контейнерами
Команды выполняет агент на вашей машине: панель только передаёт задание и показывает результат. Каждая команда оставляет запись в журнале с кодом возврата и выводом.
Команды
| Команда | Что делает | Когда применять |
|---|---|---|
Клонировать (clone) |
обновляет рабочую копию репозитория на машине | первый деплой, смена ветки или правки только в репозитории |
Собрать (build) |
docker compose build (или docker build) |
после клонирования и после изменений в Dockerfile |
Запустить (run) |
docker compose up -d |
после сборки, а также чтобы поднять остановленное приложение |
Статус (status) |
список контейнеров приложения и их состояние | проверка «что сейчас работает» |
Health (health) |
проверка доступности приложения изнутри | после запуска и при жалобах на недоступность |
Остановить (stop) |
останавливает контейнеры, данные сохраняются | плановые работы, экономия ресурсов |
Перезапустить (restart) |
docker compose restart |
смена переменных, «залипшее» приложение |
Перезагрузить среду (restart-runtime) |
перезагружает сервер, на котором работает приложение | обычный перезапуск не помог: завис docker или процесс завершил OOM |
Пересобрать (rebuild) |
сборка без кеша и запуск | подозрение на устаревший кеш сборки |
Обновить образ (update-image) |
тянет новые версии образов из реестра | если в compose указаны теги образов |
Удалить (delete) |
останавливает контейнеры и удаляет их вместе с томами приложения | приложение больше не нужно |
Типовые сценарии
Выложить новую версию из Git
Клонировать → Собрать → Перезапустить → Health
Приложение не отвечает
Статус → Health → (журнал приложения) → Пересобрать → Health → Перезагрузить среду
Перезапуск контейнера не помог
Бывает, что дело не в приложении: завис сам docker, ядро или процесс завершил OOM, и новый контейнер поднимается в уже сломанном окружении. Тогда нужна кнопка «Перезагрузить среду» — она перезагружает сервер целиком, а вместе с ним заново стартуют docker и приложение.
Что важно знать:
- сервер недоступен 1–2 минуты, вместе с приложением на нём останавливаются все остальные приложения этой машины — на плане «Билдий» она одна, и это не страшно;
- перезагрузка не устраняет причину: если приложение регулярно падает по памяти, смотрите потребление ресурсов и лимиты, а не перезагружайте чаще;
- данные и тома не теряются: перезагрузка — не переустановка;
- команда доступна и через API:
POST /api/v1/me/apps/{app}/restart-runtime.
Поменяли переменные окружения
Перезапустить → Health
Колонка «здоровье» на дашборде
«Здоровье» в списке приложений — не то же самое, что «состояние». Состояние говорит, запущены ли приложения; здоровье отвечает на вопрос «приложение действительно работает». Источник значения виден по подсказке при наведении на подпись:
- healthcheck внутри контейнера — если в образе задана проверка (
HEALTHCHECK), платформа показывает её результат: «здорово», «сбой», «проверяется»; - проверка порта с сервера — если проверки в образе нет (обычный случай), платформа сама подключается к опубликованному порту вашего приложения: «отвечает» или «не отвечает»;
- проверяется кнопкой — если приложение не публикует порт снаружи, судить по сети не о чем: полную проверку даёт кнопка «Проверить с сервера».
Зелёная точка — приложение отвечает, красная — сбой или нет ответа, серая — данных для вывода нет. Если состояние показывает «нет данных: машина не ответила», значит агент на машине не ответил за отведённое время: это не значит, что приложение остановлено.
Проверка со стороны сервера
Состояние и здоровье приложения показывает агент — программа на самой машине. Платформа не считает это доказательством: кнопка «Проверить с сервера» заставляет сервер посмотреть на приложение самостоятельно — состояние ВМ на гипервизоре и ответ порта приложения. Если агент говорит «работает», а сервер не видит ответа, в карточке появится расхождение. Так видно разницу между «агент так сказал» и «сервер это подтвердил».
Что происходит с машиной, когда приложение удаляют
Машина под тариф приложений — не покупка, а место, которое платформа выделила под ваши приложения. Поэтому:
- удалили последнее приложение на такой машине — платформа удаляет и её (адрес возвращается в пул, в списке серверов она исчезает). В ответе на удаление это видно отдельной строкой;
- если приложений осталось больше одного, машина остаётся: удаляется только само приложение;
- заказанная вами ВМ (в разделе «Серверы») при удалении приложения не удаляется никогда — она оплачена, и платформа её не трогает.
Если сборка не удалась, машина остаётся — чтобы вы могли исправить ошибку и нажать «Повторить развёртывание». Она уйдёт вместе с приложением, когда вы его удалите.
Ограничения
Платформа не разрешает контейнеры, которые получают права машины: privileged, сеть и пространства
имён хоста, опасные capability, проброс устройств, монтирование сокета Docker и чужих каталогов хоста.
Полный список — в статье про манифесты. Нужен полный контроль — заказывайте виртуальную машину с root.
- команды выполняются по одной на приложение — второго деплоя параллельно не будет;
deleteнеобратим: тома приложения удаляются вместе с контейнерами;- если контейнер не отвечает на health, проверка повторяется, а результат пишется в журнал — «зелёного» статуса без реальной проверки не бывает.
Где этими командами пользоваться
Заказанная ВМ (у вас есть root, SSH и консоль) — карточка машины → «Приложения» (или «Развернуть приложение» на странице «Контейнеры» этой машины):
- вкладка показывает только приложения этой машины и её адрес;
- форма «Добавить приложение из репозитория на эту машину» разворачивает проект сразу здесь; машину выбирать не нужно — она зафиксирована страницей;
- у каждого приложения полный набор действий: клонирование, сборка, запуск, статус, health-check, остановка, перезапуск, перезагрузка сервера, пересборка без кеша, обновление образа из реестра, проверка с сервера, журнал развёртывания и удаление;
- удаление убирает контейнеры, тома, манифест и каталог репозитория — приложение исчезает из списка.
Подписка (root нет) — раздел «Приложения» в меню: там собраны приложения со всех машин клиента, а машину под них держит платформа.
Лимиты на своей ВМ
На заказанной ВМ приложения ограничены ресурсами самой машины (процессор, память, диск), а не числом слотов тарифа приложений: тариф приложений считает слоты только на машинах платформы.
Манифест и состояние приложения
В карточке приложения (страница «Приложения машины») есть два блока, которые раньше были только в старой панели:
- Манифест приложения — тот самый JSON, с которым работает агент: ссылка на репозиторий, ветка, папка проекта, файл compose или Dockerfile, порты. Его видно целиком, можно поправить и сохранить на машину кнопкой «Сохранить манифест». «Прочитать с машины» подтягивает актуальную версию — например, если манифест правили по SSH;
- Состояние приложения — контейнеры этого приложения: имя, состояние, здоровье и порты.
Шаблоны («Шаблон: compose», «Шаблон: Dockerfile») заполняют поле заготовкой — удобно, когда манифест нужно написать с нуля.
Консоль машины
Консоль открывается в карточке машины на вкладке «Консоль» и на странице
/app/machines/<vmid>/console. Экран и клавиатура идут через ноду, поэтому работают даже когда сеть
машины недоступна. Если соединение оборвётся (сон ноутбука, перезагрузка ноды), страница
переподключится сама; кнопка «Переподключить» делает это сразу.