도커 - 포트포워딩

0

MSA

목록 보기
8/10

  • 회색이 도커 컨테이너임, 그위에는 각각의 애플리케이션

  • 도커컨테이너에 1521 포트번호를 가진 오라클 컨테이너가 여러개 설치되어있을 경우 누구를 찾아야할지 모름, 외부에도 1521 있을 경우 더헷갈려 (포트번호는 같은 프로토콜 내에서 여러개 사용할 수 없다)

  • 컨ㅌ이너 프로세스를 만들 때 포트번호를 포트바인딩을 해줘야 함

    • = 포트포워딩 -> 외부에서 접속 할 수 있도록 가상화 한다. (9000, 8000번으로 가상화시켜서 연결)
  • 같은 포트번호로 서비스가 되면 안되기 때문에(어차피 실행도안되긴함) 도커 컨테이너에 올릴 때 포트포워딩을 안하면 안됨.

  • #8001 번으로 가상화된 포트를 쓰는 서비스가 #8000으로 가상화된 컨테이너를 사용할수 있을 까 ?

    • 안됨, 같은 네트워크 그룹으로 묶어줘야 함 -> 네트워크 그룹을 묶지 않으면 다른 도커의 서비스를 사용할 수 없다.
    • 8000번은 가상화된 포트번호 (도커의 바깥부분에서 도커의 컨테이너에 접속할 수 있도록 가상화 시킨 것), 171.0.0.1,2 는 네트워크 그룹으로 묶은 것
    • 같은 네트워크 그룹으로 묶은 도커 내부에서는 가상화된 포트번호를 쓰는게 아니라 도커 내부에서 쓰이는 1521을 써야함
  • 도커컨테이너 내부의 A가 외부의 1521에 접속하려면 jdbc:oracle:thin:192.168.*.*:1521:xe로 접속

  • catalog가 customers1을 호출할 때는
    restTemplat.getForObject("http://171.0.0.4:8082") 로 연결

    • 동일하게 같은 네트워크로 묶어 준 후, customer의 원래 포트번호인 8082를 사용한다.
  • 같은 네트워크 그룹으로 일단 묶고 그 가상화된 ip를 계속 사용하는 것이 테스트할때 굉장히 번거로움

    • 컨테이너 이름으로 대체해서 사용 171.0.0.1 과 같은 포트번호를 대신해서 사용! .getForObject("http://컨테이너이름:8082") 처럼 사용 가능.
      컨테이너 이름은 의미있게 지정하는 것이 좋다.

  • 데이터를 주고 받기 위해선 같은 네트워크 그룹으로 묶어줘야되고,
    내부-> 외부 또는 외부 -> 내부로 접속할 땐 가상화된 포트번호(포트포워딩)을 사용해서 접근한다.

profile
백엔드를 공부하고 있습니다.

0개의 댓글