Docker «чистый старт» - PullRequest
0 голосов
/ 12 июля 2020

Я использую Docker для разработки системы HW-SW, где перезапуски и потери мощности происходят очень часто. Я хотел бы игнорировать / уничтожать все контейнеры, которые работали во время выключения, и запускать Docker с нуля (используя docker -compose). Опция --force -create в docker -compose, которая казалась применимой - имеет некоторые проблемы, такие как "застрявшие" "старые" сопоставления портов, препятствующие запуску новых экземпляров контейнера.

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Обычно вы можете запустить контейнер с флагом --rm, поэтому он будет удалять контейнер после остановки или завершения работы системы. Но я не нашел аналогичного флага для docker -compose, вы можете попробовать следующее, но он будет работать вручную не при выключении или перезагрузке

Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Don't ask to confirm removal
    -s, --stop    Stop the containers, if required, before removing
    -v            Remove any anonymous volumes attached to containers

docker -comose rm

Таким образом, обходной путь - запустить задание cron на bootup и удалить весь контейнер.

remove_container.sh.

#!/bin/bash
# put sleep so the docker process ready
sleep 90
# remove all container
docker rm -f $(docker ps -aq)

cronjob

@reboot (sh /home/user/remove_container.sh)

Вы можете добавить аналогичную опцию для окна et c, описанного выше, протестированного в дистрибутиве Ubuntu.

0 голосов
/ 12 июля 2020

Вы можете использовать

docker system prune

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

...