networking:컨테이너 통신

전종원·2022년 11월 15일
0

컨테이너가 할 수 있는 통신 종류

  • 웹 서버로의 통신 -> 그냥 됨
  • 호스트 머신과의 통신
  • 다른 컨테이너와의 통신

1. 호스트 머신과의 통신

  • 웹서버와 MongoDB에 접근하는 도커 앱이 있을 때 MongoDB가 컨테이너에 없으면 에러가 발생한다.
  • 호스트 머신에 설치된 mongoDB에 host.docker.internal을 도메인 주소로 사용하여 도커가 접근할 수 있다.

2. 컨테이너간 통신하는 법

2.1. 기본적인 방법

  • MongoDB 컨테이너 생성 docker run -d --name mongodb mongo
  • MongoDB 컨테이너 IP 확인 docker container inspect mongo
  • 애플리케이션 코드 내 DB 접근 url에 MongoDB 컨테이너 IP 사용
mongoose.connect(
  'mongodb://172.17.0.2:27017/swfavorites',
  { useNewUrlParser: true },
  (err) => {
    if (err) {
      console.log(err);
    } else {
      app.listen(3000);
    }
  }
);

2.2. 더 좋은 방법(--network 태그 이용)

  • 네트워크 생성 docker network create [network name]
    • 도커 내부에 생성되는 네트워크이다.
    • docker network ls 로 확인 가능
  • 특정 네트워크를 아용하는 컨테이너 생성
    docker run -d --name mongodb --network favorites-net mongo
  • 애플리케이션 내 통신코드에서 IP주소를 연결하려는 컨테이너 이름으로 수정
mongoose.connect(
  'mongodb://mongodb:27017/swfavorites',
  { useNewUrlParser: true },
  (err) => {
    if (err) {
      console.log(err);
    } else {
      app.listen(3000);
    }
  }
);
  • 코드를 수정했으므로 이미지 리빌드 docker build -t favorites-node .
  • 컨테이너 생성
    docker run --name favorites -d --rm -p 3000:3000 --network favorites-net favorites-node

Summary

0개의 댓글