블루 컨테이너가 동작 중일 때 도커 컴포즈를 이용하여 그린 컨테이너를 만들고, 실행시키는 명령어를 입력했다.
도커 컴포즈 명령어는 잘먹혔는데, 문제는 컨테이너가 Created 상태에서 도무지 Up 상태로 변경되지 않는다는 것이었다. 이와 더불어, EC2 접속이 안되는 문제가 발생했다. 즉 먹통이 됐다!
TRY 1: 로그... 로그를 보자
docker logs spring-green
Up이 되지 못하는 비운의 컨테이너의 이름은 spring-green이었다. 그런데 컨테이너 로그가 아무것도 안보였다. 쩝
그래서 도커 데몬 로그도 보고, 괜히 spring-blue나 aws 관련 로그를 뒤적거려봤는데 이상이 없었다.
일단 다른 것들을 먼저 확인해보기 시작했다.
TRY 2: 네트워크를 보자
뮤넥팅 서버는 레디스를 인증/인가 과정에서 사용하고 있었기 때문에 레디스를 컨테이너로 띄워서 이것을 사용하고 있었다. 따라서 munecting-network 라는 도커 네트워크를 만들고, 해당 네트워크에 레디스 서버와 뮤넥팅 서버를 위치시켰다. 그러므로 처음에는 도커 네트워크 상에 문제가 발생했나 싶었지만, 네트워크 연결에는 전-혀 이상이 없었다.
TRY 3: 로그...로그를 보자
그렇다 나는 연어이다 수미상관 구조를 좋아한다
컨테이너 로그로는 더 이상 유의미한 정보를 얻을 수 없었다. 그치만, but, by the way, 나는 도커 컴포즈를 이용해서 컨테이너를 구동시켰으니 도커 컴포즈 로그가 남아있지 않을까?
docker-compose logs spring-green
"State": {
"Status": "created",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 128,
"Error": "failed to create task for container: Unavailable: error reading from server: EOF: unavailable",
"StartedAt": "0001-01-01T00:00:00Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
고맙다 고마워
gpt에게 물어보니 1. Docker 데몬 또는 2. 시스템 자원 부족이 원인일 수 있다고 한다.
도커 데몬에는 문제가 없음을 확인하였기 때문에, 시스템 자원 부족...을 드디어 의심하기 시작했다. ㅜ
현재 AWS 프리티어를 이용 중이기 때문에 t3.micro 인스턴스를 사용하고 있었는데, 이 친구 RAM이 1GB란다.
메모리 사용량을 확인해봤다.
total used free shared buff/cache available
Mem: 914Mi 453Mi 422Mi 2.7Mi 188Mi 460Mi
Swap: 0B 0B 0B
메모리 부족이 원인이 맞겠구나 싶었다. 구글링 결과 다음 포스트를 발견했다.
https://sundries-in-myidea.tistory.com/102
스왑 메모리를 이용해서 문제를 해결한다.
해당 포스트에서 소개하는 방법대로, 스왑 파일을 이용했다.
이후 다시 블루 컨테이너가 구동 중인 상태에서 그린 컨테이너를 구동시켜보았고, 문제 없이 Up상태로 변경되는 것을 확인할 수 있었다. (물론 그 반대도 가능)
에러 해결 완료!
'Error' 카테고리의 다른 글
[Redis Error] Unable to send PING command over channel (0) | 2024.10.22 |
---|---|
springboot Could not move temporary workspace 오류 (0) | 2024.05.01 |
pull 했는데 FETCH_HEAD warning: skipped previously applied commit (0) | 2024.04.11 |
List의 NULL을 방지하려고 초기화해줬는데 왜 NPE가? (0) | 2024.01.15 |
application.yaml 설정- org.hibernate.sql 작동 안함 (0) | 2024.01.09 |