To jest tekst przetłumaczony maszynowo, który może zawierać błędy!
Za pomocą Compose opisujesz żądaną konfigurację w pliku i pozwalasz Dockera na utworzenie kontenerów. Zaczynasz od serwera internetowego Nginx z gotowego obrazu. Następnie możesz dodać usługę i sprawdzić, co zostaje utworzone automatycznie.
Przed rozpoczęciem pracy: Silnik Datera (Docker Engine) oraz Compose z sekcji Docker Level 1 muszą działać. Uruchom polecenie docker compose version w maszynie wirtualnej Linuksa. Nie potrzebujesz aplikacji Flask, pliku Dockerfile ani konta GitHub. Materiał YAML-oppslaget dostarcza wsparcia dla wcięć i list; można go przeczytać bez tworzenia workflow na GitHubie.
Najpierw wykonaj „Zadanie 1” i sprawdź odpowiedź sieciową. Aktualizacje to temat do późniejszej pracy. „Zadanie 2” pozwala Ci przetestować wiele usług w tym samym projekcie.
Czym jest Docker Compose?
Z pomocą Docker Compose opisujesz jedną lub więcej usług w pliku. W tym ćwiczeniu każda usługa uruchamia jeden kontener. Poniżej używany jest docker-compose.yml.
compose.yaml i docker-compose.yml to nazwy obsługiwane przez Compose. Użyj jednej z nich w katalogu projektu i wykonuj polecenia z tego katalogu. Poniżej używany jest docker-compose.yml.
services:
web:
image: nginx:latest
ports:
- "127.0.0.1:8083:80"
Jedna komenda ustawia wszystko:
docker compose up -d
# Starter tjenestene i bakgrunnen.
# Uruchamia usługi w tle.
Plikta Compose może być używana na innym serwerze, ale musisz również przenieść niezbędne dane i pliki lokalne oraz skonfigurować hasła, sieć i inne ustawienia. Tagi takie jak latest mogą w przyszłości wskazywać na nowy obraz. Aby zbudowania były identyczne, należy także ustalić (zablokować), którego obrazu się używa.
Dlaczego to jest automatyzacja?
Pomyśl o różnicy:
| Ręczna konfiguracja | Z użyciem Docker Compose |
|---|---|
| Zainstaluj Nginxa ręcznie | image: nginx:latest |
| Skonfiguruj porty | ports: "80:80" |
| Zainstaluj Graftę ręcznie | image: grafana/grafana:latest |
| Udokumentuj wszystkie kroki | Opisz wymagany setup w pliku Compose |
| Powtórz wszystko na kolejnym serwerze | docker compose up -d |
Plik Compose stanowi część technicznej dokumentacji i opisuje żądane środowisko. Sprawdź aktualny stan za pomocą docker compose ps oraz dzienników zdarzeń (logów). Uzasadnienia, wyniki testów i procedury tworzenia kopii zapasowych muszą być dodatkowo udokumentowane.
Przeczytaj mały przykład
services grupuje usługi. web to nazwa nadana serwerowi WWW. image wybiera gotowy obraz, podczas gdy ports mapuje port 8083 na adresie zwrotnym maszyny wirtualnej (VM) do portu 80 w kontenerze. Dlatego testujesz z samej maszyny wirtualnej. Budowanie ze źródeł pojawi się w sekcji Docker Level 2.
Przydatne komendy Dockera
| Komenda | Co robi |
|---|---|
docker compose up -d | Uruchamia wszystkie usługi w tle |
docker compose down | Zatrzymuje i usuwa kontenery oraz sieci projektu |
docker compose logs -f | Śledzi logi na żywo |
docker compose pull | Pobiera obrazy wskazane przez tagi projektu |
docker compose restart | Ponownie uruchamia kontenery projektu bez zmiany obrazu |
docker ps | Wyświetla działające kontenery |
Gdy usługa potrzebuje przechowywania danych
Zachowuj dane poza kontenerem wyjaśnia montowanie woluminów i nazwane wolumeny. Ćwiczenie z Nginxem poniżej nie wymaga bazy danych ani połączenia z magazynowaniem. Skorzystaj ze wsparcia dla przechowywania, zanim rozszerzysz projekt o usługę wymagającą zachowania danych.
Aktualizacja usług
Aktualizacja usługi Docker jest prosta:
# Pobierz najnowszą wersję
docker compose pull
# Uruchom ponownie z nową wersją
docker compose up -d
up -d wdraża nowy obraz przez ponowne utworzenie kontenera. Sprawdź, czy usługa działa po aktualizacji; nowa wersja obrazu może wymagać zmian konfiguracji lub danych.
Zadanie 1 – Konfiguracja Nginx za pomocą Docker Compose
Pracuj w konsoli maszyny wirtualnej. Utwórz nowy katalog, aby to ćwiczenie nie modyfikowało innego projektu Compose:
mkdir compose-ovelse
cd compose-ovelse
nano docker-compose.yml
Jeśli folder już istnieje, otwórz go i sprawdź zawartość przed dalszym postępowaniem. Wpisz przykład Nginxa z sekcji „Czym jest Docker Compose?” do pliku. Zapisz za pomocą klawiszy Ctrl+O, potwierdź przyciskiem Enter i zakończ operację kombinacją Ctrl+X. Sprawdź i uruchom:
docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083
Komando config --quiet powinna zakończyć się bez komunikatu o błędzie. Jeśli poprawisz błąd w pliku, uruchom kontrolę ponownie przed starciem usługi. Komenda ps powinna wyświetlać proces web jako aktywny, a komenda curl powinna zwrócić zawartość serwera Nginx zawierającą tekst „Welcome to nginx!”.
Jeśli port jest zajęty, wybierz inny wolny port hosta w pliku konfiguracji i użyj tego samego portu w poleceniu curl. Jeśli kontener zostanie zatrzymany, przeczytaj logi za pomocą docker compose logs web. Nie rozpoczynaj nowego projektu w losowym katalogu, aby spróbować ponownie.
Wyjaśnij przed przejściem dalej: Który plik opisuje usługę i co utworzono przez wykonanie polecenia docker compose up -d? Zatrzymaj projekt za pomocą docker compose stop, uruchom go ponownie za pomocą docker compose up -d i powtórz test z użyciem curl. Jeśli korzystasz z tej strony jako wsparcia dla innego zadania, możesz teraz do niego wrócić.
Zadanie 2 – Dodaj usługę
Rozszerz plik docker-compose.yml z zadania 1 o dodatkową usługę. Na przykład:
- Uptime Kuma na porcie 3001
- Grafana na porcie 3000
Stosuj własną nazwę usługi w sekcji services, na tym samym poziomie wcięcia co web. Przeczytaj oficjalny przykład Docker dla danej usługi, aby poznać wymagany obraz, port i sposób przechowywania danych. Użyj wolnego portu hosta i ogranicz dostęp do środowiska ćwiczeniowego. Tag latest nie jest zdefiniowaną wersją.
Najpierw uruchom docker compose config --quiet. Następnie rozpocznij działanie za pomocą docker compose up -d i sprawdź, czy obie usługi działają jednocześnie. Jeśli używasz powiązań typu „rebinding” (backbind), tak jak dla Nginx, testuj port z maszyny wirtualnej; dostęp z innej masziny wymaga osobnego ustalenia adresu, portu i sieci.
Wyświetl wynik polecenia docker compose ps oraz oczekiwane odpowiedzi od każdej usługi pod adresem i na porcie, które faktycznie skonfigurowano. Wyjaśnij słownie lub pisemnie, co Compose tworzy automatycznie, a czego nadal musisz dokonać samodzielnie, np. dane, konfiguracje i kopie zapasowe. Jeśli jedna usługa się zatrzyma, przeczytaj logi za pomocą docker compose logs, zanim zmienisz konfigurację. Zakończ ewentualne śledzenie logów klawiszami Ctrl+C.
Podsumowanie
- Docker Compose pozwala zdefiniować wiele usług w jednym pliku
- Plik Compose jest zarówno konfiguracją, jak i dokumentacją
- Aktualizacja to
docker compose pull+docker compose up -d - Docker ułatwia przenoszenie usług między serwerami
Źródła: Docker Compose: pierwszy projekt oraz Usługi Compose.