Zastanawiam się, gdzie dokładnie są przechowywane obrazy Dockera na moim lokalnym komputerze hosta. Czy mogę udostępnić mój obraz dokera bez użycia Docker-Hub
lub Dockerfile
prawdziwego obrazu dokera? A co dokładnie się dzieje, gdy „wypycham” obraz Docker do Docker-Hub?
docker
docker-registry
Yaquawa
źródło
źródło
Odpowiedzi:
Obrazy dokerów są przechowywane jako warstwy systemu plików. Każde polecenie w Dockerfile tworzy warstwę. Możesz także tworzyć warstwy za pomocą
docker commit
wiersza poleceń po wprowadzeniu pewnych zmian (docker run
prawdopodobnie przez ).Te warstwy są domyślnie przechowywane pod
/var/lib/docker
. Chociaż możesz (teoretycznie) wybrać pliki stamtąd i zainstalować je na innym serwerze dokera, prawdopodobnie jest to zły pomysł, aby grać z wewnętrzną reprezentacją używaną przez Docker.Po wypchnięciu obrazu warstwy te są wysyłane do rejestru (rejestr koncentratora dokerów, domyślnie… chyba że otagujesz obraz innym prefiksem rejestru) i tam przechowywane. Podczas wypychania identyfikator warstwy służy do sprawdzania, czy masz już warstwę lokalnie, czy należy ją pobrać. Możesz użyć,
docker history
aby zobaczyć, które warstwy (inne obrazy) są używane (i do pewnego stopnia, które polecenie utworzyło warstwę).Jeśli chodzi o opcje udostępniania obrazu bez wypychania go do rejestru centrum dokowania, najlepsze opcje to:
docker save
obraz lubdocker export
pojemnik. Spowoduje to wyświetlenie pliku tar na standardowe wyjście, więc będziesz chciał zrobić coś takiegodocker save 'dockerizeit/agent' > dk.agent.latest.tar
. Następnie możesz użyćdocker load
lubdocker import
na innym hoście.Zarządzaj swoim prywatnym rejestrem. - Nieaktualne, patrz komentarze
Zobacz obraz rejestru dokera . Zbudowaliśmy rejestr oparty na s3, który możesz uruchamiać i zatrzymywać w razie potrzeby (cały stan jest przechowywany w wybranym koszyku s3), co jest banalne w konfiguracji. Jest to również ciekawy sposób na obserwowanie, co dzieje się podczas wypychania do rejestruUżyj innego rejestru, takiego jak quay.io (nie próbowałem go osobiście), chociaż prawdopodobnie dotyczy to również wszystkiego, co masz do czynienia z centrum dokowania .
źródło
docker save
: kiedy wypycham obraz, który pochodzi z innego obrazu (powiedzmypython:2.7
) do rejestru, obraz nadrzędny nie musi być przesyłany więcej niż raz, chyba że się zmieni. Czy mogę zapisać częściowe obrazy, aby osiągnąć podobną optymalizację rozmiaru pliku? Skaczę przez te obręcze, ponieważ jestem hobbystą z wieloma obrazami i nie chcę płacić za prywatny rejestr.docker build
na hoście?npm install
... Nie mogę zbudować na moim hoście, ponieważ ma bardzo mało pamięci i ten krok zawsze kończy się niepowodzeniem (patrz: github.com/npm/npm/issues/5021 )Na podstawie tego bloga można udostępnić obraz dokera bez rejestru dokera, wykonując:
Po wykonaniu tego polecenia można skopiować obraz na serwer i zaimportować go w następujący sposób:
źródło
Wysłanie obrazu dokera do zdalnego serwera można wykonać w 3 prostych krokach:
Lokalnie użyj scp, aby przenieść plik .tar do pilota
Na zdalnym serwerze załaduj obraz do okna dokowanego:
źródło
Jeśli nie chcesz używać samego Docker Hub, możesz hostować własne repozytorium Docker w Artifactory by JFrog:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
które następnie będą działać na twoim własnym serwerze (serwerach).
Inni dostawcy hostingu są dostępni, np. CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
który kupił quay.io
źródło