zapis obrazu dockerowego do pliku

Zapis obrazu dockerowego do pliku

Nie raz może zdarzyć nam się sytuacja w której w szybki sposób będziemy chcieli przesłać obraz dockerowy bez wrzucania go na https://hub.docker.com/ lub inny serwis. Jednym ze sposobów, który możemy wykorzystać w takiej sytuacji jest spakowanie obrazu dockerowego do archiwum tar.

Jak to zrobić?

1. Zbuduj obraz dockerowy i dla ułatwienia nadaj mu nazwę

Możesz to zrobić z wykorzystaniem poniższej komendy:

docker build -t nazwa_obrazu:tag ścieżka_do_dockerfile

Przykładowa komenda może wyglądać następująco:

docker build -t test:latest .

Zbuduje ona obraz dockerowy o nazwie test oraz tagu latest. Jako, że znajdujemy się w tym samym folderze w którym jest nasz Dockerfile wystarczy, że jako ścieżkę podamy .. Należy pamiętać, że tag jest opcjonalny aczkolwiek dobrą praktyką jest tagowanie obrazów.

2. Zapisz obraz do pliku

Aby to zrobić musimy się posłużyć poniższą komendą:

docker save nazwa_obrazu:tag > nazwa_pliku

W naszym przypadku komenda będzie wyglądać następująco:

docker save test:latest > test.tar

Powyższa komenda zapisze nasz obraz test z tagiem latest do archiwum o nazwie test.tar. Warto jednak zdawać sobie sprawę, że nasz obraz może zajmować sporo miejsca więc dobrym posunięciem będzie jego kompresja. Możemy to zrobić w następujący sposób:

docker save nazwa_obrazu:tag | gzip > nazwa_archiwum.tar.gz

W naszym przypadku komenda będzie wyglądać w taki sposób:

docker save test:latest | gzip > test.tar.gz

3. Prześlij plik w miejsce docelowe oraz go załaduj

Plik możemy przesłać za pomocą kopiowania plików przez ssh lub w dowolny inny sposób. Następnie należy załadować obraz. Możemy to zrobić w taki sposób:

docker load < nazwa_pliku

W naszym przypadku komenda będzie wyglądać następująco:

docker load < test.tar.gz

Za pomocą tej komendy załadowaliśmy obraz, który znajdował się w pliku test.tar.gz. Aby upewnić się czy nasz obraz został załadowany możemy użyć komendy docker images, która wyświetli nam wszystkie dostępne obrazy.