도커(docker)와 함께 이해하는 네트워크

hxeonxins·2025년 4월 7일
0

CS

목록 보기
1/2
post-thumbnail

도커(docker)와 함께 이해하는 네트워크는 기본적인 CS용어(IP, DNS 등)의 일부 개념 설명은 생략합니다. 용어의 뜻을 알고 싶다면 CS 에 정리해 두었으니 참고하면 됩니다.

이상하거나 틀린 내용이 있다면 지적해주세요. 제발

도커(Docker)를 잘 다루려면 명령어만 알면 될까? 도커를 제대로 이해하려면, 네트워크(Network)에 대한 개념이 필수이다. 도커 네트워크의 기본 개념부터 실제 컨테이너 간 통신 설정까지 차근차근 정리해 보자

1. 공인망, 사설망

본격적으로 도커 네트워크를 알아보기 전, 인터넷의 두가지 세계를 들여다 보자.

위 그림과 같이 외부 서버와 개인의 공유기가 통신할 때 아무렇게나 들락날락 하는것이 아니다. 외부와 내부 모두 눈에 보이지 않는 각자의 구역과 역할이 정해져 있는데 이 경계"망"이라고 부른다.

  • 공인망(Public Network): 인터넷에 직접 연결되는 네트워크로 외부에서 접근이 가능하다.

  • 사설망(Private Network): 내부에서만 사용되는 네트워크로 외부에서는 직접 접근이 불가하다.

더 깊은 이해를 위해 터미널을 켜고 nalookup naver.com 을 해보자.

위와 같이 naver에 접속할 수 있는 ip가 4종류나 되는것을 알 수 있다. 저 중 하나를 복사해서 주소창에 입력을 하고 엔터를 누르면 무슨 일이 일어날까? 접속이 될까? 한번 해보도록 하자.

아마 사진과 같이 무한 로딩이 걸리면서 연결할 수 없다는 경고창을 마주했을 것이다.

Non-autoritative answer: 바로 밑을 보자. 네이버에 접속 할 수 있는 서버는 4개이다. 쉽게 말하면 네이버는 유저 트래픽을 분산하기 위해 4개의 공간을 둔 것이다. 1번 공간에 유저가 많으면 2번으로 안내하는 로드 벨런서가 그 역할을 수행한다. 하지만 유저가 직접 자신의 공간을 정하려고 하면 보안 상 문제가 될 수 있다. 특정 공간에 유저가 독(디도스)을 푼다면? 네이버는 공간 하나를 통째로 잃을수도 있다. 이렇게 통신에 제약을 두면서 보안성을 향상시키고 내부 자원 관리를 하는게 사설망이다.

1.2. 사설 IP 주소 대역

사설 네트워크에 활용하는 IP 대역 범위는 10.0.0.0 ~. 10.255.255.255, 172.16.0.0 ~ 172.31.255.255, 192.168.0.0 ~ 192.168.255.255 이다.

사설망에서 사용하는 IP 주소는 정해진 범위 안에서만 쓴다.

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • CIDR 표기법
    CIDR 표기법이란 /숫자로 *서브넷 마스크를 줄여서 표현하는 방식이다.

*서브넷 마스크란, 쉽게 얘기해서 .뒤에 몇자리까지 표기 가능한지 알려주는 것이다. 더 자세하게 알고싶다면 이 포스트에 잘 정리되어 있다.

2. 네트워크 인터페이스와 포트

네트워크 인터페이스란 네트워크 연결의 통로 (ex: eth0, lo, docker0 등) 이다. 포트(Port)는 한 IP 주소 안에서 여러 서비스를 구분하는 번호이다.

프로토콜포트 번호
HTTP80
HTTPS443
MySQL3306

개발자가 임의로 지정하는 것이 아닌 위와 같이 국룰 번호가 매겨져 있다. 예를 들어 80번 포트로 들어오면 컴퓨터가 HTTP 프로토콜이라는것을 식별할 수 있다.

여기서 잠깐, 아까 위에서 보안성을 높이기 위해 사설망을 쓴다고 했다. 하지만 이렇게 국룰 포트 번호가 있다면 아무런 소용이 없는거 아니냐는 생각을 할 수 있다. 국룰 포트 번호를 쓴다고 해서 보안이 취약해질까? 포트 번호는 잘 알려진 포트, 등록된 포트, 동적 포트로 나뉘는데 각 프로세스에 고유한 포트 번호를 할당한다. 이 범위가 0~65,536개까지 인데 해커들은 딸깍 한번이면 다 스캔할 수 있다. 즉, 국룰 포트를 쓰나 안쓰나 보안상의 큰 차이는 없다는 것을 알 수 있다.

3. NAT 와 포트포워딩

  • NAT(Network Address Translation)란, 사설망과 공인망 간 IP 주소를 변환하는 기능이다.
  • 포트 포워딩이란, 외부 요청을 내부 IP/포트로 전달하는 방법을 의미한다.

3.1. NAT 장점/단점

  • IP 주소 절약: 사설 IP 여러 개를 하나의 공인 IP로 공유 사용 가능

  • 보안 강화: 내부 네트워크가 외부에 직접 노출되지 않음

  • P2P·VoIP 등 일부 프로토콜에서 연결 문제 발생 가능

  • 로그 추적 복잡성: NAT 변환으로 인해 원IP 식별이 어려워짐

3.2. 포트 포워딩 장점/단점

  • 원격 접근: 외부에서 내부 특정 장치나 서비스에 직접 연결 가능

  • 서비스 운영 편의: 서버·CCTV·게임 서버 등 고정 포트 기반 서비스에 유용

  • 보안 취약점: 열린 포트가 해킹 표면이 되어 공격 위험 증가

  • 관리 부담: 사용 후 포트를 닫지 않으면 계속 열려 있어 악용될 수 있음

3.2. 인바운드 VS 아웃 바운드

💡 인바운드: 외부 → 내부 요청
💡 아웃바운드: 내부 → 외부 요청

4. 도커 컨테이너 가상화

이제 정말 도커와 함께 알아보자

  • 가상 인터페이스
    Docker는 컨테이너마다 가상 인터페이스를 만들어 준다. (ex: vethXXX)
  • iptables(커널 안에 정의됨)
    Linux 커널의 iptables로 네트워크 트래픽 제어하며 도커는 자동으로 NAT 룰, 포트포워딩 룰을 생성한다.

5. docker 네트워크 관련 명령어 정리

docker network inspect XXX  # 특정 네트워크 상세 정보
docker network create ...   # 네트워크 생성
docker network connect ...  # 컨테이너를 네트워크에 연결

5.1. docker bridge 실습

  • 포트 포워딩 하지 않고 통신 시도 → 외부에서 컨테이너에 접속 안 됨!
  • 포트 포워딩 하고 시도 → 외부 접속 가능
  • 포트 포워딩 시 주의점
    같은 포트는 중복 사용 불가
    애플리케이션에 따라 포트 고정된 경우 있음 (ex: MySQL → 3306)

6. docker 네트워크상의 dns

Docker는 컨테이너끼리 자동 DNS를 제공한다.

docker network inspect 해보면 DNS 설정 확인 가능

컨테이너 이름으로 서로 통신 가능 (ex: ping web-container)

7. 마무리

도커 네트워크에 대한 전반적인 내용을 정리해 봤다. 아직 완벽한 이해를 하진 못한거 같아 나중에 더 공부해서 내용을 보충하도록 할 예정이다.

0개의 댓글