2015-09-08 10 views
30

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

ответ

46

В настоящее время (сентябрь 2015, докер 1,8) обходной путь упоминается issue 5001 остается dockviz действительно:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz images -t 

-t позволяет оставаться в только CLI (без графики не требуется)


Update сентября 2016 (пост докер 1,10: докер 1,11 скоро 1.12), один год, как было упомянуто в same issue 5001, by Michael Härtl:

С 1.10 сработавшие изменения идентификаторов слоев изменились в корне. Для подробного объяснения этой темы см. #20399. Также есть #20451, но я не уверен, если это может быть использовано изображением nate/dockviz.

Лично я нахожу, как новые слои работают очень запутанно и гораздо менее прозрачны, чем раньше. И это не очень хорошо документировано.
AFAIK @tonistiigi's comments in the issue above - единственное публичное объяснение.

Tõnis Tiigi:

Pre v1.10 не было понятия слоев или другой способ думать о нем, что каждый образ был только один слой. Вы создали цепочку образов, и вы толкнули цепочку. Все эти изображения в цепочке имели свой собственный конфиг.

В настоящее время существует концепция слоя, который представляет собой адресную файловую систему diff. Каждая конфигурация изображения имеет массив ссылок на слои, которые составляют корневую файловую систему изображения, и никакое изображение не требует чего-либо от своего родителя для запуска. Push и pull перемещают только одно изображение, родительские изображения генерируются только для локальной сборки, используемой для кеша.

Если вы создаете образ с файлом Dockerfile, каждая команда добавляет элемент истории в конфигурацию изображения. Это сохраняет команду, чтобы вы могли видеть ее в истории докеров. Поскольку это часть конфигурации изображения, он также перемещается с помощью push/pull и включается в проверку контрольной суммы.

Вот некоторые примеры содержания адресуемых конфиги:
https://gist.github.com/tonistiigi/6447977af6a5c38bbed8

Термины в v1.10: (термины действительно не изменились в реализации, но раньше наши документы, вероятно, упрощенные вещи).

  • Layer - это файловая система diff. Букет файлов, которые сложены друг на друга, составляют корневую файловую систему. Слои управляются графическими редакторами, они ничего не знают о изображениях.
  • Изображение - это то, что вы можете запустить, и это отображается в изображениях докеров -a. Необходимо иметь объект конфигурации.Когда контейнер запускается, ему нужен способ генерации корневой файловой системы из информации об изображении. При создании каждой команды Dockerfile создается новое изображение.

Вы можете обратиться к более позднему проекту TomasTomecek/sen, который:

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

+0

Очень полезно, спасибо за это! – PierreF

Смежные вопросы