Как запустить контейнер, только если он ещё не работает

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

dockerbashконтейнер

👁 Когда пишешь скрипты или настраиваешь окружение, часто нужно запустить контейнер, но только если он ещё не запущен. Конечно, можно городить docker ps | grep, проверять статус и писать дополнительные проверки.

📝 Есть аккуратное решение одной строкой:

docker start my-container 2>/dev/null || docker run -d --name my-container my-image

📝 Для переиспользования можно оформить в функцию:

run_once() {
  docker start "$1" 2>/dev/null || docker run -d --name "$1" "$2"
}

run_once redis redis:7-alpine

📌 Что происходит:

  • docker start попытается запустить контейнер по имени
  • Если он не существует — команда упадёт
  • Тогда сработает docker run, который создаст и запустит контейнер
  • Повторный запуск ничего не сломает: start просто вернёт успех

🔎 Такой приём особенно удобен в Bash-скриптах и CI/CD пайплайнах — можно быть уверенным, что контейнер поднимется, но не будет дубликатов. Всё в одной строке, без условий и проверок.

❗️ Подходит для автоматизации запуска сервисов в dev-окружении, удобен в скриптах и при повторном деплое в тестовых кластерах. Работает в Linux и macOS, требует только установленный Docker.

tags: #полезно #docker

❤️ @recura_tech

Темная обложка поста с заголовком «Как запустить контейнер, только если он ещё не работает», логотип RECURA и хештег #docker внизу
Обложка поста RECURA с заголовком и логотипом; иллюстрация к совету по Docker.

Читайте так же