섹션 4 - 네트워킹: (교차) 컨테이너 통신

컨테이너에서 네트워크 통신이 필요한 경우

  1. 컨테이너에서 WWW 통신

    • ex) OpenAPI 호출

    • 특별한 설정 없이 웹 API 및 웹 페이지와 통신 가능

    • 그냥 원래 외부 API 호출과 똑같음

  2. 컨테이너에서 로컬 호스트 머신으로의 통신

    • ex) 로컬 DB에 연결

    • host.docker.internal 붙여서 사용 -> 도커가 로컬 호스트 머신에서 사용하는 내부 IP주소로 변환한다.

      http://host.docker.internal:{port}   
  3. 컨테이너 간 통신

    • ex) 다른 컨테이너에 있는 DB에 연결

    • 수동으로 컨테이너의 IP주소를 조회해서 연결

    docker container inspect {컨테이너 이름}   //컨테이너 정보 조회
    http://{IP 주소}:{port}   
    1. 컨테이너 네트워크를 통해 통신

    컨테이너 네트워크 생성

    docker network create {네트워크 이름}

    네트워크 아래에서 컨테이너 실행

    docker run {컨테이너 이름} --network {네트워크 이름}

    컨테이너 이름으로 요청 보내기 -> 도커가 컨테이너 이름을 실제 IP주소로 변환한다.

    http://{컨테이너 이름}:{port}

도커에서 IP주소 변환하는 과정

도커는 컨테이너가 네트워크 통신을 할 때 사용하는 host.docker.internal와 컨테이너 이름을 소스 코드에서 실제 IP주소로 변경하지 않는다.

도커는 컨테이너의 이름을 보고, 코드에 플러그인된 컨테이너의 IP주소를 연결한다. (소스 코드를 변경하는 게 아니라 내부적으로 IP주소를 참조한다는 뜻인 듯)

컨테이너에서 요청을 전송할 때에만 자동 IP주소 변환이 발생한다. 예를 들어, 사용자가 웹 앱을 방문하여 브라우저에서 실행되는 JavaScript가 컨테이너에 요청을 보내면 도커는 변환하지 않는다.

도커 네트워크 드라이버 설정 가능

보통 Bridge 드라이버 사용

https://docs.docker.com/engine/network/

Last updated