1. Czym jest Docker Compose
Docker Compose to narzędzie służące do uruchamiania wielu kontenerów jednocześnie przy użyciu jednego pliku konfiguracyjnego docker-compose.yml.
Zamiast uruchamiać każdy kontener osobno poleceniem docker run, można zdefiniować całą aplikację jako stack usług.
Najczęściej używane do:
- aplikacji webowych (nginx + backend + baza danych)
- środowisk developerskich
- testów
- mikroserwisów
- uruchamiania całych platform (np. WordPress + MySQL)
Docker Compose pozwala:
- definiować wiele kontenerów
- ustawiać sieci między nimi
- zarządzać wolumenami
- ustawiać zmienne środowiskowe
- uruchamiać wszystko jednym poleceniem
2. Instalacja Docker na Ubuntu
Najpierw należy zainstalować Docker.
Aktualizacja systemu
sudo apt update
sudo apt upgrade -y
Jeśli jesteś zalogowany jako root zainstaluj sudo oraz curl
apt install sudo -y
apt install curl -y
Dodanie klucza oraz repozytorium Docker
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update

Instalacja Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Sprawdź czy po zainstalowaniu docker jest uruchodzmiony, jeśli jest enabled oraz active (running), możesz przejść do kolejnych działań.
sudo systemctl status docker

Jeśli nie uruchom Dockera komendą:
sudo systemctl start docker
3. Sprawdzenie instalacji
Sprawdzenie wersji:
docker --version
W trakcie pisania tego artykułu, moja wersja to 29.2.1 a wersja docker compose to 5.0.2


Test działania:
docker run hello-world

5. Pierwszy projekt Docker Compose
Utwórz katalog projektu.
mkdir compose-demo
cd compose-demo

6. Tworzenie pliku docker-compose.yml
nano docker-compose.yml
Przykład prostej aplikacji NGINX
version: "3.9"services: web:
image: nginx:latest
container_name: nginx-test
ports:
- "8080:80"
Wyjaśnienie:
| element | znaczenie |
|---|---|
| services | lista kontenerów |
| web | nazwa usługi |
| image | obraz Docker |
| ports | mapowanie portów |
7. Uruchomienie aplikacji
W katalogu z plikiem compose:
docker compose up -d
Parametr -d oznacza tryb detached (w tle). Pulled oznacza pobranie obrazu nginx:latest (latest oznacza najnowszą werjsę). Dwa razy created odpowiada kolejno za: utworzenie sieci (Network root_default) oraz za utworzenie kontenera o nazwie nginx-test (którą zdefiniowaliśmy w pliku docker-compose.yml / container_name: nginx-test

8. Sprawdzenie kontenerów
docker ps
Powinien pojawić się kontener nginx-test.

9. Test działania
W przeglądarce wpisz adres IP Twojego serwera (mój adres IP to 192.168.1.74) oraz wskaż na port 8080:
http://adres_IP_Twojego_serwera:8080
Wyświetli się strona powitalna nginx, oznacza to że aplikacja działa i jest dostępna z poziomu przeglądarki !

10. Zatrzymywanie kontenerów
docker compose down
To polecenie:
- zatrzymuje kontenery
- usuwa sieć compose

11. Logi aplikacji
docker compose logs

12. Najważniejsze komendy Docker Compose
| komenda | opis |
|---|---|
| docker compose up | uruchamia stack |
| docker compose up -d | uruchamia w tle |
| docker compose down | zatrzymuje stack |
| docker compose ps | lista usług |
| docker compose logs | logi |
| docker compose restart | restart |
13. Usunięcie wszystkiego
docker compose down -v
Usuwa:
- kontenery
- sieci
- wolumeny

Docker Compose umożliwia:
- zarządzanie wieloma kontenerami
- uruchamianie całych aplikacji jednym poleceniem
- automatyzację środowisk developerskich
- łatwe wdrażanie aplikacji
Jest standardem w:
- DevOps
- CI/CD
- homelab
- środowiskach testowych
Podsumowanie
Artykuł przedstawia podstawy pracy z Docker Compose oraz proces instalacji i uruchamiania kontenerów przy użyciu Docker na systemie Ubuntu.
Na początku wyjaśniono, czym jest Docker Compose. Narzędzie to służy do zarządzania wieloma kontenerami jednocześnie przy użyciu jednego pliku konfiguracyjnego docker-compose.yml. Umożliwia definiowanie usług aplikacji, konfigurację sieci, wolumenów oraz zmiennych środowiskowych, a także uruchamianie całego zestawu kontenerów jednym poleceniem. Rozwiązanie to jest często wykorzystywane przy budowie aplikacji webowych, środowisk developerskich, mikroserwisów oraz w projektach wymagających współpracy kilku komponentów, takich jak serwer WWW i baza danych.
Następnie opisano proces instalacji Dockera na systemie Ubuntu. Obejmuje on aktualizację systemu, instalację wymaganych narzędzi, dodanie oficjalnego repozytorium Dockera oraz instalację pakietów odpowiedzialnych za działanie silnika kontenerów i wtyczki Docker Compose. Po instalacji zaleca się sprawdzenie statusu usługi Docker oraz jej uruchomienie, jeśli nie działa.
Kolejny etap dotyczy weryfikacji poprawności instalacji poprzez sprawdzenie wersji Dockera i uruchomienie testowego kontenera hello-world. Pozwala to potwierdzić, że środowisko kontenerowe działa prawidłowo.
W dalszej części przedstawiono utworzenie prostego projektu Docker Compose. W nowym katalogu tworzony jest plik docker-compose.yml, w którym definiowana jest usługa wykorzystująca obraz NGINX. Konfiguracja zawiera podstawowe elementy, takie jak nazwa usługi, obraz kontenera oraz mapowanie portu serwera na port kontenera.
Opisano również sposób uruchamiania aplikacji przy użyciu polecenia docker compose up -d, które startuje kontenery w tle oraz automatycznie tworzy sieć dla usług. Następnie pokazano, jak sprawdzić działające kontenery poleceniem docker ps oraz jak przetestować działanie aplikacji poprzez otwarcie w przeglądarce adresu IP serwera wraz z odpowiednim portem.
W artykule omówiono także podstawowe operacje administracyjne, takie jak przeglądanie logów kontenerów, restart usług oraz zatrzymywanie i usuwanie całego środowiska przy pomocy polecenia docker compose down. Wskazano również opcję usunięcia wszystkich zasobów, w tym wolumenów, przy użyciu docker compose down -v.
Podsumowując, Docker Compose umożliwia zarządzanie wieloma kontenerami w ramach jednej aplikacji, upraszcza konfigurację środowisk oraz pozwala uruchamiać złożone systemy przy użyciu pojedynczego pliku konfiguracyjnego. Narzędzie to jest powszechnie stosowane w praktykach DevOps, procesach CI/CD, środowiskach testowych oraz w projektach typu homelab.

