Chcesz wiedzieć, co robią aplikacje Docker w tle? Poznajmy tajne okno, zwane dziennikami, do twoich kontenerów, które pokazuje każdy ich ruch. Dzienniki są bardzo pomocne w rozwiązywaniu problemów. Ale zanim zaczniemy, przyjrzyjmy się szybko, czym są Docker i Docker Compose.
Docker pozwala spakować aplikacje w małe kontenery i uruchomić je na większości systemów operacyjnych bez żadnych dodatkowych zależności. To jak umieszczenie aplikacji w małych pudełkach zwanych kontenerami, które działają tak samo wszędzie. Zrozumienie kontenerów jest ważnym warunkiem wstępnym do nauki Docker Compose. Dlatego zachęcam cię do przeczytania najpierw naszego artykułu na temat korzyści z konteneryzacji.
Docker Compose jest dostarczany z Docker i upraszcza tworzenie wielu aplikacji kontenerowych poprzez łączenie ich usług, sieci i magazynu. Dzienniki kontenerów Docker i logowanie Docker Compose pomagają deweloperom zobaczyć, co robi każdy kontener.
Czy ciekawisz się dziennikami Docker Compose? Jesteś we właściwym miejscu. Ten artykuł wyjaśni podstawy dzienników Docker Compose i omówi bardziej zaawansowane szczegóły. Dowiedz się, jak maksymalnie wykorzystać Docker Compose w swoich projektach.
Znaczenie dzienników Docker Compose
Wyobraź sobie dewelopera, który uruchamia aplikację za pomocą Docker, ale pomija konfigurację dzienników Docker. Na początek wszystko wydaje się w porządku. Ale wkrótce użytkownicy natrafiają na błędy, a aplikacja zwalnia. Bez dzienników Docker deweloper nie może zobaczyć, co poszło nie tak wewnątrz kontenerów Docker. Dzienniki Docker Compose są jak szczegółowy zapis tych kontenerów. Rejestrują każdy szczegół tego, co się dzieje, co jest ważne dla późniejszego znajdowania i rozwiązywania problemów.
Jako developer lub administrator systemu, musisz rozumieć, co się dzieje wewnątrz i między wielowarstwowymi aplikacjami. W tym miejscu dzienniki Docker Compose działają jako przydatne narzędzie. Dlaczego więc te dzienniki są konieczne?
-
Rozwiązywanie problemów i debugowanie
Sprawdź dzienniki docker, jeśli aplikacja nie działa prawidłowo lub napotyka błędy. Dzienniki Docker są pierwszymi zasobami, które możesz sprawdzić, aby śledzić problem. Badając dzienniki docker, deweloperzy mogą zidentyfikować główną przyczynę i źródło problemów, niezależnie od tego, czy jest to błąd w kodzie, błędna konfiguracja czy problemy z zasobami.
-
Monitorowanie stanu aplikacji
Regularne monitorowanie dzienników aplikacji pomaga zrozumieć ogólny stan usług. Dzienniki mogą ujawnić wczesne znaki ostrzegawcze, takie jak powtarzające się błędy i powolne odpowiedzi. Zaobserwowanie tych wzorców wcześnie może zapobiec potencjalnym problemom w przyszłości.
-
Audyt i zgodność
W przypadku aplikacji, które muszą spełniać określone standardy, dzienniki docker są pierwszym dowodem na to, czy aplikacja zachowuje zgodność z wytycznymi. Te dzienniki odgrywają również istotną rolę w monitorowaniu autoryzowanych lub nieautoryzowanych działań.
-
Optymalizacja
Dzienniki są cennymi zasobami do optymalizacji oprogramowania poprzez dostarczanie danych wydajności. Na przykład deweloperzy mogą zidentyfikować powoli działające zapytania, nieefektywne ścieżki kodu lub niedostatecznie wykorzystane zasoby.
Tworzenie przepisu Docker: wdrażanie serwera webowego
W tej sekcji przejdziemy razem przez tworzenie przepisu Docker. Najpierw musimy coś zbudować, aby rozpocząć naszą podróż z dziennikami Docker Compose. Wdrażamy dla tego celu serwer webowy. Aby utworzyć plik Docker, po prostu uruchom nano plik Dockerfile w wybranym folderze na VPS z następującą zawartością, a następnie zapisz:
FROM nginx:alpine RUN rm /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Czym zajmuje się każda linia tego kodu?
- Zaczynamy od lekkiej bazy, nginx:alpine.
- Następnie usuwamy domyślną stronę powitalną Nginx.
- Potem upewniamy się, że serwer webowy nasłuchuje na porcie 80.
- Na koniec uruchamiamy serwer Nginx za pomocą CMD.
Teraz nasz plik Docker jest gotowy. Przejdziemy do kolejnego kroku, czyli stworzenia pliku Docker Compose. Oto struktura docker-compose.yml plik:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.html:/usr/share/nginx/html/index.html
Rozłóżmy to, aby w pełni zrozumieć każdą część:
- Używamy wersji 3.8.
- W następnej linii nadajemy naszej usłudze nazwęweb“.
- Następnie instruujemy Docker, aby zbudował nasz serwer sieciowy z bieżącego folderu.
- Mapujemy port 8080 na hoście do portu 80 w naszym kontenerze, aby umożliwić serwerowi sieciowemu nawiązanie połączenia.
- Na koniec konfiguracja volumes mapuje index.html z dysku hosta do kontenera. Później możesz utworzyć index.html plik z dowolną zawartością i umieścić go tam, gdzie Dockerfile i docker-compose.yml pliki istnieją.
Teraz pora uruchomić nasz kontener Docker za pomocą Docker Compose. Po prostu uruchamiamy docker-compose up.

Po uruchomieniu docker-compose up polecenia Docker pobierze wymagane obrazy z internetu i skonfiguruje je zgodnie z instrukcjami w naszych plikach konfiguracyjnych.
Aby sprawdzić, czy nasz serwer sieciowy działa, otwórz przeglądarkę, wpisz adres IP VPS i spróbuj uzyskać dostęp do portu 8080.

Warto zauważyć, że możesz użyć docker-compose up -d aby uruchomić kontener w tle.
Dostęp do dzienników za pomocą Docker Compose
Teraz nasz serwer sieciowy jest gotowy, uruchomiony i działający. Już generuje logi i zapisuje te informacje do późniejszego użytku. Dostęp do logów docker compose jest niezbędny do diagnozowania problemów i monitorowania. Ale jak możemy odczytać te logi? To właśnie do czego służy docker-compose logs Upewnij się, że jesteś w folderze, w którym znajduje się konfiguracja, i uruchom to polecenie.

Czasami możesz chcieć zobaczyć logi w czasie rzeczywistym, podczas gdy są generowane. Po prostu dodaj -f na końcu poprzedniego polecenia i uruchom docker-compose logs -f.

Niektóre aplikacje oparte na Docker mogą nie dostarczać znaczników czasu w swoich logach. Dlatego możesz użyć docker-compose logs -t aby dodać zapisany czas dla każdej linii logu.

Logi Docker mogą również wyświetlać najnowsze wpisy. Aby to zrobić, użyj docker-compose logs --tail 10 aby zobaczyć ostatnie 10 wpisów dziennika. Docker łączy logi z ostatnimi wpisami, a docker logs tail jest szczególnie przydatny, gdy chcesz szybko sprawdzić niedawną aktywność bez przewijania całej historii dziennika.

Głównym celem korzystania z Docker Compose jest tworzenie aplikacji wielokontenerowych. Dlatego możesz potrzebować odczytać logi dla konkretnej usługi. Aby to zrobić, użyj docker-compose logs -f SERVICEpamiętając, aby zastąpić SERVICE z rzeczywistą nazwą swojej usługi.

Logowanie Docker
Ekosystem Docker może stać się bardziej złożony dla zintegrowanych aplikacji, szczególnie w dużych środowiskach. Jak już wiemy, każdy kontener generuje logi. Dlatego mechanizm znany jako Logging Driver jest odpowiedzialny za odbieranie, dostarczanie i przechowywanie logów. Domyślnie Docker używa plików JSON dla Logging Driver, ale obsługuje również wiele innych sterowników, każdy ze swoimi zaletami i wadami.
Wszyscy zgadzają się, że logi są kluczowe w różnych obszarach, w tym przy rozwiązywaniu problemów i poprawie wydajności systemu. Poniżej omówimy dwa główne aspekty korzystania z logów kontenerów:
- Monitorowanie: Głównym celem logów jest monitorowanie. Zazwyczaj ujawniają one ogólny stan naszych aplikacji konteneryzowanych.
- Rozwiązywanie problemów: W przypadku problemów logi pomagają nam wykryć błędy aplikacji.
Ponieważ logi docker i docker compose są generowane na bieżąco, mogą zapełnić całą pamięć masową VPS. Dlatego potrzebujemy strategii zarządzania przestrzenią dyskową zwanej Log Rotation Policy. Aby utworzyć i użyć tę politykę, wróć do docker-compose.yml pliku i otwórz go. Następnie dodaj sekcję logging z poniższą konfiguracją:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.htm:/usr/share/nginx/html/index.htm logging: driver: json-file options: max-size: "200k" max-file: "10"
Możesz stale dostosowywać max-size i max-file do swoich potrzeb.
Modele dostarczania dzienników Docker
Inżynierowie mogą wybrać inny model logowania w bardziej zaawansowanych środowiskach niż domyślne sterowniki JSON, takie jak Syslog, fluentd i inne. Jednak ważne jest, aby pamiętać, że sterownik json-file jest odpowiedni do większości scenariuszy logowania i może nie być potrzeby odchodzenia od trybu domyślnego.
W zależności od architektury aplikacji lub wymagań organizacyjnych możesz być zmuszony do korzystania z centralnych rozwiązań logowania znanych jako Log Aggregators. Te usługi, takie jak Elasticsearch, Logstash, Kibana itp., są zaprojektowane aby odbierać logi z różnych źródeł, konsolidować je, przechowywać i analizować w jednej centralnej lokalizacji.
Z drugiej strony powinieneś przechowywać swoje logi przy użyciu bardziej ekonomicznych rozwiązań pamięci masowej. Rozważ scenariusz, w którym VPS używa szybkiej i drogiej pamięci masowej; może nie być ekonomiczne wykorzystywanie takich zasobów premium do przechowywania logów, które mogą być potrzebne tylko do wiadomości.
Dostępnych jest wiele modeli logowania, każdy ze swoimi zaletami i wadami. Niezbędne jest dokładne ocenę każdego modelu i wybór jednego w oparciu o swoje konkretne potrzeby.
Postaw na ekonomiczny lub premium Linux VPS do hostowania strony internetowej lub zdalnego pulpitu, w najniższej dostępnej cenie. VPS Działa na Linux KVM dla większej wydajności i wykorzystuje wydajny sprzęt z pamięcią masową NVMe SSD dla większej szybkości.
Czytaj więcejWnioski
Zrozumienie logów Docker Compose jest kluczowe. Pomagają w efektywnym zarządzaniu i debugowaniu aplikacji Docker. Nauka dostępu do logów i monitorowania ich poprawia rozwiązywanie problemów i zwiększa wydajność oraz bezpieczeństwo aplikacji. Niezależnie od tego, czy rozwijasz czy administrujesz systemami, korzystanie z logów Docker Compose jest niezbędne. Zapewnia to, że zarządzanie kontenerami jest efektywne.
Często zadawane pytania
Jak filtrować dzienniki Docker Compose według czasu?
Docker Compose nie oferuje bezpośredniej metody filtrowania logów według czasu. Możesz jednak filtrować logi, przekazując je przez grep do dopasowania wzorców. Na przykład możesz użyć: docker-compose logs | grep "2023-04-06", zamieniając "2023-04-06" na konkretny wzorzec daty lub czasu, którego szukasz.
Jak zatrzymać kontenery uruchomione za pomocą Docker Compose?
Przejdź do katalogu zawierającego plik docker-compose.yml i uruchom polecenie docker-compose down.
Jak ręcznie usunąć pliki dziennika?
Zamiast konfigurować rotację logów w pliku docker-compose.yml, możesz ręcznie usunąć pliki logów Docker JSON z /var/lib/docker/containers/<container_id>/. Przed zrobieniem tego powinieneś zidentyfikować ID kontenera Docker za pomocą docker ps -a.
Czy mogę obserwować dzienniki Docker w czasie rzeczywistym?
Tak, możesz. W tym celu użyj polecenia docker logs razem z opcją -f lub --follow. Spowoduje to wyświetlenie dziennika Docker dla Ciebie.