Docker데이터와 네트워크

named network와 service discovery

컨테이너끼리 이름으로 통신하려면 named network와 Docker의 서비스 발견 방식을 함께 이해해야 합니다.

마지막 수정 2026년 3월 21일

기본 패턴

bash
docker network create appnet
docker run -d --name db --network appnet postgres:17
docker run -d --name api --network appnet my-api

설명

  • 같은 Docker network에 붙은 컨테이너는 IP를 외우지 않아도 이름으로 서로를 찾을 수 있습니다.
  • 이 방식은 "컨테이너 IP는 바뀔 수 있지만 서비스 이름은 유지된다"는 전제를 바탕으로 움직입니다.
  • Compose에서는 서비스 이름이 기본 호스트명처럼 동작하므로 db, redis, api 같은 이름으로 내부 통신을 설계하기 쉽습니다.
  • 외부에 포트를 공개하는 것과 내부 서비스가 서로를 찾는 것은 다른 문제입니다. 내부 통신은 network, 외부 접근은 port publishing이 핵심입니다.
  • 컨테이너 수가 늘어날수록 네트워크를 "누가 누구와 대화해야 하는가" 기준으로 나누는 편이 운영 가시성에 도움이 됩니다.

짧은 예제

yaml
services:
  api:
    build: .
  db:
    image: postgres:17

빠른 정리

항목의미
named network관련 컨테이너 묶음
서비스 이름내부 DNS 이름처럼 사용
포트 공개호스트나 외부 접근용
내부 통신같은 network 안에서 이름으로 연결

주의할 점

localhost는 각 컨테이너 자신을 가리킵니다. 컨테이너끼리 연결할 때는 localhost 대신 같은 네트워크의 서비스 이름을 써야 기대한 대로 동작합니다.

참고 링크

2 sources