Избегайте наличия нескольких контейнеров в Docker - PullRequest
0 голосов
/ 14 февраля 2019

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

Я использую следующую команду: docker build -t sometag:someversion ., которая каждый раз создает новый контейнер (как я позже выяснил,).

Есть ли способ иметь только один контейнер после каждой сборки?

Или мне просто нужно удалить контейнер после его завершения с помощью команды, подобной этой: docker run --rm my-image и не используетсяdocker build

1 Ответ

0 голосов
/ 14 февраля 2019

Ваши смешанные изображения (которые в основном представляют собой «чертежи» и результат «сборки докера» ) и контейнеры: это экземпляры, которые будут запускаться из этого образа.

При выполнении сборки Docker , даже без указания тега, он все равно заменит предыдущее изображение , но не уничтожит его.Вместо этого он разметит его (вместо этого вы увидите тег).

Когда вы выполните запуск докера , вы создадите контейнер с этого изображения.Когда вы остановите его, он не удалит контейнер: вы можете увидеть все остановленные контейнеры с помощью команды "docker ps -a" .Если вы хотите удалить его, вам нужно "docker rm" it.

Хорошо, но иногда вы хотите сделать более эффективную (и общую) очистку ... например, когда у вас есть неснятые контейнеры или старые висящие изображения.В этом случае Docker предоставляет действие « prune », которое может быть выполнено для любого типа объекта Docker: изображение, том, контейнер, сеть, конфигурация и секрет (некоторые из них я мог забыть, но это основнойидея).Чтобы сделать это, введите

'docker <one among above object> prune' 

(это довольно волшебно) ....

Обратите внимание, что если некоторые из этих объектов все еще связаны с другими не удаленными объектами, они должны бытьсначала «обрезка»: например, если у вас остановлен (но не удален) контейнер, все еще использующий изображение без тега, сначала необходимо удалить контейнер!

Также обратите внимание, что вам, возможно, придется загрузить некоторые изображения обратно.после " image prune ", если они больше не использовались (что является проблемой, если они больше не доступны!)

В конце концов, вы можете очистить их целиком, используя системный prune:

"docker system prune"*

что удобно ... но не очень тонко!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...