W tej lekcji przechodzimy do praktyki! Poznamy najważniejsze komendy do zarządzania obrazami i kontenerami. Dobra wiadomość jest taka, że komendy te są niemal identyczne dla Dockera i Podmana.
Uwaga: W tej lekcji będziemy używać komendy docker, ale możesz bez problemu zastąpić ją podman. Jeśli używasz Podmana, możesz nawet stworzyć alias alias docker=podman, a wszystkie polecenia będą działać bez zmian.
Obraz vs. Kontener: Kluczowe rozróżnienie
Zanim zaczniemy, musimy zrozumieć dwa fundamentalne pojęcia:
- Obraz (Image): To jest szablon – statyczny, niezmienny plik zawierający wszystko, co potrzebne do uruchomienia aplikacji (kod, biblioteki, środowisko). Obrazy pobieramy z tzw. rejestrów, z których najpopularniejszym jest Docker Hub. Obraz jest jak klasa w programowaniu obiektowym albo przepis na ciasto.
- Kontener (Container): To jest uruchomiona, działająca instancja obrazu. Możesz stworzyć wiele kontenerów z jednego obrazu, tak jak możesz stworzyć wiele obiektów z jednej klasy lub upiec wiele ciast z jednego przepisu. Kontener to żywy proces na Twojej maszynie.
Podstawowe komendy
Oto zestawienie najważniejszych komend, których będziesz używać na co dzień.
1. docker pull [NAZWA_OBRAZU]
Pobiera obraz z rejestru (domyślnie z Docker Huba) na Twoją lokalną maszynę.
Przykład: Pobierzmy oficjalny obraz serwera WWW nginx.
docker pull nginx:latest
(:latest to tzw. tag, oznaczający najnowszą wersję obrazu).
2. docker images
Wyświetla listę wszystkich obrazów, które masz na swoim komputerze.
docker images
3. docker run [OPCJE] [NAZWA_OBRAZU]
To najważniejsza komenda. Tworzy nowy kontener z podanego obrazu i go uruchamia. Posiada wiele przydatnych opcji:
-d(detached): Uruchamia kontener w tle i wypisuje jego ID. Bez tej flagi, kontener uruchomi się na pierwszym planie, blokując Twój terminal.-p [PORT_HOSTA]:[PORT_KONTENERA]: Mapuje port z Twojego komputera (hosta) na port wewnątrz kontenera. To pozwala “wystawić” usługę z kontenera na zewnątrz.--name [NAZWA]: Nadaje kontenerowi czytelną nazwę, co ułatwia zarządzanie.
Przykład: Uruchommy kontener z nginx w tle, nazwijmy go moj-serwer-www i zmapujmy port 8080 naszego komputera na port 80 w kontenerze.
docker run -d -p 8080:80 --name moj-serwer-www nginx
Teraz, jeśli otworzysz przeglądarkę i wejdziesz na http://localhost:8080, powinieneś zobaczyć stronę powitalną NGINX!
4. docker ps
Wyświetla listę aktualnie uruchomionych kontenerów.
docker ps
Aby zobaczyć wszystkie kontenery (również te zatrzymane), użyj flagi -a:
docker ps -a
5. docker stop [NAZWA_LUB_ID]
Zatrzymuje działający kontener.
Przykład: Zatrzymajmy nasz serwer NGINX.
docker stop moj-serwer-www
6. docker start [NAZWA_LUB_ID]
Uruchamia zatrzymany wcześniej kontener.
docker start moj-serwer-www
7. docker rm [NAZWA_LUB_ID]
Usuwa zatrzymany kontener. Nie można usunąć działającego kontenera – trzeba go najpierw zatrzymać.
Przykład:
docker stop moj-serwer-www
docker rm moj-serwer-www
8. docker rmi [NAZWA_LUB_ID_OBRAZU]
Usuwa obraz z lokalnej maszyny.
docker rmi nginx
9. docker logs [NAZWA_LUB_ID]
Wyświetla logi (standardowe wyjście) z kontenera. Niezwykle przydatne do debugowania.
Przykład: Zobaczmy logi naszego serwera NGINX.
docker logs moj-serwer-www
Podsumowanie i dalsze kroki
Te komendy to absolutna podstawa, która pozwoli Ci swobodnie zarządzać kontenerami. Jak widzisz, jest to dość manualny proces – trzeba pamiętać o uruchamianiu, zatrzymywaniu i usuwaniu kontenerów.
W kolejnym module zobaczymy, jak Kubernetes automatyzuje te zadania, pozwalając nam zarządzać nie jednym, a setkami lub tysiącami kontenerów w sposób deklaratywny.