docker-compose down --rmi all с контейнерами, разделяющими изображение - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть файл компоновки Docker, который создает некоторые сервисы, используя Dockerfile, который хранится вместе с ним, компоновка выглядит примерно так

version: '3.5'

services:

  my_app:
    build: ""
    image: my_image
    ....
    ...

  my_two:
    image: my_image
    ...

  my_three:
    image: my_mage
    ...

Теперь, когда я запускаю docker-compose up, происходит то, что изображение создается (build: "" находит файл Docker и создает его и называет его "my_image"), а затем другие два (my_two, my_three) используют уже построенное изображение.

Пока все хорошо.

Проблема в том, что когда я запускаю docker-compose down --rmi all, он успешно удаляет my_image, но затем дважды повторяет попытку удаления изображения, потому что они связаны с другими службами.

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

Как заставить docker-compose удалить изображение только один раз?

1 Ответ

0 голосов
/ 30 октября 2018

Может быть проще определить все три службы с build вместо image .

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

Затем, когда вы приходите снимать изображения, docker-compose down --rmi local может безопасно удалить каждое «изображение» по очереди: первый раз, когда он фактически просто снимает метки, то же самое во второй раз, а затем в третий раз удалит изображение по-настоящему.

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