본문 바로가기

잡다/docker

[오늘의 삽질] local 환경에서의 docker & Error: connect EHOSTUNREACH

https://betterstack.com/community/guides/scaling-nodejs/nodejs-errors/#8-ehostunreach

 EHOSTTURNREACH 에러는 소프트웨어가 네트워크 / 호스트에 대한 경로를 찾지 못해 TCP 연결에 실패했음을 의미한다. 이 에러가 발생하는 경우 방화벽 등에 의해 트래픽이 차단된 것일 수 있으므로 방화벽 시스템이나 인바운드 규칙 등을 살펴보라고 한다.

 로컬의 다른 어플리케이션으로는 연결이 되지만, docker 컨테이너 환경에서만 유난히 동작하지 않는 경우 docker 환경 자체에 에러가 발생한 것일 수 있다( 특히 window 환경이라면 ). 컴퓨터 또는 도커 환경을 재부팅해보자.

  • 윈도우: docker desktop을 재시작한다.
  • 다른 환경: sudo systemctl restart docker 명령을 통해 도커를 재시작한다.

문제 상황

잘 동작하던 docker에서 갑자기 Error: connect EHOSTUNREACH 에러를 발생시켰다.

발생한 에러 메시지

정확한 상황은 다음과 같다.

  • 서버는 테스트를 목적으로 로컬 환경에서 8080 포트에 대해 열어두고 있다.
  • 서버는 AWS 환경의 RDS-mysql을 데이터베이스로 사용하고 있다.
  • 서버 - RDS 사이의 연결에는 기존에 어떤 문제도 없었다.
  • 오늘 EC2와 RDS를 VPC로 연결했다.

오늘 발생한 변화라고는 마지막 줄 밖에 없기 때문에 혹시 VPC 연결 때문에 EC2 외부로는 노출이 되지 않는걸까 싶어 mysql workbench를 이용하여 RDS에 연결해보았다. 물론, 퍼블릭 접속을 끊은 것은 아니므로 당연히 연결됬다.

문제 없이 연결되는 모습

MySQL Workbench가 동작한다는 것은 최소한 RDS를 VPC로 EC2 환경과 연결했기 때문은 아님을 의미한다.

 이후 node 환경이 문제인가 싶어 docker 이미지를 사용하지 않고 윈도우 환경에서 직접 nest.js 어플리케이션을 실행해봤지만, 아무 문제 없이 잘 동작했다. AWS도, node도 문제가 아니라면 대체 뭐가 문제일까 고민했다.

의외의 해결책

 만약 로컬 파일이 문제라면, 현재 docker hub 상에 올려 둔 서버 이미지는 잘 동작할 것이라 생각하고 docker pull 명령을 이용하여 서버 상의 이미지를 다운로드 받으려 시도했다. 그런데, 이번에는 다음과 같은 에러가 발생했다.

https://stackoverflow.com/questions/47580528/error-response-from-daemon-get-https-registry-1-docker-io-v2-dial-tcp-look

 

Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.1:53: no s

I am new to dockers. When I am running the docker pull sonarqube I am getting the following error. Error response from daemon: Get https://registry-1.docker.io/v2/: dial TCP: lookup registry-1.doc...

stackoverflow.com

 전반적인 에러들이 도커 환경에 문제가 있다고 말해주고 있었다. 사실 예전부터 윈도우 환경에서 도커를 사용하면서 원인 모를 에러를 많이 만났고, 대부분의 경우 도커 환경 자체에 에러가 생긴 상황이었다. 여기서 가장 쉬운 해결책은 컴퓨터 또는 도커 서비스를 재시작 하는 것이다.

재시작 후 TypeOrmModule이 정상적으로 연결되어 있는 모습


 도커 환경이 편하기는 하지만, 가끔씩 에러가 발생해서 엉키는 경우가 있다. 에러가 발생한 원인을 찾아서 몇 시간동안 검색하다가 "내일 하자" 라는 생각으로 컴퓨터를 종료했는데, 다음날 정상적으로 동작하는 모습을 보면... 가끔 괴롭다.