Docker Network(컨테이너 간 통신)

su-mmer·2022년 10월 12일
2

아묻따 도커 공부

목록 보기
15/18

최신 글 바로가기

Docker Network

컨테이너 간 통신 종류

www 통신

기본적으로 컨테이너는 www에 요청을 보낼 수 있다.
도커화된 애플리케이션 내부에서 웹 API 및 웹 페이지와 통신 가능하다.
도커화된 애플리케이션 내부에서 http에 요청을 보낼 수 있다.

컨테이너와 로컬 호스트의 통신

host.docker.internal 이 특수 도메인은 도커에 의해 인식된다.
도커 컨테이너 내부에서 알 수 있는 호스트 머신의 IP로 변환된다.
도메인이 필요한 곳, IP가 필요한 곳 모두 사용 가능하다.
특수 도메인을 이용해 도커화된 앱에서 호스트 시스템으로의 통신 가능

컨테이너와 컨테이너간의 통신

DB 컨테이너의 IP를 docker inspect <db container name> 명령을 이용해 확인하고 해당 IP 주소로 연결하면 컨테이너간 통신을 할 수 있다.

-app.js에서 DB연결이 필요한 부분에 DB 컨테이너의 IP 주소를 입력하면 연결이 가능하다.

  • postman에서 확인한 결과

하지만 DB 컨테이너의 IP 주소가 변경될 때마다 노드 앱에서 주소를 변경해야 하는 것이 번거롭다.

내장 네트워크(다수의 컨테이너 통신 가능)

docker run --network <network name> 명령을 사용하면 모든 컨테이너를 하나의 동일한 네트워크에 넣을 수 있다.
모든 컨테이너가 서로 통신할 수 있는 네트워크 생성
도커에서 --network 옵션을 사용해도 볼륨과는 달리 자동으로 네트워크를 생성하지 않는다. 따라서 네트워크 컨테이너를 만들어주어야 한다.
docker network create <network name> 명령으로 도커 내부 네트워크를 생성한다.

  • docker run -d --name mongodb --network favorites-net mongo
  • docker run --name favorites --network favorites-net -d --rm -p 3000:3000 favorites-node
  • 동일 네트워크 안에 있다면 DB 컨테이너의 이름을 넣어 통신할 수 있다.

0개의 댓글