Ответ 1
Изображения Docker хранятся в виде слоев файловой системы. Каждая команда в Dockerfile создает слой. Вы также можете создавать слои, используя docker commit
из командной строки после внесения некоторых изменений (возможно, через docker run
).
Эти слои хранятся по умолчанию в /var/lib/docker
. Хотя вы можете (теоретически) выбрать файлы оттуда и установить их на другом сервере Docker, вероятно, это плохая идея, чтобы поиграть с внутренним представлением, используемым Docker.
Когда вы нажимаете свое изображение, эти слои отправляются в реестр (по умолчанию реестр концентраторов докеров... если только вы не пометите свое изображение другим префиксом реестра) и сохраняются там. При нажатии идентификатор слоя используется, чтобы проверить, есть ли у вас слой локально или его нужно загрузить. Вы можете использовать docker history
, чтобы посмотреть, какие слои (другие изображения) используются (и, в некоторой степени, какая команда создала слой).
Что касается параметров, позволяющих обмениваться изображениями без отправки в реестр концентратора докера, лучше всего подойдут следующие варианты:
docker save
изображение илиdocker export
контейнер. Это выведет файл tar на стандартный вывод, так что вы захотите сделать что-то вродеdocker save 'dockerizeit/agent' > dk.agent.latest.tar
. Затем вы можете использоватьdocker load
илиdocker import
на другом хосте.Разместите свой личный реестр. - Устаревший, см. комментарии
См. изображение реестра докера. Мы создали поддерживаемый s3 реестр, который вы можете запускать и останавливать по мере необходимости (все состояния сохраняются в корзине s3 по вашему выбору), что тривиально для установки. Это также интересный способ наблюдения за тем, что происходит при нажатии на реестр.Используйте другой реестр, например quay.io (я лично не пробовал), хотя любые проблемы, которые у вас есть с док-концентратором, вероятно, применимы и здесь.