Powrót do bloga

Jak zainstalować i skonfigurować Docker Compose na Ubuntu 20.04

Jak zainstalować i skonfigurować Docker Compose na Ubuntu 20.04

Wprowadzenie

Konteneryzacja zyskała w ostatnich latach ogromną popularność w branży oprogramowania. Można to przypisać Docker który jest platformą kontenerową upraszczającą zarządzanie procesami wewnątrz kontenerów.

Kontenery to lekkie, zwirtualizowane, przenośne, zdefiniowane programowo, standaryzowane środowiska, które pozwalają oprogramowaniu działać w izolacji od innego oprogramowania uruchomionego na fizycznej maszynie hosta. Ta cecha przenośności pozwala programistom na modularyzację ich aplikacji na izolowane usługi. Ponadto mogą być one obsługiwane niezależnie, co daje przestrzeń do skalowania.

Choć podział aplikacji na wiele usług jest zdecydowanie świetnym rozwiązaniem, wiąże się on z dodatkowym nakładem pracy związanym z zarządzaniem wieloma kontenerami. Musisz upewnić się, że komunikują się one ze sobą, uruchamiają i wyłączają w tym samym czasie. Dzięki narzędziu o nazwie Docker Compose, staje się to łatwym zadaniem. Docker Compose pozwala programistom na uruchamianie wielokontenerowych aplikacji Docker przy użyciu reguł zdefiniowanych w pliku YAML. Plik YAML zawiera definicje usług aplikacji oraz sposobu, w jaki mogą one współdzielić wolumeny danych i sieci. Po zdefiniowaniu usług możesz uruchomić je wszystkie za pomocą jednego polecenia. W tym samouczku, pokażemy Ci, jak zainstalować, skonfigurować i rozpocząć pracę z Docker Compose na systemie Ubuntu 20.04.

Wymagania wstępne

Krok 1: Instalacja Docker Compose

Pobierzemy najnowszą stabilną wersję Docker Compose z jego oficjalnego repozytorium GitHub. Najnowszą wersję możesz sprawdzić na stronie wydań (releases), w momencie pisania tego samouczka najnowsza wersja to 1.28.5.

Najpierw zaloguj się na swój serwer Ubuntu jako użytkownik non-root z uprawnieniami sudo i wprowadź następujące polecenie. Pobierze ono najnowsze wydanie (1.28.5) i zapisze plik wykonywalny w katalogu /usr/local/bin/docker-compose. Dzięki temu będzie on dostępny globalnie jako docker-compose:

Po pobraniu wprowadź następujące polecenie, aby ustawić odpowiednie uprawnienia, tak aby polecenie docker-compose było wykonywalne:

Teraz zweryfikuj, czy instalacja zakończyła się sukcesem i czy polecenie można wywołać, uruchamiając następującą komendę:

Powinieneś otrzymać wynik podobny do tego:

docker compose version

Potwierdza to, że Docker Compose został pomyślnie zainstalowany w Twoim systemie.

Krok 2: Tworzenie pliku docker-compose.yml

Aby pomóc Ci zrozumieć, jak pracować z docker-compose.yml, skonfigurujemy środowisko serwera WWW przy użyciu oficjalnego obrazu Nginx z Docker Hub. Po wdrożeniu powinniśmy być w stanie serwować podstawową stronę HTML z kontenera.

Utworzymy nasz katalog roboczy w folderze domowym, z którego będziemy pracować. Wprowadź następujące polecenie, aby utworzyć katalog:

Następnie przejdź do tego katalogu:

Po wejściu do katalogu utwórz folder aplikacji, który będzie głównym katalogiem dokumentów (document root) dla środowiska Nginx. Możemy nazwać ten folder app:

  • Tworzenie strony HTML

Użyjmy edytora tekstu nano do utworzenia pliku index.html wewnątrz folderu app:

Następnie dodaj do pliku następujący kod HTML:

Aby zapisać plik, naciśnij CTRL +O, ENTER. Następnie zamknij za pomocą CTRL +X. Następnie utworzymy docker-compose.yml plik w katalogu głównym naszego projektu.

  • Hostowanie strony HTML przy użyciu docker-compose

Następnie wprowadź poniższe polecenie, aby otworzyć plik za pomocą edytora nano :

Następnie dodaj poniższy fragment kodu wewnątrz pliku:

Plik docker-compose.yml plik rozpoczyna się od numeru wersji, który informuje Docker Compose, z której wersji konfiguracji korzystamy. Skorzystaj z tego linku, aby dowiedzieć się więcej o wersjonowaniu Docker Compose.

Po numerze wersji znajduje się blok services, który zawiera usługi tworzące środowisko. W tym samouczku określiliśmy tylko jedną usługę o nazwie webserver. Usługa webserver będzie używać obrazu nginx:alpine. Zdefiniowaliśmy również przekierowanie portów 8000:80. Oznacza to, że wszystkie żądania z portu 8000 na maszynie hosta będą przekierowywane do kontenera webserver na port 80, na którym działa Nginx.

Dyrektywa volumes pozwala na utworzenie współdzielonego woluminu między maszyną hosta a kontenerem, którego możemy użyć do trwałego przechowywania danych. W naszym yml fragmencie kodu udostępniamy lokalny folder app kontenerowi. Wewnątrz kontenera zostanie on umieszczony w lokalizacji /usr/share/nginx/html. Tym samym nadpisuje on domyślny katalog główny dokumentów dla Nginx. Możesz teraz zapisać i zamknąć plik.

Do tego momentu utworzyłeś przykładową stronę internetową HTML oraz plik docker-compose.yml z instrukcjami budowy skonteneryzowanego środowiska serwera WWW. Zobaczmy w następnym kroku, jak możemy uruchomić tę konfigurację.

Krok 3: Wykonanie polecenia Docker Compose

W tym kroku uruchomimy polecenie, które uruchomi nasze skonteneryzowane środowisko. Poniżej znajduje się pojedyncze polecenie, które zainicjuje proces pobierania obrazów Docker, utworzy kontener dla usługi webserver i uruchomi skonteneryzowane środowisko w tle:

Docker został zaprojektowany tak, aby działać szybko i wydajnie, więc po uruchomieniu powyższego polecenia najpierw sprawdza lokalny system pod kątem zdefiniowanego obrazu. Jeśli go brakuje, pobierze go z repozytorium Docker Hub. Powinien pojawić się wynik podobny do tego:

 compose up

Po zakończeniu wykonywania polecenia środowisko kontenera zacznie działać w tle. Możesz zweryfikować, czy działa, używając polecenia:

Powinieneś otrzymać podobny wynik:

 compose ps

Jeśli przejdziesz pod adres IP lub nazwę domeny swojego serwera i dodasz port 8000, tj. server_domain_or_IP:8000 powinieneś zobaczyć utworzoną przez nas przykładową stronę HTML:

docker compose webpage

Jeśli pamiętasz, skonfigurowaliśmy współdzielony wolumin między kontenerem a systemem hosta. Dzięki temu pliki w kontenerze są synchronizowane z plikami w systemie hosta. W związku z tym, jeśli dokonasz zmiany w pliku index.html, zsynchronizuje się on automatycznie z kontenerem, co zostanie odzwierciedlone po ponownym załadowaniu strony w przeglądarce. Możesz spróbować użyć edytora nano. W następnym kroku poznamy więcej poleceń.

Krok 4: Dodatkowe polecenia Docker Compose do zarządzania środowiskami kontenerów

Nowat, gdy pomyślnie wdrożyłeś stronę internetową za pomocą jednego polecenia docker-compose-up, zobaczmy kilka dodatkowych poleceń, które mogą być przydatne w zarządzaniu skonteneryzowanymi środowiskami.

Zaczniemy od polecenia logs. Logi mogą mieć kluczowe znaczenie podczas rozwiązywania problemów z awariami aplikacji. Najpierw uruchom następujące polecenie, aby wyświetlić logi wygenerowane przez kontener Nginx:

Oto przykładowy wynik logów:

 logs

Możesz wstrzymać wykonywanie środowiska bez zmiany stanu kontenerów za pomocą polecenia:

 compose pause

Następnie, aby wznowić działanie, użyj polecenia:

docker compose unpause

Możesz chcieć zatrzymać kontenery bez niszczenia ich danych. Aby to zrobić, użyj następującego polecenia:

stop

Aby usunąć kontenery, sieci i woluminy powiązane ze skonteneryzowanym środowiskiem, użyj polecenia:

docker compose down

Pamiętaj, że powyższe polecenie nie usuwa obrazów bazowych używanych przez Docker Compose do uruchomienia środowiska. Zapewnia to szybsze budowanie przy uruchamianiu środowiska, ponieważ sprawdza ono lokalną maszynę pod kątem pasujących obrazów. Jeśli chcesz całkowicie usunąć obraz bazowy, musisz określić to w poleceniu. W naszym przykładzie możemy usunąć nginx:alpine obraz za pomocą polecenia:

 image remove

Na koniec więcej poleceń można znaleźć w oficjalnej dokumentacji Docker Compose Command-line reference.

Podsumowanie

W tym samouczku zainstalowałeś Docker Compose na Ubuntu 20.04, utworzyłeś skonteneryzowane środowisko oparte na obrazie serwera WWW Nginx i dowiedziałeś się, jak zarządzać różnymi usługami za pomocą poleceń Docker Compose.

Jeśli chcesz dowiedzieć się, jak wdrożyć rzeczywistą dynamiczną aplikację, która zależy od kilku kontenerów, przeczytaj nasz samouczek dotyczący Wdrażania Laravel, Nginx i MySQL za pomocą Docker Compose. Pełną listę poleceń docker-compose można również znaleźć w oficjalnej dokumentacji Docker Compose.

Powodzenia!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.