Elasticsearch to słynna wyszukiwarka analityczna o otwartym kodzie źródłowym, często używana w dziedzinie sztucznej inteligencji i uczenia maszynowego. Zwykle przechowuje dane nieustrukturyzowane, częściowo ustrukturyzowane i ustrukturyzowane. Wielu użytkowników musi zainstalować i używać Elasticsearch w kontenerach Docker, aby uruchamiać je w izolowanych środowiskach.
Jednak podczas wykonywania Elasticsearch w kontenerze Docker opartym na systemie Linux użytkownicy mogą napotkać „ Elasticsearch nie zakończył się normalnie ” z nieznanego powodu i sugerujemy sprawdzenie „ docker-cluster.log ' plik.
Ten artykuł zademonstruje metodę rozwiązania problemu „ Elasticsearch nie zakończył się normalnie ” błąd podczas wykonywania kontenera Elasticsearch w Dockerze.
Jak rozwiązać błąd „Elasticsearch nie zakończył się normalnie” podczas wykonywania kontenera Elasticsearch Docker?
Czasami kontener Elasticsearch nie działał normalnie, ponieważ był uruchamiany w kontenerze Linux i domyślnie jego limit pamięci wirtualnej jest zbyt niski. Może to uniemożliwić prawidłowe działanie kontenera i wyświetlić komunikat o błędzie „ Elasticsearch nie zakończył się normalnie ' jak pokazano niżej:
Aby rozwiązać podane problemy, użytkownik może zwiększyć liczbę mmap pamięci wirtualnej dla kontenera Linux, wykonując następujące czynności.
Krok 1: Uruchom aplikację Docker Desktop z WSL
Najpierw uruchom Docker Desktop z WSL. Umożliwia nam uruchamianie i zarządzanie kontenerami Linuksa w systemie Windows:
wsl -D docker-desktop
Krok 2: Zwiększ pamięć wirtualną
Następnie uruchom poniższe polecenie, aby zwiększyć limit pamięci wirtualnej dla kontenerów systemu Linux:
sysctl -w vm.max_map_count= 262144
Następnie wykonaj polecenie „exit”, aby wyjść z WSL:
Krok 3: Utwórz sieć
Teraz utwórz sieć dla kontenera Elasticsearch Docker. Jest to opcjonalne, ale może być przydatne do tworzenia kopii zapasowych w sieciach Elasticsearch:
sieć dokerów tworzy elastyczne
Krok 4: Uruchom Elasticsearch
Teraz uruchom obraz Elasticsearch, aby zainstalować i uruchomić wyszukiwanie Elastic w kontenerze:
uruchomienie dokera --nazwa es01 --internet elastyczny -P 9200 : 9200 -P 9300 : 9300 -T docker.elastic.co / elastyczne wyszukiwanie / elastyczne wyszukiwanie: 8.8.2
W powyższym poleceniu:
- “ -nazwa ” określa nazwę kontenera Elasticsearch.
- “ -internet Flaga ” służy do osadzenia sieci zewnętrznej.
- “ -P ” polega na zdefiniowaniu portów kontenera Elasticsearch.
- “ -T ” służy do przypisania „ TTY-pseudo ”terminal do kontenera:
Poniższe dane wyjściowe pokazują, że pomyślnie wykonaliśmy kontener Elasticsearch i rozwiązaliśmy problem „ Elasticsearch nie zakończył się normalnie ' błąd.
Tutaj kontener wygeneruje „ elastyczny ” hasło użytkownika. Korzystając z tych poświadczeń, użytkownik może uzyskać dostęp do Elasticsearch w przeglądarce. Spowoduje to również wygenerowanie tokena do skonfigurowania Kibany:
Krok 5: Weryfikacja
Nawigować do ' http://localhost:9200 ” w przeglądarce i sprawdź, czy kontener jest wykonywany na podanym porcie, czy nie:
Powyższe dane wyjściowe wskazują, że pomyślnie wykonaliśmy kontener na porcie „ 9200 ” i rozwiązał „ Elasticsearch nie zakończył się normalnie ' błąd.
Wniosek
Aby rozwiązać problem „ Elasticsearch nie zakończył się normalnie ”, użytkownicy muszą zwiększyć limit pamięci wirtualnej dla kontenera Linux. Aby to zrobić, najpierw uruchom pulpit Docker z WSL, używając „ wsl -d docker-desktop ' Komenda. Następnie zwiększ limit pamięci wirtualnej za pomocą „ sysctl -w vm.max_map_count=262144 ' Komenda. Następnie ponownie uruchom obraz, aby utworzyć i uruchomić kontener Elasticsearch. Ten post zilustrował metodę naprawy błędu „Elasticsearch nie zakończył się normalnie”.