2015-01-06 3 views
7

У меня есть два хоста и докер установлен в каждом.Как обмениваться изображениями между несколькими серверами докеров?

Как известно, каждый докер хранит изображения в местном каталоге /var/lib/docker.

Так что если я хочу использовать какое-то изображение, например ubuntu, я должен выполнить docker pull для загрузки из Интернета на каждом хосте.

Я думаю, что это медленно.

Могу ли я хранить изображения в общем массиве дисков? Затем несколько хостов вытащите изображение один раз, позволяя каждому хосту, с доступом к общему диску, использовать изображение напрямую.

Возможно ли это или передовая практика? Почему докер не разработан так?

Возможно, для реализации этого может потребоваться взломать исходный код докера.

ответ

0

Вы смотрели на эту статью

Dockerizing меткому-Cacher-нг службы

http://docs.docker.com/examples/apt-cacher-ng/

экстракт

Этот контейнер делает второй загрузки любого пакета почти мгновенно.

Как минимум один узел будет очень быстрым, и я думаю, что он должен был бы сказать второму узлу использовать кеш первого узла.

Edit: Вы можете запустить свой собственный реестр, с помощью команды, аналогичной

sudo docker run -p 5000:5000 registry

см

https://github.com/docker/docker-registry

+1

Я думаю, что это удобный кэш, он кэшировал файлы 'apk'. Как, если у меня много разных изображений, таких как ubuntu, debian, redhat, centos, wordpress node.js и так далее? Так много изображений, мне нужно перенести изображение в первый раз на каждом хосте. – NingLee

+1

Спасибо за ваш ответ. Но я думаю, что это все еще пустая трата дискового пространства. Например, у меня есть 100 хостов и один док-реестр, тогда каждый хост и докере-реестр должны иметь по одному экземпляру в каждом. Всего 101 изображение. Если изображение находится в общем массиве дисков, достаточно только одной копии. – NingLee

0

Обновления в 2016.1.25 докере осуждается функция зеркала

Поэтому этот ответ не применяется в настоящее время, оставьте для справки

Старый Инфо

Что вам нужно, это режим зеркалирования для Docker реестра см https://docs.docker.com/v1.6/articles/registry_mirror/

Он поддерживается непосредственно от docker-registry

Конечно, вы можете используйте публичное зеркальное отображение локально.

+0

Я вижу «реестр докеров», я думаю, что есть еще две проблемы: 1) Это может избежать загрузки изображений из Интернета, но все равно необходимо загрузить из локальной сети. 2) Каждый хост, который запускает демон докеров, должен хранить одну копию изображений. Если используется общий дисковый массив, загрузка и использование в любом месте и одна копия изображения на общем диске достаточно. – NingLee

+0

может использоваться как указано, тогда вы теряете большую часть мощности докера. Когда вы будете работать для докеров больше, вы предпочтете использовать реестр докеров. –

+0

также доклер - это режим клиент/сервер, можно запустить один сервер с общей папкой. –

0

То, что вы пытаетесь сделать, не должно работать, как объяснено cpuguy83 на этом github/docker issue.

Действительно:

Водитель-хранилище потребуется для синхронизации доступа.

Обмен /var/lib/docker - not enough and won't work!

Согласно doc.docker.com/registry:

Вы должны использовать реестр, если вы хотите:

  • жестко контролировать, где ваши изображения хранятся
  • полностью владеют дистрибутивом трубопровода изображения
  • тесно интегрировать хранение и распределение изображений в рабочий процесс разработки собственного дома

Таким образом, я думаю, что это лучший вариант для работы (но I guess that you got that info - я просто добавлю его здесь, чтобы обновить детали).

Удачи вам!

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