Obrazy Dockera – budowa i zarządzanie

1. Wprowadzenie

W poprzedniej lekcji nauczyłeś się, jak zainstalować Dockera i uruchomić pierwszy kontener. W tej lekcji zagłębimy się w pojęcie obrazów Dockera (images) — czyli podstawowych „klocków”, z których budowane są kontenery. Zrozumienie, czym są obrazy, jak powstają i jak się nimi zarządza, to kluczowy krok do efektywnego korzystania z Dockera w codziennej pracy deweloperskiej.


2. Czym są obrazy Dockera (Docker Images)

Obraz (image) to niezmienny szablon, który zawiera wszystko, co potrzebne do uruchomienia kontenera — system plików, aplikację, biblioteki, zmienne środowiskowe i inne zależności. Można go porównać do „zamrożonej” wersji środowiska aplikacji, z której tworzone są kontenery (czyli działające instancje obrazu).

Każdy obraz jest zbudowany warstwowo (layered architecture) — każda warstwa reprezentuje pewną zmianę w obrazie (np. instalacja pakietu, skopiowanie pliku, ustawienie zmiennej środowiskowej). Docker dzięki temu wykorzystuje mechanizm cache, co przyspiesza budowanie i pobieranie obrazów — jeśli jakaś warstwa już istnieje, nie musi być pobierana ani budowana ponownie.

Przykład: Obraz aplikacji opartej na Node.js może zawierać:

  • Bazowy obraz systemu (np. ubuntu:22.04),
  • Zainstalowany Node.js,
  • Skopiowany kod aplikacji,
  • Instrukcję uruchomienia (np. CMD ["node", "app.js"]).

3. Jak powstają obrazy Dockera

Obrazy można uzyskać na trzy sposoby:

  • Pobierając gotowe obrazy z rejestru (np. Docker Hub) Najszybsza metoda — korzystasz z publicznie dostępnych obrazów przygotowanych przez społeczność lub firmy (np. nginx, mysql, python).

  • Budując własny obraz przy pomocy pliku Dockerfile Tworzysz własną konfigurację, opisując krok po kroku, jak ma wyglądać środowisko aplikacji. Przykład prostego pliku Dockerfile:

Następnie budujesz obraz:

  • Tworząc nowy obraz z istniejącego kontenera Możesz uruchomić kontener, wprowadzić w nim zmiany, a następnie zapisać go jako nowy obraz:

4. Praca z Docker Hubem i prywatnymi rejestrami

4.1 Docker Hub

Docker Hub to oficjalny, publiczny rejestr obrazów Dockera. To tam Docker domyślnie szuka obrazów przy poleceniu docker pull.

Na Docker Hub znajdziesz:

  • oficjalne obrazy (np. nginx, mysql, ubuntu, node),
  • obrazy tworzone przez społeczność,
  • własne repozytoria po zalogowaniu.

Aby zalogować się do Docker Hub z terminala:

Następnie podajesz swoją nazwę użytkownika i hasło.

Aby przesłać własny obraz do repozytorium:


4.2 Prywatne rejestry

W środowisku firmowym często korzysta się z prywatnych rejestrów obrazów, aby zachować kontrolę i bezpieczeństwo nad środowiskami. Najpopularniejsze rozwiązania to:

  • GitHub Container Registry (GHCR)
  • GitLab Container Registry
  • Amazon Elastic Container Registry (ECR)
  • Google Container Registry (GCR)
  • Azure Container Registry (ACR)

Działają one podobnie jak Docker Hub — umożliwiają przechowywanie, wersjonowanie i pobieranie obrazów, ale wymagają autoryzacji użytkownika.


5. Podstawowe polecenia do pracy z obrazami

5.1 docker pull — pobieranie obrazu

To polecenie służy do pobierania obrazu z rejestru (domyślnie z Docker Hub).

Składnia:

Przykłady:

Jeśli nie podasz tag, Docker domyślnie pobierze wersję latest.


5.2 docker images — lista lokalnych obrazów

To polecenie pokazuje wszystkie obrazy znajdujące się w twoim systemie.

Wynik zawiera:

  • REPOSITORY – nazwa repozytorium (np. nginx),
  • TAG – wersja obrazu (np. latest),
  • IMAGE ID – unikalny identyfikator obrazu,
  • CREATED – data utworzenia,
  • SIZE – rozmiar obrazu.

Przykład wyniku:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    a99a39d070bf   2 weeks ago    187MB
ubuntu       22.04     ba6acccedd29   1 month ago    77MB

5.3 docker rmi — usuwanie obrazów

Jeśli chcesz zwolnić miejsce lub pozbyć się nieużywanych obrazów, możesz je usunąć za pomocą:

Przykłady:

Aby wymusić usunięcie obrazu, nawet jeśli jest powiązany z kontenerem:

Można też usunąć wszystkie nieużywane obrazy jednocześnie:


6. Praktyczny przepływ pracy z obrazami

  • Pobierasz obraz z rejestru:
  • Tworzysz kontener z obrazu:
  • Dokonujesz zmian wewnątrz kontenera (np. instalacja pakietów).
  • Tworzysz nowy obraz na podstawie kontenera:
  • Sprawdzasz dostępne obrazy:
  • Wysyłasz własny obraz do Docker Hub:

7. Podsumowanie

W tej lekcji poznałeś:

  • czym są obrazy Dockera i jak są zbudowane,
  • jak powstają — poprzez pobranie, budowę lub zapisanie kontenera,
  • jak korzystać z publicznych (Docker Hub) i prywatnych rejestrów,
  • podstawowe polecenia:

    • docker pull – pobieranie obrazów,
    • docker images – wyświetlanie listy obrazów,
    • docker rmi – usuwanie nieużywanych obrazów.

Zrozumienie obrazów to fundament efektywnej pracy z Dockerem — w kolejnych lekcjach nauczysz się budować własne obrazy z użyciem Dockerfile, zarządzać ich wersjami oraz optymalizować ich rozmiar i wydajność.