Отключить автозапуск проекта docker-compose

У меня есть проект создания докеров с использованием Docker для Mac, который автоматически запускается при загрузке компьютера.

Обычно я запускаю проект с docker-compose up -d, но даже запуск docker-compose stop перед выключением автоматически запускает его снова при загрузке.

Я не знаю, чтобы специально включить это. Как я могу отключить его?


person Harald Nordgren    schedule 08.12.2016    source источник
comment
Можем ли мы увидеть файл docker-compose? Но я предполагаю, что в нем есть restart: always. Если есть, то попробуйте поменять на restart: unless-stopped.   -  person Rickkwa    schedule 09.12.2016
comment
Действительно, у каждой из служб есть restart: always. Буду менять и смотреть что будет.   -  person Harald Nordgren    schedule 09.12.2016
comment
Это не сработало. Установка restart: unless-stopped приводит к тому, что докер истечет по времени ожидания запросов (ps, stop, kill). И перезагрузка все равно запускает все контейнеры!   -  person Harald Nordgren    schedule 09.12.2016
comment
Не уверен насчет docker-compose stop, но для меня docker-compose down работает как шарм. Я склонен сочетать его с --rmi local, но будьте осторожны с этим.   -  person Jack M.    schedule 07.02.2017


Ответы (5)


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

Поскольку я не хочу трогать файлы .yml, я только что узнал (спасибо, Бобби), как изменить этот параметр:

docker update --restart=no <MY-CONTAINER-ID>
person davey    schedule 05.04.2017
comment
Это также полезно, когда вы каким-то образом потеряли .yml/или проект: P - person JPG; 18.09.2020
comment
Вы также можете получить текущую политику перезапуска следующим образом: docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' <MY-CONTAINER-ID> - person yohosuff; 24.06.2021

Попробуйте использовать docker-compose down вместо docker-compose stop

вниз

Останавливает контейнеры и удаляет контейнеры, сети, тома и образы, созданные up. Сети и тома, определенные как внешние, никогда не удаляются.

стоп

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

person vanduc1102    schedule 11.10.2017
comment
Это имеет непреднамеренное последствие удаления вещей. Время создания с нуля у меня 20 минут, так что это не вариант. - person Harald Nordgren; 11.10.2017
comment
Это удаляет данные. Во многих случаях это может быть база данных, поэтому во многих случаях это может быть не очень хорошим решением. - person Daniel Benedykt; 22.08.2020

restart: no — это режим по умолчанию. Внутри вашего файла docker-compose есть строка с restart: no или restart: unless-stopped. Это также означает, что когда вы загружаете свою систему, она (пере)запускает контейнер(ы) снова, пока работает демон docker. Подробности
Вам необходимо измените restart на no или on-failure, пример:

version: '2.1'
services:
    backend:
        restart: on-failure
        build:
            args:
                USER_ID: ${USER_ID}
            context: codebase/namp-backend
            dockerfile: Dockerfile.dev
        ports:
          - "5001:5001"
          - "5851:5851"
        volumes:
          - ./codebase/namp-backend:/codebase
        environment:

Также docker-compose down в большинстве случаев дает тот же результат - не запускать контейнеры при запуске (docker) системы, за исключением того, что после этого контейнеры будут удалены, не остановлены.

person Grigory    schedule 12.04.2018
comment
Нет — это политика перезапуска по умолчанию, и она не перезапускает контейнер ни при каких обстоятельствах. Если указано всегда, контейнер всегда перезапускается. Политика при отказе перезапускает контейнер, если код выхода указывает на ошибку при отказе. - person Akshay barahate; 14.05.2019

Используйте следующую команду, если вы хотите остановить определенный контейнер:

docker update --restart=no <MY-CONTAINER-ID>

Если вы хотите остановить все зарегистрированные контейнеры, это лучший вариант:

docker update --restart=no $(docker container ls -a -q)

Спасибо

person Hudson Van-dal    schedule 06.05.2021

Помимо настройки restart: unless-stopped удалите существующие контейнеры и создайте их заново.

docker-compose down
docker-compose up -d

Теперь это будет работать так, как ожидалось:

docker-compose stop
sudo service docker restart
docker-compose ps
# should NOT HAVE containers running

docker-compose up -d
sudo service docker restart
docker-compose ps
# should HAVE containers running
person bmihelac    schedule 14.05.2019