Przejdź do głównej zawartości

Docker

Wstępna weryfikacja

Weryfikacja instalacji

docker version

Sprawdzenie dostępnych obrazów (które mogą być uruchomione)

docker images

Pobieranie obrazów

docker pull alpine

Docker Hub Container Image Library

Usuwanie obrazów

docker image rm my-nginx:latest

Praca z kontenerami

Status kontenerów

docker ps -a

Status: Exited (0) - zakończył się prawidłowo

Status: np. Exited (255) - zakończył się nie prawidłowo

Przygotowanie i uruchamianie kontenera - zwykłe

docker run hello-world:latest

Przygotowanie i uruchamianie kontenera - tryb detach

docker run -d hello-world:latest

Nie jest blokowana konsola.

Przygotowanie i uruchamianie kontenera - tryb interaktywny

docker run -it --name test_console my-nginx:latest

W konsoli dostęp do terminala

Zatrzymywanie kontenera

docker stop <container_id_or_name>

Zatrzymanie wszystkich kontenerów

docker stop $(docker ps -q)

Wymuszenie zatrzymania (jak kill)

docker kill my_container

Usuwanie kontenerów

docker rm <container_id_or_name>

Usuń wszystkie zatrzymane kontenery

docker container prune

Usuń wszystkie kontenery (działające + zatrzymane)

docker stop $(docker ps -q)
docker rm $(docker ps -a -q)

Uruchamianie zatrzymanego kontenera

docker start <container_id_or_name>

Logi kontenera

docker logs <container_id_or_name>

Inspekcja kontenera

docker container inspect <container_id_or_name>

W wyniku są też wszystkie informacje o sieci.

Dostęp do systemu działającego kontenera

docker exec -it <nazwa_lub_ID_kontenera> bash
docker exec -it <nazwa_lub_ID_kontenera> sh

Kopiowanie plików między hostem a kontenerem

Z hosta do kontenera:

docker cp plik.txt nazwakontenera:/sciezka/w/kontenerze/

Z kontenera na hosta:

docker cp nazwakontenera:/sciezka/w/kontenerze/plik.txt ./

Sieci

Sprawdzanie parametrów sieciowych systemu operacyjnego

ip addr show

Odnośnie dokera interesuje nas:

: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:4e:fb:e4:d3 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:4eff:fefb:e4d3/64 scope link
valid_lft forever preferred_lft forever

Rodzaje sieci

Host

Kontener korzysta z adresu IP hosta. Brak izolacji sieciowej. Szybsze, ale mniej bezpieczne.

None

Kontener nie ma dostępu do sieci. Brak połączeń przychodzących i wychodzących. Używane do maksymalnej izolacji.

Overlay

Sieć rozproszona – działa na wielu hostach Docker (np. w Docker Swarm). Idealna do komunikacji między węzłami.

Macvlan

Kontener dostaje własny adres MAC i IP w sieci fizycznej (jakby był osobnym urządzeniem w sieci LAN). Działa jak „pełnoprawny komputer”.

Ipvlan

Podobne do macvlan, ale bardziej wydajne. Używane przy bardzo precyzyjnej kontroli warstwy IP.

Sprawdź dostępne sieci

docker network ls

Szczegóły konkretnej sieci

docker network inspect bridge

Wolumeny i zarządzanie danymi

Kopiowanie danych do/z kontenera

docker cp ./demo.txt ubuntu:/data