Как поделиться своим Docker-Image без использования Docker-Hub?

Мне интересно, где изображения Docker точно хранятся на моей локальной машине. Могу ли я поделиться своим Docker-Image без использования Docker-Hub или Dockerfile, но "реального" Docker-Image? И что именно происходит, когда я "подталкиваю" свой Docker-Image к Docker-Hub?

Ответ 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 (я лично не пробовал), хотя любые проблемы, которые у вас есть с док-концентратором, вероятно, применимы и здесь.

Ответ 2

На основе этого блога можно опубликовать образ докера без реестра докеров, выполнив:

docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0

После выполнения этой команды можно скопировать изображение на сервер и импортировать его следующим образом:

docker load --input latestversion-1.0.0.tar

Ответ 3

Отправка образа докера на удаленный сервер может быть выполнена в 3 простых шага:

  1. Локально сохраните изображение докера как .tar:
docker save -o <path for created tar file> <image name>
  1. Локально, используйте scp для передачи .tar на удаленный

  2. На удаленном сервере загрузите изображение в докер:

docker load -i <path to docker image tar file>

Ответ 4

Если вы не хотите использовать сам Docker Hub, вы можете разместить свой собственный репозиторий Docker под Artifactory by JFrog:

https://www.jfrog.com/confluence/display/RTF/Docker+Repositories

который затем будет запускаться на вашем собственном сервере.

Другие поставщики хостинга доступны, например, CoreOS:

http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/

который купил quay.io