Отладка сборки докер-имиджа

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

Если тексту с картинками вы предпочитаете видео, то вот мой обзор отладки докер-имижа на YouTube

Как известно, сборка докер-имиджа разбита на этапы и каждый такой этап выполняется в отдельном докер-контейнере, который потом формирует промежуточный докер-имидж. Самый первый контейнер  формируется из команды FROM в Dockerfile. Вот скриншот сборки для моего довольно простого докер-файла и в нем команда docker image build создала семь промежуточных докер-имиджей, а восьмой - стал финальным.


Промежуточные докер-имиджи не удаляются, а сохраняются. Их можно посмотреть командой 

docker image ls -a

Теперь переходим к самому интересному. Если сборка докер-имиджа идет не так как вы ожидали или вы не понимаете, почему докер-имидж получился таким каким получился, то можно  запустить контейнер на основе промежуточного имиджа, запустить на  нем терминал и проверить его содержимое и состояние. Сделать  это можно вот такой командой

 docker run --rm -it 09db5a1c9e94 sh

здесь

  • 09db5a1c9e94 - это ID докер-имиджа который я хочу проверить. 
  • флаг  --rm создаст временный докер-контейнер, который будет автоматически удален при выходе из  него.
  • флаг -it переведет контейнер в интерактивный режим.





























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

docker image purne

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

Удачной и легкой вам отладки!


Комментарии

Популярные сообщения из этого блога

Команды docker save/load, docker export/import – в чем отличие, как и когда ими пользоваться

Как узнать, кто заблокировал файл или папку

Эрик Гамма переходит на работу в Майкрософт