개발 이야기/인프라
[Docker] bind: address already in use
안녕하세요? 제이온입니다.
이번 포스팅에서는 도커를 사용하다가 발생한 오류를 설명하고, 해결 방법을 공유하고자 합니다.
에러 전문
ERROR: for elk_elasticsearch_1
Cannot start service elasticsearch: driver failed programming external connectivity
on endpoint elk_elasticsearch_1
(a842a43a72518fc8f8f1231a3503e2641e3a641658c1fde6aa71125ed6665dcb):
Error starting userland proxy: listen tcp4 0.0.0.0:9300: bind: address already in use
문제의 원인
정확한 이유는 잘 모르겠으나, 주로 도커 컨테이너를 제대로 내리지 않고 빡종하는 경우 종종 발생했습니다. 에러를 읽어보면 알 수 있듯이, 특정 포트를 이미 사용하고 있어서 컨테이너를 띄우지 못하는 것입니다. 저 같은 경우는 Elasticsearch 컨테이너를 띄우려다보니 이런 현상이 발생했습니다.
해결 방법
docker stop $(docker ps -a -q) # Stop all containers
docker rm -fv $(docker ps -aq) # Remove all containers
sudo lsof -i -P -n | grep <port number> # List who's using the port
위 코드처럼 도커 컨테이너를 전부 멈추고, 싹다 지운 다음에 방금 전 에러에서 사용 중이던 포트 번호를 점유하고 있는 프로세스를 찾아냅니다. 이후 'kill -9 [프로세스 ID]' 명령어를 실행하여 해당 프로세스를 종료하면 됩니다.
'개발 이야기 > 인프라' 카테고리의 다른 글
[AWS에 Spring 초간단 배포하기] DNS 설정 (0) | 2022.04.30 |
---|---|
[AWS에 Spring 초간단 배포하기] SSH 접속 및 Spring 배포 (0) | 2022.04.30 |
[AWS에 Spring 초간단 배포하기] RDS 설정 (0) | 2022.04.30 |
[AWS에 Spring 초간단 배포하기] EC2 설정 (0) | 2022.04.30 |
[CI / CD] 당신은 정말 지속적인 통합(CI)을 하고 있는가? (1) | 2021.10.15 |
댓글