[Docker] 컨테이너와 호스트 머신 간 통신하는 방법 한 번에 정리하기

2025. 2. 1. 07:37·Docker
반응형

컨테이너와 호스트 머신 간 통신 시 생기는 문제

우리가 로컬에서 여러 애플리케이션을 실행하면, 해당 애플리케이션들과 통신하기 위해 localhost를 사용한다. 하지만, 컨테이너 위에서 실행되는 애플리케이션은 격리된 네트워크망 내부에 있기 때문에 localhost를 사용하면 호스트 머신에서 실행되는 애플리케이션과 통신하지 못한다.

 

호스트 머신에서 실행 중인 웹 애플리케이션과 Mongo DB의 통신을 생각해보자. Mongo DB가 27017번 포트를 점유해 실행된다고 할 때, 웹 애플리케이션에서 Mongo DB에 접속하기 위해서는 다음 주소를 사용하면 된다.

mongodb://localhost:27017/[데이터 베이스 이름]

 

하지만 컨테이너 위에서 실행 중인 웹 애플리케이션과 호스트 머신에서 실행 중인 Mongo DB와 통신하려 할 때 위의 주소를 사용하면. 27017번 포트에서 실행 중인 Mongo DB를 찾지 못한다. 외부의 네트워크와 격리된 네트워크에서 실행 중이기 때문이다. 

 

컨테이너와 호스트 머신 간 통신하기

이런 문제를 해결하려면 Docker에서 호스트 머신과 연결하기 위해 제공되는 호스트인 host.docker.internal을 사용해야 한다. 즉, 컨테이너 환경에서 실행 중인 웹 애플리케이션에서 호스트 머신의 Mongo DB에 접속하기 위해서는 다음 주소를 사용해야 한다.

mongodb://host.docker.internal:27017/[데이터 베이스 이름]

 

host.docker.internal의 한계

host.docker.internal는 Window와 macOS에서만 제공된다. 만약 Linux에서 사용하려면 해당 애플리케이션이 실행 중인 IP 주소를 확인해 통신해야 한다. IP 주소를 확인하려면 docker inspect 명령어를 쓰면 된다.

docker inspect mongodb

 

그러면 Network - bridge 섹션에 IPAddress가 나오는 것을 확인할 수 있다. 이를 사용해 통신하면 된다.

 

반응형
저작자표시 비영리 변경금지

'Docker' 카테고리의 다른 글

[Docker] docker network 사용해 컨테이너 간 통신하는 방법 완벽 정리  (0) 2025.01.31
[Docker] Dockerfile내부, .env 파일 혹은 터미널을 사용해 환경 변수 설정하는 방법 한 번에 정리하기  (0) 2025.01.30
[Docker] .dockerignore 사용해 컨테이너에 복사되지 말아야 할 파일 정의하기  (0) 2025.01.29
[Docker] Bind Mount 통해 호스트 머신의 경로를 컨테이너 경로와 연결하기  (0) 2025.01.28
[Docker] Named Volume 이란 무엇인가? 사용 방법과 특징 정리  (0) 2025.01.27


'Docker' 카테고리의 다른 글
  • [Docker] docker network 사용해 컨테이너 간 통신하는 방법 완벽 정리
  • [Docker] Dockerfile내부, .env 파일 혹은 터미널을 사용해 환경 변수 설정하는 방법 한 번에 정리하기
  • [Docker] .dockerignore 사용해 컨테이너에 복사되지 말아야 할 파일 정의하기
  • [Docker] Bind Mount 통해 호스트 머신의 경로를 컨테이너 경로와 연결하기
심플코드
심플코드
프로그래밍을 어렵지 않게 풀어서 설명하는 기술 블로그
    반응형
  • 심플코드
    심플코드
    심플코드
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 안드로이드를 위한 Coroutines (2)
      • Unit Testing (19)
      • GitHub Actions (0)
      • 공식 문서 번역 (35)
        • Coroutines 공식 문서 (35)
      • 알고리즘 (7)
        • Kotlin 자료구조 (0)
        • 알고리즘 (7)
        • Kotlin으로 구현하는 자료구조 (0)
      • 코딩 테스트 (0)
      • Deep Learning (0)
      • Machine Learning Math (17)
        • Linear Algebra (17)
      • ML (0)
      • Docker (15)
      • Kubernetes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 코틀린 코루틴의 정석 책 출간 소식
  • 인기 글

  • 태그

    코루틴
    Coroutines Flow
    코루틴 채널
    Coroutines
    Machine Learning
    Kotlin
    Docker
    unit test
    Coroutines Context
    컨테이너
    코루틴 Flow
    mockito
    coroutine
    pytorch
    junit
    도커
    Coroutines Channel
    unit testing
    TensorFlow
    numpy
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
[Docker] 컨테이너와 호스트 머신 간 통신하는 방법 한 번에 정리하기
상단으로

티스토리툴바