Infra/Docker

[Docker] 도커 컨테이너 외부 통신: host.docker.internal

당닝 2021. 12. 1. 14:43
728x90

도커 컨테이너에서 localhost를 실행하면 컨테이너 내의 localhost이므로 PC의 localhost(127.0.0.1)와는 다르다.

그럼 PC의 localhost와 통신하기 위해선 어떻게 해야할까?

 

host.docker.internal을 이용하면 된다.

 

PC localhost에 8080번 포트를 통해 웹 서버를 띄워놓고 확인을 해보겠다.

 

apt-get update
apt-get install curl

도커 컨테이너에서 통신 확인을 위해 curl을 설치한다.

 

curl localhost:8080
curl: (7) Failed to connect to localhost port 8080: Connection refused

 

도커 네트워크 내에서는 8080번 포트를 이용하지 않으므로 당연히 연결이 거부된다.

 

curl host.docker.internal:8080
<!DOCTYPE html>
<html>
    <body>
        <div>
            Test
        </div>
    </body>
</html>

다음과 같이 localhost:8080의(PC) 소스코드를 확인할 수 있다.

 

PC의 localhost와 통신이 필요한 상황이라면 localhost -> host.docker.internal 로 변경해 통신을 하면 되는 것이다.

728x90