Podstawy konteneryzacji
Rozpoznasz obrazy, kontenery i rejestry oraz sprawdzisz, co rzeczywiście uruchamia Docker.
1. Krótka teoria
Kontener to proces odizolowany od innych procesów za pomocą mechanizmów jądra systemu. Korzysta z jądra hosta, dlatego nie jest pełną maszyną wirtualną z własnym systemem operacyjnym. Maszyna wirtualna uruchamia własne jądro i daje inny zakres izolacji. Obraz jest niezmiennym szablonem zawierającym pliki i metadane potrzebne do uruchomienia procesu; kontener jest jego działającą instancją z zapisywalną warstwą. Z jednego obrazu można uruchomić wiele kontenerów. Registry przechowuje obrazy, a tag wskazuje wariant, choć może zostać przesunięty na nową wersję. W powtarzalnym wdrożeniu warto przypiąć obraz do konkretnego digestu. Warstwy obrazu pozwalają współdzielić niezmienione części między wersjami i ograniczać transfer. Samo pobranie obrazu nie uruchamia aplikacji. W tym ćwiczeniu obraz Nginxa służy jako obca usługa treningowa; później zbudujesz obraz własnego orders-api. Pamiętaj, że kontener nie zastępuje kontroli uprawnień ani aktualizacji bazowego obrazu.
2. Przykłady komend
docker version
Sprawdza klienta i dostępność silnika Dockera.
$ docker version
docker pull nginx:1.28
Pobiera wskazany obraz z registry.
$ docker pull nginx:1.28
docker images nginx
Pokazuje lokalny obraz, jego tag i rozmiar.
$ docker images nginx
docker image inspect nginx:1.28
Wyświetla metadane obrazu, w tym jego identyfikator.
$ docker image inspect nginx:1.28
docker history nginx:1.28
Pokazuje historię warstw budujących obraz.
$ docker history nginx:1.28
docker run --rm nginx:1.28 nginx -v
Tworzy kontener, uruchamia polecenie i usuwa kontener po zakończeniu.
$ docker run --rm nginx:1.28 nginx -v
3. Zadanie praktyczne
nginx:1.28, odczytaj jego identyfikator i historię warstw. Uruchom jednorazowy kontener wyświetlający wersję Nginxa. W notatce rozdziel trzy pojęcia: obraz zapisany lokalnie, kontener powstały z obrazu oraz registry, z którego pobrano obraz. Sprawdź, czy po użyciu --rm jednorazowy kontener nadal figuruje na liście.
4. Typowe błędy
- Nazywanie obrazu uruchomionym procesem, mimo że jest tylko szablonem.
- Zakładanie, że kontener ma własne jądro systemu operacyjnego.
- Uznawanie ruchomego tagu za gwarancję niezmienności wersji.
- Traktowanie izolacji kontenera jako kompletnej ochrony hosta.
5. Podsumowanie
Obraz jest szablonem, kontener jego instancją, a registry miejscem dystrybucji obrazów. Kontenery współdzielą jądro hosta, a obrazy składają się z warstw. Do odtwarzalnego wdrożenia potrzebna jest kontrola konkretnej wersji obrazu.