Как избавиться от пунктов в репозитории с одинаковым ID при создании образов в docker-compose

После выполнения docker-compose build, создаются образы с разными REPOSITORY (к основному имени добавляется префикс в виде названия директории с проектом), но с одинаковыми IMAGE ID.

В docker-compose.yml использую build и локальный путь до нужного Dockerfile.

$docker-compose build
Building db
Step 1/1 : FROM mariadb
latest: Pulling from library/mariadb
...
Status: Downloaded newer image for mariadb:latest
 ---> b6184b68d1fd
Successfully built b6184b68d1fd
Successfully tagged science_db:latest

$docker images
REPOSITORY       TAG     IMAGE ID      CREATED       SIZE
adminer          latest  ebe95a49f3e2  20 hours ago  89.6MB
science_adminer  latest  ebe95a49f3e2  20 hours ago  89.6MB
mariadb          latest  b6184b68d1fd  13 days ago   357MB
science_db       latest  b6184b68d1fd  13 days ago   357MB

Если заменить пункт build в docker-compose.yml на image и задать название образа, то данного недоразумения нет.

В Docker я новичек, возможно это заложено в работу Docker, но на мой взгляд это может быть признаком что я делаю, что-то неправильно...

Можно ли как-то заставить Docker не делать это Successfully tagged science_db:latest?


Ответы (1 шт):

Автор решения: Валентин Анохин

Оказывается, что это нормальная ситуация. Если использовать buld в docker-compose.yml с ссылкой на Dockerfile где имеется команда FROM, то это нечто иное, как унаследование. Таким образом, новое изображение - это ничто иное, как такое же изображение, что и оригинал. И именно поэтому у них один и тот же идентификатор.

Имя и тег - это просто ссылка на идентификатор. Несколько имен могут указывать на один и тот же идентификатор. И это не значит, что они занимают столько же памяти как и оригинал, это просто ярлык.

→ Ссылка