728x90
www 통신
기본적으로 컨테이너는 www에 요청을 보낼 수 있다.
도커화된 애플리케이션 내부에서 웹 API 및 웹 페이지와 통신 가능하다.
도커화된 애플리케이션 내부에서 http에 요청을 보낼 수 있다.
컨테이너와 로컬 호스트와의 통신
특수 도메인 host.docker.internal
을 사용해야 하며, 이 도메인은 도커에 의해 인식된다.
// mongodb type
'mongodb://host.docker.internal:27017'
// http type 로컬호스트에 웹서버가 있고 그것과 통신할 때
'http://host.docker.internal:27017'
도커 컨테이너 내부에서 알 수 있는 호스트 머신의 IP로 변환된다.
도메인이 필요한 곳, IP가 필요한 곳 모두 사용 가능하다.
특수 도메인을 이용해 도커화된 앱에서 호스트 시스템으로의 통신이 가능하다.
컨테이너와 컨테이너 간의 통신
docker inspect [container_name]
커맨드를 이용해 컨테이너의 세부 정보를 확인하면, 컨테이너의 IP 주소를 확인 할 수 있고 이 IP 주소를 이용해 컨테이너 간 통신을 한다. (이제 host.docker.internal
특수 도메인은 사용할 수 없다.)
// 컨테이너 간 통신 시에는 IP를 사용
'mongodb://172.17.0.2:27017'
이미지를 빌드하고 컨테이너를 실행시키면 값을 제대로 불러오는 것을 확인할 수 있다.
하지만 매번 inspect로 IP를 얻어내고 하드코딩하여 이미지를 새로 빌드하는 것은 번거로운 작업이다.
내장 네트워크 생성
docker network create [network_name]
명령으로 도커 내부 네트워크를 생성한다.>
docker run --network [network_name]
명령을 사용하면 모든 컨테이너를 동일한 네트워크에 연결시킬 수 있다.
도커에서 --network 옵션을 사용해도 볼륨과는 달리 자동으로 네트워크를 생성하지 않는다. 따라서 네트워크 컨테이너를 직접 만들어 주어야 한다.
// docker network 생성
docker network cretae [network_name:favorites-net]
// docker network 확인
docker network ls
// 생성한 네트워크로 mongodb 컨테이너 실행
docker run -d --name mongodb --network favorites-net mongo
// 동일한 네트워크 안에 넣어주면 mongodb에 연결할 수 있다
docker run --name favorites --network favorites-net -d --rm -p 3000:3000 favorites-node
// docker network를 사용할 경우 컨테이너의 이름을 사용해 통신할 수 있다
'mongodb://mongodb:27017'
728x90