Interview Questions
Docker

Управление образами

Редактировать на GitHub

Вопросы

Какие команды порождают слои?

RUN порождает слои

Что за none образы можно увидеть в docker images?

Каждый образ в докере состоит из слоев, и имеет дочерние связи с другими слоями. По умолчанию они лежат в /var/lib/docker/graph. И когда мы закачиваем новую версию образа, то образ подгружает слой раз за разом. И получается что none это лишь один из слоев. Этот образ называется промежуточным. Их можно увидеть с помощью docker images -a Также, есть обособленные образы none:none. Например, когда мы собираем примерно такой же образ, но например с иной версией операционной системы. И в этом случае будет создан именно такой образ. Поскольку мы пересобрали образ с помощью докерфайла, а старая система стала обособленной.

Можно почистить так:

docker rmi $(docker images -f "dangling=true" -q)

Что такое squash слоёв?

Это штука, позволяющая все слои спушить в один. В качестве побочного эффекта - размер образа уменьшается. Но он ломает кэширование, поскольку у нас всё в одном слое. С одной стороны инструмент мощный. Но нужно обращаться осторожно. Лучше для базового образа использовать. Заранее набросал, и вот у тебя образ.

В папке /var/lib/docker/ как понять какая папка к какому контейнеру принадлежит

Например можно попробовать так:

docker inspect $(docker ps -qa) |  jq -r 'map([.Name, .GraphDriver.Data.MergedDir]) | .[] | "\(.[0])\t\(.[1])"'

Последнее обновление: 11 сент. 2025 г., 14:56:43