Я знаю, что docker устарел --tree
флаг из docker images
. Но я не мог найти какую-либо удобную команду для получения такого же результата, как docker images --tree
. Я нашел dockviz. Но, похоже, это еще один контейнер для запуска. Есть ли встроенная команда cli для просмотра дерева изображений без использования dockviz
Как увидеть древовидный вид изображений докеров?
Ответ 1
Обновление ноября 2018 года, докер 18.09.
Теперь у вас есть wagoodman/dive
, инструмент для изучения каждого слоя в изображении докера
Для анализа изображения Docker просто выполните погружение с тегом изображения /id/digest:
dive <your-image-tag>
или если вы хотите создать свой образ, а затем перейдите прямо к его анализу:
dive build -t <some-tag> .
Текущий (сентябрь 2015 г., докер 1,8) обходной путь, упомянутый в выпуске 5001, остается dockviz
:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz images -t
-t
позволяет оставаться в CLI (без графики)
Обновление в сентябре 2016 года (post docker 1.10: docker 1.11 в ближайшее время 1.12), через год, как упоминалось в том же выпуске 5001, Майклом Хертлем:
Начиная с 1.10 работа с идентификаторами слоев изменилась в корне. Для подробного объяснения этой темы см. # 20399. Там также # 20451, но я не уверен, если это может быть использовано в изображении nate/dockviz.
Лично я нахожу, как новые слои работают очень запутанно и гораздо менее прозрачны, чем раньше. И это не очень хорошо документировано.
Комментарии AFAIK @tonistiigi в вышеприведенном номере являются единственным доступным публичным объяснением.
Pre v1.10 не было понятия слоев, иначе можно подумать, что у каждого изображения был только один слой. Вы создали цепочку образов, и вы толкнули цепочку. Все эти изображения в цепочке имели свой собственный конфиг.
В настоящее время существует концепция слоя, который представляет собой адресную файловую систему diff. Каждая конфигурация изображения содержит массив ссылок на слои, которые составляют корневую файловую систему изображения, и никакое изображение не требует чего-либо от своего родителя для запуска. Push и pull перемещают только одно изображение, родительские изображения генерируются только для локальной сборки, используемой для кеша.
Если вы создаете образ с Dockerfile, каждая команда добавляет элемент истории в конфигурацию изображения. Это сохраняет команду, чтобы вы могли видеть ее в истории докеров. Поскольку это часть конфигурации изображения, он также перемещается с помощью push/pull и включается в проверку контрольной суммы.
Ниже приведены некоторые примеры адресных конфигураций контента:
https://gist.github.com/tonistiigi/6447977af6a5c38bbed8Условия в v1.10: (термины действительно не изменились в реализации, но ранее наши документы, вероятно, упростили).
- Слой - это diff файловой системы. Букет файлов, которые сложены друг на друга, составляют корневую файловую систему. Слои управляются графическими редакторами, они ничего не знают о изображениях.
- Изображение - это то, что вы можете запустить, и это отображается в изображениях докеров -a. Необходимо иметь объект конфигурации. Когда контейнер запускается, ему нужен способ генерации корневой файловой системы из информации об изображении. При создании каждой команды Dockerfile создается новое изображение.
Вы можете обратиться к более TomasTomecek/sen
проекту TomasTomecek/sen
, который:
- должен был понять 1.10 новый формат слоя (commit 82b224e)
- включают представление дерева изображений:
Ответ 2
Если вы работаете в Windows, вы можете использовать этот бесплатный ресурс. Я написал для себя https://github.com/aloneguid/docker-explorer-windows