도커 네트워크, 실습 (DevOps)

2025. 5. 26. 11:09·DevOps/Docker

들어가며

net + work의 합성어인 network

이번 포스팅에서는 도커의 네트워크에 대해서 다루어보려고 한다. 평소 docker networks 는 docker-compose 파일을 docker compose up -d로 실행해줄때 mysql, mongodb, redis, kafka 등을 하나의 서버에서 한번에 실행하기 위해, 설정해줘야하는 값으로만 알고 있었던 상태였고

가치택시 docker-compose.yml

직접 서브넷과 게이트웨이를 지정을 해본다거나 컨테이너 간 통신을 실제로 해봤던 적은 없었는데, 이번 기회에 해당 부분을 다루어보게 되었다


네트워크 관련 개념

도커 네트워크에 대해서 다루어보기 전에, 아래의 기본적인 네트워크 관련 개념들을 알고만 있어주면 될거같다

네트워크란?
여러 장치가 서로 연결되어 정보를 주고받을 수 있는 시스템이다. 우리가 컴퓨터에서 웹사이트를 열 때도, 서버에 요청을 보내고 응답을 받으며 네트워크를 통해 데이터를 주고받는 것을 의미한다

공인 IP 주소로 네트워크 망을 통해 전송되는 ping

IP 주소란?
네트워크에서 각 장치를 식별하는 고유한 값인데, 0.0.0.0 ~ 255.255.255.255 범위를 가진다
DNS란 ?
DNS(Domain Name System)는 도메인 이름과 IP 주소를 서로 연결해주는 시스템이다

사진의 예시처럼 우리는 "google.com" 같은 이름만으로 서버에 접속할 수 있다


실습


도커 가상네트워크

 

실습에서는 먼저 기본 브리지 네트워크와 커스텀 브리지 네트워크를 비교해봤다. "docker network ls" 명령어로 현재 도커 네트워크들을 확인했을 때, 기본적으로 bridge, host, none 네트워크가 있었다

네트워크 확인 명령어


bridge는 기본 가상 네트워크로, 같은 네트워크 안의 컨테이너들끼리 통신할 수 있게 해준다. host는 호스트의 네트워크와 동일하게 쓰는 방식이고, none은 네트워크 연결이 아예 없는 상태다

새로운 브릿지 네트워크 생성

docker network create --driver bridge --subnet 10.0.0.0/24 --gateway 10.0.0.1 second-bridge" 명령어로 새로운 브리지 네트워크를 만들었었다. 생성된 네트워크는 "docker network inspect second-bridge"로 자세히 확인할 수 있었는데, 서브넷, 게이트웨이 정보까지 나오고, 연결된 컨테이너들도 나중에 여기에 표시되었다. 컨테이너를 "docker run -it --network second-bridge --name containerA ..." 명령어로 실행하면 지정한 네트워크에 붙여서 띄울 수 있었다


컨테이너 실행

이 다음에는 네트워크 안에서 컨테이너들이 서로 통신하는지 테스트해봤다

두 개의 컨테이너를 같은 네트워크(second-bridge)에서 띄운 후, containerA 안에서 containerB로 ping을 날렸다. "ping containerB"라고 입력하면 컨테이너 이름을 내부 DNS로 해석해서 IP를 찾아가고, 실제로 ping이 오가는 걸 볼 수 있었다

"cat /etc/resolv.conf" 명령어로 내부 DNS 설정을 확인했을 때, 도커 엔진이 생성한 nameserver가 잡혀 있는 것도 신기했다. 추가로 외부로의 연결도 체크해봤다


Leafy 네트워크

Leafy 네트워크란 쉽게 말해 여러 네트워크를 계층적으로 연결한 구조였는데, 다양한 네트워크 간 라우팅, 네트워크 간 격리 및 연결을 어떻게 설계할 수 있는지 개념적으로 이해하는 데 도움이 되었었다. 아래 사진의 플로우로 실습을 진행했다고 이해해주면 좋을거같다

Leafy 네트워크 실습 과정

도커에서는 보통 overlay 네트워크를 써서 다중 호스트 간 네트워크를 연결하는데, 이건 Swarm 모드에서 주로 쓴다고 배웠다. 이번 글에서는 로컬 환경에서 bridge 네트워크로 연습했지만, 앞으로 overlay나 macvlan 같은 고급 네트워크도 연습해보고 싶다는 생각을 했었다. Leafy 네트워크처럼 계층적으로 설계하면 복잡한 서비스 아키텍처에서도 네트워크 경계를 명확히 나누고 관리할 수 있을 것이라고 생각이 들었었다

 

 

참고한 자료

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

 

Networking

Learn how networking works from the container's point of view

docs.docker.com

 

'DevOps > Docker' 카테고리의 다른 글

도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)  (3) 2025.07.29
도커 스토리지와 볼륨 (DevOps)  (1) 2025.06.13
클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)  (0) 2025.05.11
이미지 레지스트리와 빌드 (DevOps)  (0) 2025.05.11
Docker 이미지와 컨테이너 (DevOps)  (1) 2025.05.11
'DevOps/Docker' 카테고리의 다른 글
  • 도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)
  • 도커 스토리지와 볼륨 (DevOps)
  • 클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)
  • 이미지 레지스트리와 빌드 (DevOps)
huncozyboy
huncozyboy
이지훈
  • huncozyboy
    열정을 기록하기
    huncozyboy
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • Spring (26)
        • JWT (3)
        • 무한 스크롤 (1)
        • 매칭 로직 (2)
        • OAuth (4)
        • 자동화 (1)
        • 캐싱 (1)
        • AOP (2)
        • Swagger (1)
        • S3 (1)
        • CORS (1)
        • Spring Retry (0)
        • Webhook (2)
        • Grapheme Cluster (1)
        • 연관관계 (1)
        • CS 개념 (5)
      • DevOps (13)
        • 스왑 메모리 (1)
        • Blue Green (2)
        • Docker (7)
        • Route 53 (1)
        • 리버스 프록시 (2)
      • AI (2)
        • Claude Code (1)
        • Copilot (1)
      • CS (4)
        • JAVA (4)
      • Github (1)
        • Conflict (1)
      • Python (4)
        • Langchain (3)
        • Crawling (1)
      • 일상 (3)
        • 회고록 (1)
      • 알고리즘 (10)
        • 투포인터 (0)
        • 슬라이딩 윈도우 (0)
        • 정렬 (0)
        • 이분 탐색 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    JWT
    자바
    https
    수도코드
    LangChain
    Docker
    java
    Spring
    도커
    프로그래머스
    aws
    OAuth
    스프링
    백준
    DevOps
    redis
    EC2
    코테
    알고리즘
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
huncozyboy
도커 네트워크, 실습 (DevOps)
상단으로

티스토리툴바