Как избавиться от пунктов в репозитории с одинаковым 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, то это нечто иное, как унаследование. Таким образом, новое изображение - это ничто иное, как такое же изображение, что и оригинал. И именно поэтому у них один и тот же идентификатор.
Имя и тег - это просто ссылка на идентификатор. Несколько имен могут указывать на один и тот же идентификатор. И это не значит, что они занимают столько же памяти как и оригинал, это просто ярлык.