Подтвердить что ты не робот

Как увидеть древовидный вид изображений докеров?

Я знаю, что docker устарел --tree флаг из docker images. Но я не мог найти какую-либо удобную команду для получения такого же результата, как docker images --tree. Я нашел dockviz. Но, похоже, это еще один контейнер для запуска. Есть ли встроенная команда cli для просмотра дерева изображений без использования dockviz

4b9b3361

Ответ 1

Обновление ноября 2018 года, докер 18.09.
Теперь у вас есть wagoodman/dive, инструмент для изучения каждого слоя в изображении докера

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, который:

https://github.com/TomasTomecek/sen/raw/master/data/image-tree.gif