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 и избежать ненужного удаления данных или создания новых контейнеров.