나는 배포서버에서 돌아가는 배치를 테스트하고 개발하기 위해 Docker를 사용하고 있다. 최근에, localhost에서는 잘만 curl이 되는데 도커에서는 curl이 안되는 현상이 있었다. 찾아보니, 도커에서는 외부로 curl하기는 커녕 localhost로도 curl하기 힘든 상황을 호소하는 사람들이 많았다.
Docker가 왜 이런 현상을 가지게 됐는지, 그리고 어떻게 하면 해결할 수 있을지 알아본다.
결론부터 말하겠다. localhost
, 127.0.0.1
이 아니라 host.docker.internal
을 이용하면 된다.
왜 이런 일이 발생할까?
host.docker.internal은 어떻게 구현되어 있을까?
ipconfig
을 이용해 내부 IP주소를 가져오고 이를 host.docker.internal에 매핑해준다.