[Docker] docker network 사용해 컨테이너 간 통신하는 방법 완벽 정리

2025. 1. 31. 07:21·Docker
목차
  1. 컨테이너간 통신
  2. Docker의 네트워크 드라이버 종류와 bridge 드라이버
  3. 컨테이너 간 통신 설정하기
  4. 네트워크 생성 및 확인
  5. 컨테이너가 특정 네트워크에 속하도록 만들기
  6. 컨테이너 간 통신하기
  7. Docker Compose 사용 시 컨테이너 간 통신
반응형

컨테이너간 통신

컨테이너는 외부 애플리케이션 혹은 호스트 머신과는 자유롭게 통신할 수 있지만, 컨테이너 간에는 기본적으로 서로 통신할 수 없다. 컨테이너끼리 통신할 수 있도록 하기 위해서는 컨테이너 내부에 네트워크를 만든 후 통신할 컨테이너들이 같은 네트워크에 속해 있도록 해야 한다. 지금부터 이 방법을 알아보자.

 

Docker의 네트워크 드라이버 종류와 bridge 드라이버

Docker는 다양한 네트워크 드라이버를 지원한다. 대표적으로 bridge, host, none 드라이버가 있으며 이 외에도 overlay, macvlan 같은 드라이버가 있다. 하지만, 대부분의 경우는 bridge를 사용해 통신하며 이곳에서는 bridge 드라이버를 사용하는 방법에 대해 다룬다.

bridge 드라이버는 Docker의 기본 네트워크 드라이버로, 독립적인 컨테이너 간 통신을 가능하게 하며, 컨테이너를 동일한 bridge 네트워크에 연결하면 서로 통신할 수 있다.

 

컨테이너 간 통신 설정하기

네트워크 생성 및 확인

"docker network create [네트워크 이름]"을 통해 네트워크를 생성할 수 있다. 예를 들어 다음 명령어를 통해 app-network라는 이름의 네트워크를 만들 수 있다.

docker network create app-network

 

 

생성된 네트워크는 docker network ls 명령어를 통해 확인 가능하다.

 

 

컨테이너가 특정 네트워크에 속하도록 만들기

컨테이너가 특정 네트워크에 속하도록 만들려면 docker run 시 "--network [네트워크 이름]" 옵션을 주면 된다. 예를 들어 mongodb 이미지를 실행할 때 mongodb가 app-network에 속하도록 하려면 다음과 같이 작성해 실행하면 된다.

docker run --name mongodb -v mongodbdata:/data/db --rm -d --network app-network mongo

 

 

컨테이너 간 통신하기

같은 네트워크(app-network_에 속한 웹 애플리케이션 컨테이너에서 위에서 만든 mongodb 컨테이너에 연결한다고 하자. 그러면 위에서 --name 프로퍼티에 mongodb를 설정했으므로 호스트 이름을 넣는 부분에 mongodb 를 넣으면 된다.

mongodb://[유저이름]:[비밀번호]@[호스트 이름]:27017/[데이터 베이스 이름]

 

즉, 다음과 같은 모양이 된다.

mongodb://[유저이름]:[비밀번호]@mongodb:27017/[데이터 베이스 이름]

 

기존에는 로컬에서 통신하면 저 부분이 다음과 같은 모양이었다.

mongodb://[유저이름]:[비밀번호]@localhost:27017/[데이터 베이스 이름]

 

 

Spring Boot 애플리케이션에서는 spring.data.mongodb.host에 이미지 이름을 설정하면 된다.

spring.data.mongodb.host=mongodb
spring.data.mongodb.port=27017
spring.data.mongodb.database=[데이터 베이스 이름]
spring.data.mongodb.username=[유저 이름]
spring.data.mongodb.password=[비밀 번호]

 

이렇게 하면 통신이 성공한다.

 

Docker Compose 사용 시 컨테이너 간 통신

Docker Compose를 사용하면 같은 yml 파일 내부에 있는 컨테이너들 간에는 네트워크가 자동으로 생성된다. 따라서 별도로 네트워크를 설정해주지 않아도 된다.

version: '3.8'
services:
  mongodb:
    image: mongo:latest
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: [유저 이름]
      MONGO_INITDB_ROOT_PASSWORD: [비밀번호]

  app:
    image: my-spring-app:latest
    depends_on:
      - mongodb
    environment:
      SPRING_DATA_MONGODB_HOST: mongodb
      SPRING_DATA_MONGODB_PORT: 27017
      SPRING_DATA_MONGODB_DATABASE: [데이터베이스 이름]
      SPRING_DATA_MONGODB_USERNAME: [유저 이름]
      SPRING_DATA_MONGODB_PASSWORD: [비밀번호]

networks:
  app-network:
    driver: bridge

 

다만 yml 파일 외부의 컨테이너와 통신해야 하는 경우에는 network를 사용해 네트워크를 명시적으로 설정해주면 된다.

version: '3.8'
services:
  mongodb:
    image: mongo:latest
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: [유저 이름]
      MONGO_INITDB_ROOT_PASSWORD: [비밀번호]
    networks:
      - app-network

  app:
    image: my-spring-app:latest
    depends_on:
      - mongodb
    environment:
      SPRING_DATA_MONGODB_HOST: mongodb
      SPRING_DATA_MONGODB_PORT: 27017
      SPRING_DATA_MONGODB_DATABASE: [데이터베이스 이름]
      SPRING_DATA_MONGODB_USERNAME: [유저 이름]
      SPRING_DATA_MONGODB_PASSWORD: [비밀번호]
    networks:
      - app-network

networks:
  app-network:
    driver: bridge
반응형
저작자표시 비영리 변경금지

'Docker' 카테고리의 다른 글

[Docker] 컨테이너와 호스트 머신 간 통신하는 방법 한 번에 정리하기  (0) 2025.02.01
[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


  1. 컨테이너간 통신
  2. Docker의 네트워크 드라이버 종류와 bridge 드라이버
  3. 컨테이너 간 통신 설정하기
  4. 네트워크 생성 및 확인
  5. 컨테이너가 특정 네트워크에 속하도록 만들기
  6. 컨테이너 간 통신하기
  7. Docker Compose 사용 시 컨테이너 간 통신
'Docker' 카테고리의 다른 글
  • [Docker] 컨테이너와 호스트 머신 간 통신하는 방법 한 번에 정리하기
  • [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)
  • 블로그 메뉴

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

  • 공지사항

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

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
[Docker] docker network 사용해 컨테이너 간 통신하는 방법 완벽 정리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.