메이쁘

[AWS][Docker] ec2 인스턴스에서 docker run과 동시에 Exited 되는 현상 해결방법 본문

Technology/그 외

[AWS][Docker] ec2 인스턴스에서 docker run과 동시에 Exited 되는 현상 해결방법

메이쁘 2022. 12. 16. 13:17

안녕하세요?

 

ec2 인스턴스에서 docker를 실행하는 작업을 하고 있었습니다.

평소에는 잘 실행되더니 인스턴스 재부팅 후에 갑자기 안되었습니다.

 

그래서 원인을 찾고, 이러한 이슈를 해결해가는 여정을 밟았습니다.

그 여정을 다른 사람들이 빠르게 뛰어가기 위해 이 글을 작성하게 되었습니다.

트러블슈팅에 대해 핵심만 담고, 짧게 작성하겠습니다.

 


1. 원인 확인

 

sudo docker ps -a

위 명령어로 현재 실행중인 도커 컨테이너(exit된 도커 컨테이너 포함) 를 확인해봤습니다.

 

그러니까

이와 같이 CREATED 된 지 2초만에 Exited가 되었더군요!

 

원래 안그랬는데.. 일이 하나 더 늘어난 느낌이었습니다..

(시간도 없고..)

 

 

그래서 비슷한 현상을 겪은 사람들에게 도움을 얻기 위해 열심히 구글링했습니다.

 

우선, 무슨 원인인지 알기 위해 도커 로그를 읽어봤습니다.

 

 

docker logs {해당 컨테이너ID}

이를 통해 종료 전 마지막 로그를 확인할 수 있었고,

드디어 원인을 찾았습니다!

 

 

아아.. 이미 80포트를 사용하고 있어 socket을 열지 못해 shutdown 되었다는군요..

(혹시 위와 같은 오류가 아니었다면.. 죄송합니다. 다시 구글로 가서 헤엄치셔야해요..)

 

원인은 찾았습니다.

이미 80포트를 사용하고 있어서!

 

 


2. 해결

 

해결방법은 간단합니다.

사용중인 80포트의 프로세스ID 를 찾아 제거하면 되죠?!

 

su root
netstat -nlp | grep :80
kill -9 PID

1) 우선, root로 전환합니다.

2) netstat 명령어를 통해 LISTEN 중인 네트워크 상태를 파악하고, 거기서 80포트 네트워킹 정보를 찾습니다.

3) 해당 정보의 PID를 입력해 kill 해버립니다.

 

 

 

[아파치] (98)Address already in use: make_sock: could not bind to address [::]:80 에러 발생시

오늘 서버를 돌리려고 하니까 아래와 같은 에러 메세지가 떴다.(98)Address already in use: make_sock: could not bind to address [::]:80좀 헤맸는데 해결책은 간단했다. 그러나 근본적 처방인지는 모르겠다.netstat

mytory.net

위 블로그 글을 참고하자면(저도 동일한 원인이었고)

아파치 서버가 80포트를 계속 점유하고 있었습니다.

 

 

그래서 !

아 간단하네~ 하고 kill 했는데..

그래도 Docker run이 되지 않고 동일한 현상이 발생했습니다..

 

하...

혹시나 삭제가 안되었나? 싶어서 위 과정을 거쳐 다시 네트워크 상태를 확인해봤습니다.

 

다시 있는거에요..

 

제거하고 제거해도 계속 사라지지않고 80포트를 점유하고 있었습니다..

아메바마냥 증식하네..?

 

 


3. 해결_진짜최종

 

저는 저 아메바 서버 아파치 서버 서비스 자체를 중지시키기로 결정했습니다.

 

sudo /usr/sbin/apachectl stop

그렇게 중지하고 다시 docker를 실행하니!

 

잘 동작하는군요 ㅎㅎㅎ

 

 


4. 끝줄

 

간만에 적어보는 트러블슈팅 게시글이네요.

지금까지 크고 작은 트러블슈팅이 자잘하게 많았습니다만..

적을 시간과 여유도 없었고, 

사실 책읽고 북갈피를 작성하고자 하는게 더 커서 후순위로 미루고 있었습니다.

 

이젠 트러블슈팅도 조금이나마 별도 문서에 정리해뒀다가 블로그에 포스팅하려구요.

 

 

 

감사합니다.

Comments