Docker Compose: Разница между командами Up и Start, а также Down и Stop

Docker Compose — это мощный инструмент для управления многоконтейнерными приложениями. С его помощью можно запускать несколько контейнеров, объединенных в единый стек, используя один файл конфигурации docker-compose.yml. Однако, в работе с Docker Compose часто возникают вопросы о том, чем различаются команды up, start, down и stop.


Основные команды Docker Compose

Прежде чем перейти к сравнению команд, давайте кратко рассмотрим, что делают каждое из них:

  • docker-compose up — создает и запускает контейнеры, если они еще не запущены.
  • docker-compose start — запускает уже существующие (созданные) контейнеры, если они были остановлены.
  • docker-compose down — останавливает и удаляет контейнеры, сети и другие ресурсы, созданные командой up.
  • docker-compose stop — просто останавливает работающие контейнеры, не удаляя их.

Теперь давайте более подробно рассмотрим разницу между этими командами и когда лучше использовать каждую из них.

Разница между docker-compose up и docker-compose start

Обе команды служат для того, чтобы запустить контейнеры, но они отличаются по нескольким ключевым аспектам. Рассмотрим их подробнее:

1. docker-compose up

Команда docker-compose up выполняет несколько действий:

  • Создает контейнеры, если они еще не существуют.
  • Создает необходимые сети и тома, если они еще не были созданы.
  • Запускает контейнеры, описанные в docker-compose.yml.
  • Если контейнеры уже запущены, up не создаст новые копии, а продолжит использовать текущие запущенные контейнеры.

Команда up обычно используется для начального запуска или перезапуска сервисов после изменений в конфигурации. Она полезна, когда вам нужно поднять весь стек приложения целиком, включая сети, тома и контейнеры.

Пример использования:


docker-compose up

Если вы хотите запустить сервисы в фоновом режиме, добавьте флаг -d (detached mode):


docker-compose up -d

2. docker-compose start

Команда docker-compose start работает по-другому. Она используется для запуска уже существующих контейнеров, которые были созданы ранее, но в данный момент остановлены. Эта команда не создает контейнеры, сети или тома, если их нет. Это означает, что start можно использовать только для тех контейнеров, которые уже были запущены хотя бы один раз.

Пример использования:


docker-compose start

Команда start удобна, если вам нужно быстро запустить остановленные контейнеры, не создавая новые, и не вносить изменений в конфигурацию.

Основные отличия:

  • up создает и запускает контейнеры, если они не существуют, в то время как start может запускать только уже существующие контейнеры.
  • up также создает сети и тома, если это необходимо, в то время как start этого не делает.
  • Команда up обычно используется для полной инициализации приложения, а start — для повторного запуска остановленных контейнеров.

Разница между docker-compose down и docker-compose stop

Теперь рассмотрим команды docker-compose down и docker-compose stop. Они также обе останавливают контейнеры, но выполняют разные действия после этого.

1. docker-compose stop

Команда docker-compose stop просто останавливает все контейнеры, запущенные через Docker Compose, но не удаляет их. Это означает, что контейнеры сохраняются на диске и могут быть перезапущены командой start в любой момент. Это удобный способ временно приостановить работу контейнеров, не удаляя их.

Пример использования:


docker-compose stop

Остановка контейнеров не затрагивает созданные сети и тома. Все ресурсы остаются на месте до следующего запуска.

2. docker-compose down

В отличие от stop, команда docker-compose down выполняет полную остановку и удаление всех созданных контейнеров, сетей, томов и других ресурсов. Она используется, когда нужно полностью "снести" все, что было создано для работы приложения.

Пример использования:


docker-compose down

При этом Docker Compose удаляет контейнеры и сети, но по умолчанию не удаляет именованные тома, чтобы не потерять данные. Если вы хотите удалить и тома, добавьте флаг -v:


docker-compose down -v

Основные отличия:

  • stop просто останавливает контейнеры, позволяя их перезапустить позже с помощью команды start, тогда как down удаляет контейнеры, сети и другие ресурсы.
  • down может удалить и тома (с флагом -v), в то время как stop не затрагивает тома и сети.
  • Используйте stop, если вы планируете перезапуск сервисов, и down, если вам нужно полностью удалить все ресурсы, связанные с приложением.

Сравнительная таблица команд Docker Compose

Команда Действие Когда использовать
docker-compose up Создает и запускает контейнеры, сети и тома При первом запуске приложения или при изменениях в конфигурации
docker-compose start Запускает существующие контейнеры Когда контейнеры были остановлены и нужно их запустить снова
docker-compose down Останавливает и удаляет контейнеры, сети и (опционально) тома Когда нужно полностью удалить все ресурсы приложения
docker-compose stop Просто останавливает контейнеры Когда нужно временно приостановить работу контейнеров, но сохранить их для перезапуска

Заключение

Команды up, start, down и stop в Docker Compose выполняют разные действия при управлении контейнерами и ресурсами. Команда up предназначена для создания и запуска всех необходимых компонентов приложения, в то время как start запускает только уже существующие контейнеры. Команда stop о станавливает контейнеры, сохраняя их состояние, а down полностью удаляет контейнеры, сети и, при необходимости, тома.

Понимание того, когда использовать каждую команду, помогает эффективно управлять приложениями на основе Docker Compose и избежать ненужного удаления данных или создания новых контейнеров.

Блог НАЙС ОС

Блог НАЙС ОС — это платформа для пользователей и разработчиков, где публикуются статьи, руководства и новости о мире Linux. Основное внимание уделено использованию, настройке и оптимизации ОС, а также обзору новых функций и технологий, доступных в дистрибутиве НАЙС ОС.