Bawię się Dockerem przez kilka dni i już zrobiłem kilka zdjęć (co było naprawdę zabawne!). Teraz chcę wytrwać w pracy i doszedłem do poleceń savei export, ale nie do końca je rozumiem.
Jaka jest różnica między saveiw exportDockerze?
Bawię się Dockerem przez kilka dni i już zrobiłem kilka zdjęć (co było naprawdę zabawne!). Teraz chcę wytrwać w pracy i doszedłem do poleceń savei export, ale nie do końca je rozumiem.
Jaka jest różnica między saveiw exportDockerze?
Odpowiedzi:
Krótka odpowiedź brzmi:
savepobierze obraz: dla maszyny wirtualnej lub serwera fizycznego będzie to obraz instalacyjny ISO lub dysk. Podstawowy system operacyjny.
Spakuje warstwy i metadane z całego łańcucha wymaganego do zbudowania obrazu. Następnie można załadować ten „zapisany” łańcuch obrazów do innej instancji dockera i utworzyć kontenery z tych obrazów.
exportpobierze cały kontener: jak migawka zwykłej maszyny wirtualnej. Zapisuje oczywiście system operacyjny, ale także wszelkie wprowadzone zmiany, wszelkie pliki danych zapisane w trakcie życia kontenera. Ten bardziej przypomina tradycyjną kopię zapasową.
To da ci płaskie archiwum .tar zawierające system plików twojego kontenera.
Edycja: ponieważ moje wyjaśnienie może nadal prowadzić do nieporozumień, myślę, że ważne jest, aby zrozumieć, że jedno z tych poleceń działa z kontenerami, a drugie działa z obrazami.
Obraz musi być uznane za „martwy” lub niezmienne, począwszy od 0 lub 1000 pojemniki z niej nie zmieni jednego bajta. Dlatego wcześniej dokonałem porównania z instalacją systemu ISO. Być może jest nawet bliżej płyty live-CD.
Pojemnik „buty” obraz i dodaje dodatkową warstwę na wierzchu. Ta warstwa przechowuje wszelkie zmiany w kontenerze (utworzone / zmienione / usunięte pliki ...).
docker commit). Mogę wtedy saveobraz. Albo mogę exportbezpośrednio pojemnik. I oba sposoby ( saveobraz i exportkontener) będą miały ten sam wynik?
exportDaje płaską .tar archiwum zawierającego kontenera plików. savespakuje warstwy i metadane z całego łańcucha wymaganego do zbudowania obrazu. Następnie możesz załadować ten savedłańcuch obrazów do innej instancji Dockera i utworzyć kontenery z tych obrazów.
exportfunkcji.
exportwszystkie metadane zostaną utracone, więc w przypadku próby uruchomienia kontenera z tym obrazem należy wymienić CMD i inne metdane. savedziałało dobrze, ale eksport był bólem
Istnieją dwie główne różnice między poleceniami savei export.
savepolecenie zapisuje cały obraz z historią i metadanymi, ale exportpolecenie eksportuje tylko strukturę plików (bez historii i metadanych). Więc wyeksportowany plik tar będzie mniejszy niż zapisany.
Podczas korzystania wyeksportowany system plików do tworzenia nowego wizerunku wtedy ten nowy obraz nie będzie zawierać żadnych USER, EXPOSE, RUNitd. Polecenia z Dockerfile. Przesłana zostanie tylko struktura plików. Więc jeśli używasz wspomnianych słów kluczowych w swoim pliku Dockerfile, nie możesz użyć polecenia eksportu do przeniesienia obrazu na inny komputer - zawsze musisz użyć polecenia save.
Eksportowany obraz nie będzie zawierał żadnych informacji o warstwie ani historii, więc będzie mniejszy i nie będzie można przywrócić.
Zapisany obraz będzie zawierał informacje o warstwie i historii, więc będzie większe.
Jeśli dajesz to klientowi, pytanie brzmi, czy chcesz zachować te warstwy, czy nie?
Z technicznego punktu widzenia zapisywanie / ładowanie działa z repozytoriami, którymi może być jeden lub więcej obrazów, nazywanych również warstwami. Obraz to pojedyncza warstwa w repozytorium. Wreszcie kontener jest obrazem utworzonym (działa lub nie).
Docker save Tworzy repozytorium plików tar, które zawiera wszystkie warstwy nadrzędne i wszystkie tagi + wersje lub określony repo: tag dla każdego argumentu dostarczonego z obrazu .
Eksport z platformy Docker Tworzy określony plik (może to być tar lub tgz) z płaską zawartością bez zawartości określonych woluminów z kontenera .
Docker save trzeba użyć na obrazie docker, podczas gdy eksport docker musi być użyty na kontenerze (tak jak uruchomiony obraz)
Oszczędzaj użycie
docker save [OPCJE] IMAGE [IMAGE ...]
Zapisz obraz (y) w archiwum tar (domyślnie przesyłane strumieniowo do STDOUT)
--help = false Wydrukuj użycie -o, --output = "" Zapisuje do pliku zamiast STDOUT
eksport Wykorzystanie
eksport docker [OPCJE] CONTAINER
Wyeksportuj zawartość systemu plików kontenera jako archiwum tar
--help = false Wydrukuj użycie -o, --output = "" Zapisuje do pliku zamiast STDOUT
export: container (filesystem)-> image tar.
import: exported image tar-> image. Tylko jedna warstwa.
save: image-> image tar.
load: saved image tar-> image. Wszystkie warstwy zostaną odzyskane.
From Docker in Action, Second Edition p190.
Obrazy warstwowe zachowują historię obrazu, metadane tworzenia kontenerów i stare pliki, które mogły zostać usunięte lub nadpisane.
Spłaszczone obrazy zawierają tylko bieżący zestaw plików w systemie plików.