Docker to platforma programowa opracowana w celu ułatwienia wdrażania aplikacji opartych na koncepcji kontenerów. Platforma może służyć do tworzenia, testowania i dystrybucji aplikacji poprzez zebranie ich w znormalizowanych jednostkach zwanych kontenerami.
Kontenery Docker są wyizolowanymi środowiskami, w których aplikacje mogą być uruchamiane bez ingerencji w pozostałe procesy. Podobnie jak w przypadku maszyn wirtualnych, określone zasoby obliczeniowe są przydzielane do każdego kontenera. Docker nie wymaga jednak emulacji sprzętu, gdyż używa fizycznego sprzętu hosta dla każdego kontenera.
Ze względu na oszczędność zasobów i zdolność do generowania lepszej wydajności systemu, konteneryzację można postrzegać jako naturalną ewolucję wirtualizacji. Co więcej, ponieważ zawierają one wszystko, co jest potrzebne do poprawnego działania aplikacji - w tym biblioteki i narzędzia systemowe - kontenery upraszczają wdrażanie aplikacji i eliminują problemy związane z konfiguracją środowiska wykonawczego.
W niniejszym poradniku przedstawimy efektywne zarządzanie kontenerami Docker na Linux, pobieranie obrazów z Docker Hub, tworzenie nowego kontenera oraz zapisywanie na nim obrazu.
Jeśli nie posiadasz na swoim systemie zainstalowanej platformy Docker, zapoznaj się z naszym poradnikiem na temat instalacji Docker na Ubuntu 22.04.
Pobieranie obrazów
Kontenery są tworzone z obrazów. Standardowo obrazy są pobierane z Docker Hub, rejestru oficjalnych obrazów udostępnionych przez firmę.
Każdy może hostować własne obrazy na Docker Hub. Pozwala to na wykorzystanie wcześniej spakowanych obrazów jako podstawy dla własnych aplikacji.
Wprowadź komendę:
$ docker run centos
Docker wyszuka obrazy „centos” w lokalnym rejestrze. Jeśli nie zostanie znaleziony (gdyż nie został do tej pory pobrany), Docker pobierze go z Docker Hub i stworzy kontener na podstawie tego obrazu.
Wykorzystany obraz nie zawiera graficznego interfejsu, lecz możesz wyświetlić kontener za pomocą poniższej komendy:
$ docker ps
Wszystkie istniejące kontenery, zarówno uruchomione, jak i zatrzymane, można wyświetlić za pomocą komendy:
$ docker ps -a
Lista pobranych obrazów jest dostępna pod komendą:
$ docker images
Tworzenie kontenerów
Kontenery są podobne do maszyn wirtualnych i są zdecydowanie tańsze pod względem zasobów.
Spróbuj utworzyć kontener za pomocą pobranego obrazu „centos”:
$ docker run -it centos
„-it” pozwala na dostęp do shell wewnątrz kontenera. Wyświetlony zostanie shell kontenera, a nie systemu operacyjnego: wszystkie komendy będą więc wykonane na shell systemu wewnątrz kontenera (w tym przypadku Centos), a nie na shell hosta.
Możesz zamknąć shell kontenera i powrócić do shell hosta za pomocą komendy:
$ exit
Poniższe komendy służą odpowiednio do uruchomienia, zatrzymania i usunięcia kontenera. Zastąp ID_or_container_name nazwą danego kontenera.
$ docker start ID_or_container_name
$ docker stop ID_or_container_name
$ docker rm ID_or_container_name
Przed uruchomieniem lub usunięciem kontenera, upewnij się, że jego status to „stop”. Przed zatrzymaniem kontenera, upewnij się, że jego status to „run”.
Kontenery są wyizolowanymi środowiskami, więc z definicji są „zamknięte”. Aby wejść w interakcję z ich „zawartością”, mapuj port komunikacyjny:
$ docker run -p 8081:80 -d nginx
- „docker run”: komenda uruchomienia kontenera.
- „-p 8081:80”: ujawnia port 80 kontenera na porcie 8081 hosta.
- Jeśli kontener hostuje WebServer, dostaniesz się do niego przez „localhost:8081” oraz „IP:8081”.
- „-d”: działanie kontenera w tle.
- „nginx”: obraz wykorzystany do utworzenia kontenera.
- Jeśli obraz nie jest dostępny lokalnie, musi być pobrany z Docker Hub.

Tworzenie obrazów kontenerów
Po utworzeniu kontenera i przeprowadzeniu niezbędnych zmian, sugerujemy utworzenie jego obrazu: wszystko co znajduje się w kontenerze (zainstalowane dodatkowe moduły lub inne zmiany) pozostanie w nim, lecz nie będzie znajdowało się na obrazie wykorzystanym do jego stworzenia. Jeśli kontener zostanie usunięty, a następnie odtworzony, wszelkie wykonane zmiany zostaną utracone.
Przyjmijmy, że został utworzony kontener z obrazem CentOS oraz zainstalowanym Nginx. Jeśli kontener zostanie usunięty i odtworzony z obrazu ubuntu, Nginx nie będzie zainstalowany, gdyż wykorzystany obraz go nie zawiera.
W celu wygenerowania obrazu kontenera (i utworzenia backupu, który pozwoli na odtworzenie kontenera w takim samym stanie) wykonaj komendę:
$ docker commit -m "Lista wykonanych zmian" -a "nazwa użytkownika" container_id repository/new_image_name
- „-m” jest wykorzystywane do zapisania listy zmian w postaci logów.
- „-a” jest wykorzystywane do wskazania nazwy użytkownika, który generuje obraz.
Powyższa komenda zapisze obraz w lokalnym rejestrze (dostępnym przez obrazy Docker).
Obraz może również zostać zapisany na Docker Hub. Może to zostać wykonane poprzez autoryzację na Docker Hub z wykorzystaniem Dockera (z shell) poprzez komendę:
$ docker login -u username
- Zostaniesz poproszony o wprowadzenia hasła do autoryzacji na Docker Hub
$ docker push username/image_name