2015-01-06 12 views
7

Mam dwa hosty, a w każdej z nich jest zainstalowany program dokujacy.Jak udostępniać obrazy między wieloma hostami dokerów?

Jak wiemy, wszystkie okna dokowane przechowuje obrazy w lokalnym katalogu /var/lib/docker.

Więc jeśli chcę użyć obrazu, takiego jak ubuntu, muszę wykonać docker pull, aby pobrać z Internetu na każdym hoście.

Myślę, że jest powolny.

Czy mogę przechowywać obrazy we współużytkowanej macierzy dyskowej? Następnie niech gospodarz pobierze obraz raz, umożliwiając każdemu hostowi, z dostępem do udostępnionego dysku, bezpośrednie użycie obrazu.

Czy to możliwe czy dobra praktyka? Dlaczego dokowanie nie jest zaprojektowane w ten sposób?

Może zaistnieć konieczność zhakowania kodu źródłowego dokera w celu zaimplementowania tego.

Odpowiedz

0

Czy wyglądał w tym artykule

Dockerizing apt-Cacher-ng usługi

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

ekstrakt

Pojemnik ten sprawia, że ​​drugi pobieranie jakiegokolwiek pakietu niemal natychmiastowy.

Przynajmniej jeden węzeł będzie bardzo szybki i myślę, że powinno być możliwe, aby drugi węzeł użył pamięci podręcznej pierwszego węzła.

Edit: można uruchomić własny rejestr, z poleceniem podobnym do

sudo docker run -p 5000:5000 registry

zobaczyć

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

+1

Myślę, że jest to bufor pamięci podręcznej, buforował pliki 'apk'. Jak mam wiele różnych obrazów, takich jak ubuntu, debian, redhat, centos, wordpress node.js i tak dalej? Tyle obrazów, muszę pobrać obraz po raz pierwszy na każdym hoście. – NingLee

+1

Dzięki za odpowiedź. Ale myślę, że to wciąż marnowanie miejsca na dysku. Na przykład mam 100 hostów i jeden rejestr dokowania, a następnie każdy host i rejestr dokowania muszą mieć po jednym egzemplarzu. Jest 101 zdjęć. Jeśli obraz znajduje się we współużytkowanej macierzy dyskowej, wystarczy tylko jedna kopia. – NingLee

0

Update w 2016.1.25 dokowanym funkcja lustro jest przestarzała

Dlatego ta odpowiedź nie dotyczy teraz, pozostawić na odniesienie

Old informacji

Co trzeba jest tryb lustrzany do rejestru Döcker patrz https://docs.docker.com/v1.6/articles/registry_mirror/

To jest obsługiwany bezpośrednio z docker-registry

pewno możesz korzystać z usługi publicznej kopii dystrybucyjnej lokalnie.

+0

Widzę "rejestr dokowania", myślę, że nadal istnieją dwa problemy: 1) Można uniknąć pobierania obrazów z Internetu, ale nadal trzeba pobrać z sieci lokalnej. 2) Każdy host, który uruchamia demona docker, musi przechowywać jedną kopię obrazów. Jeśli można użyć współużytkowanej macierzy dyskowej, wystarczy jedno pobranie i użycie w dowolnym miejscu, a jedna kopia obrazu na udostępnionym dysku wystarcza. – NingLee

+0

może zostać użyty tak jak powiedziałeś, wtedy tracisz większość mocy dockera. Jeśli pracujesz dla dokowania więcej, wolisz używać rejestru dokerów. –

+0

również docker to tryb klient/serwer, możliwe jest uruchomienie jednego serwera z udostępnionym folderem. –

0

To, co próbujesz zrobić, nie powinno działać tak, jak to wyjaśnił cpuguy83 na tym github/docker issue.

Rzeczywiście:

Podstawowym kierowca przechowywania musiałaby zsynchronizować dostęp.

Udostępnianie /var/lib/docker jest daleko not enough and won't work!

Według doc.docker.com/registry:

Należy użyć rejestru, jeśli chcesz:

  • ściśle kontrolować gdzie obrazy są przechowywane
  • w pełni właścicielem obrazów dystrybucji rurociągami
  • ściśle zintegrowane przechowywanie obrazów i ich dystrybucja w ramach wewnętrznego procesu programowania

Sądzę więc, że jest to najlepsza opcja (/ twoja) do pracy (ale I guess that you got that info - po prostu dodaję ją tutaj, aby zaktualizować szczegóły).

Powodzenia!

Powiązane problemy