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.