Lubię tworzyć sobie różnego rodzaju ściągawki, kiedy uczę się jakiegoś narzędzia. Docelowo przestaję do nich później zaglądać, kiedy już uda mi się owych komend kilka razy użyć i zapamiętać. Skoro już są, to czemu by się nimi nie podzielić. Raczej nie znajdziecie tu nic więcej, niż w samej dokumentacji Dockera. Większość materiałów na swoim blogu traktuję w formie notatek. Ten również. Jeśli komuś poza mną dodatkowo może się przydać to świetnie.
Docker
Teoria
Obraz (image) to szablon (tylko do odczytu) z instrukcjami tworzenia kontenera.
Nieużywany obraz (unused image) to taki, który nie jest przypisany, ani używany w aktualnie uruchomionym kontenerze.
Wiszący obraz (dangling image) to taki, który nie ma nazwy i jest starą wersją obrazu (jego usunięcie jest zawsze bezpieczne).
Kontener (container) jest uruchamialną instancją obrazu.
Sieć (network) służy do nawiązywania komunikacji między kontenerami.
Nieużywana sieć (unused network) to taka, która nie jest wykorzystywana przez aktualnie uruchomione kontenery.
Wolumen (volume) to mechanizm utrwalania danych generowanych przez kontenery lub przez nie używanych.
Nieużywany wolumen (unused volume) to taki, który nie jest wykorzystywany przez aktualnie uruchomione kontenery.
Obrazy, kontenery, sieci i wolumeny – są to możliwe rodzaje obiektów (objects).
Cykl życia kontenerów:
- Utworzony (created) – został utworzony, ale nie został uruchomiony,
- Uruchomiony (running) – działający wraz ze wszystkimi swoimi procesami,
- Wyłączony (stopped) – wyłączony wraz ze wszystkimi swoimi procesami,
- Wstrzymany (paused) – wstrzymany wraz ze wszystkimi swoimi procesami,
- Usunięty (deleted) – martwy, w trakcie jego całkowitego usuwania.
Praktyka
Zmienne
$COMMAND
– Komenda.$OBJECT
– Rodzaj obiektu (kontener, obraz, sieć, wolumen).$ID
– Konkretny obiekt (identyfikator lub nazwa).$IMAGE
– Obraz (identyfikator lub nazwa).$CONTAINER
Kontener (identyfikator lub nazwa).$NETWORK
– Sieć (identyfikator lub nazwa).$VOLUME
– Wolumen (identyfikator lub nazwa).$DOCKERFILE
– Plik z instrukcjami tworzenia obrazu.$PATH
– Ścieżka do pliku/folderu.
Komendy
Zużycie dysku:
docker system df
Zużycie dysku z podziałem na obiekty:
docker system df -v
Zużycie zasobów przez kontenery (wyświetlane w czasie rzeczywistym):
docker stats
Porównanie plików kontenera z obrazem:
docker diff $CONTAINER
Log wszystkich odnotowanych zdarzeń (wyświetlane w czasie rzeczywistym):
docker events
Pobranie obrazu z rejestru:
docker pull $IMAGE
Stworzenie nowego obrazu z pliku:
docker build $DOCKERFILE
Uruchomienie polecenia w nowym kontenerze stworzonym z obrazu:
docker run $IMAGE $COMMAND
Uruchomienie polecenia w trybie interaktywnym (wejście do kontenera) w nowym kontenerze stworzonym z obrazu:
docker run -it $IMAGE $COMMAND
Wyłączenie działającego kontenera:
docker stop $CONTAINER
Uruchomienie polecenia w istniejącym kontenerze:
docker exec $CONTAINER $COMMAND
Uruchomienie polecenia w trybie interaktywnym (wejście do kontenera) w istniejącym kontenerze:
docker exec -it $CONTAINER $COMMAND
Lista dla konkretnego typu obiektów:
docker $OBJECT ls
Usunięcie konkretnego obiektu:
docker $OBJECT rm $ID
Szczegółowe informacje o konkretnym obiekcie:
docker inspect $ID
Usunięcie wszystkich zatrzymanych kontenerów:
docker container prune
Usunięcie wiszących obrazów:
docker image prune
Usunięcie nieużywanych sieci:
docker network prune
Usunięcie nieużywanych wolumenów:
docker volume prune
Usunięcie nieużywanych obiektów:
docker system prune
Kopiowanie pliku z lokalnego środowiska do kontenera:
docker cp $PATH $CONTAINER:$PATH
Kopiowanie pliku z kontenera do lokalnego środowiska:
docker cp $CONTAINER:$PATH $PATH
Wyłączenie wszystkich aktualnie działających kontenerów:
docker stop $(docker container ls -a -q)
Usunięcie wszystkich istniejących obiektów danego typu:
docker $OBJECT rm $(docker $OBJECT ls -a -q)
Odpowiedz