이전 Spring boot 환경에서 Docker로 ELK 사용하기 포스팅에서 Docker에 ELK를 실행하였습니다.
로컬환경에서는 정상적으로 실행되었는데 개발환경에서 Elasticsearch가 아래의 에러가 발생하면서 실행이 안되었습니다.
elasticsearch exited with code 137
해당 에러에 대해서 확인해보니 Docker의 Out of Memory 에러였습니다. Docker의 기본 메모리 세팅은 2GB인데, 이 부분을 4GB 이상으로 설정해주면(혹은 더 크게) 해결이 된다고 합니다.
Docker의 메모리는 Docker의 모드에 따라서 다르게 설정이 가능합니다. Windows Docker Desktop은 모드가 Hyper-V 모드, WSL 모드가 있는데 Hyper-V 모드의 경우는 아래와 같이 Setting->Resources->Advanced 메뉴에서 Memory를 변경할수 있습니다.
WSL 모드의 경우 아래의 이미지처럼 .wslconfig 파일에서 구성을 해야 한다고 나옵니다.
C:\사용자\{사용자명} 폴더에 .wslconfig 파일을 아래와 같이 작성합니다.
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB
# Sets the VM to use two virtual processors
processors=2
변경 사항이 적용되려면 WSL 2를 재시작해야 합니다. Docker Desktop을 종료하고 PowerShell이나 명령 프롬프트에서 다음 명령을 실행하여 WSL 2 인스턴스를 종료해줍니다.
wsl --shutdown
이후 Docker Desktop 을 실행해주고 docker compose up 명령어를 실행하면 정상적으로 실행이 되는것을 확인할 수 있습니다.
참고자료
https://medium.com/geekculture/how-to-limit-memory-usage-on-docker-desktop-wsl-2-mode-2a4a719f05fd
'개발 > Docker' 카테고리의 다른 글
[Docker] [Kafka] cluster 구성하는 방법 (0) | 2024.02.23 |
---|---|
[Docker] [Spring Boot] [Kafka] [ELK] 다른 Docker Container 간 통신 (0) | 2024.02.14 |
[Docker] Docker에서 Kafka 실행하기 (0) | 2024.02.13 |
[Docker] Dockerfile와 docker compose 파일의 차이 (1) | 2024.02.13 |
[Docker] Spring boot 환경에서 Docker로 ELK 사용하기 (0) | 2024.01.23 |