Docker Networking

2025. 5. 16. 16:32·DevOps/✏️ Cloud
반응형

Network Namespace — 데봅스 성장기

 

Network Namespace

컨테이너가 어떻게 네트워킹을 구성하고, 호스트 부터 외부 인터넷까지 통신 되는지 이해가 너무 안되서 정리.도커가 구성하는 방법을 알려면 리눅스의 네트워크 네임스페이스 개념부터 알아

jjoyling.tistory.com

이전 글에서 network namepsace 를 이용한 방식으로 도커는 컨테이너로 환경을 격리하면서 네트워크도 격리한다.

앞에 내용에 이어서 컨테이너 네트워크 구성 방식을 정리하려 함.

1. none

# docker run --network none nginx

none 네트워크는 도커 컨테이너가 아무 네트워크에도 연결되어 있지 않다. 어떤 방법으로도 컨테이너에 연결할 수 없다.

 

2. Host

docker run --network host nginx

호스트 네트워크를 그대로 사용함. 웹 어플리케이션을 배포하면, 해당 호스트 IP:80 으로 접속하면 컨테이너에 접속할 수 있다.
하지만 다른 컨테이너를 띄웠을 때 동일한 포트를 사용할 수 없다. 왜냐면 호스트 네트워크의 포트를 동시에 사용하려 하기 때문에 포트 충돌이 일어나게 된다.

 

 3. bridge

호스트 내부에 사설 네트워크가 생성된다. 이전 글에서 작성했던 network namespace 개념을 이용한다.

# docker network ls
// bridge 라는 이름으로 사설 네트워크가 생성됨 (docker0)
// == ip link add docker0 type birdge

# ip netns
ab3165c10a92b
// 네트워크 네임스페이스가 생성되어 있음

docker0 는 172.17.0.1/24 의 IP 를 할당받기 때문에 해당 브릿지 네트워크에 ip 는 해당 대역으로 할당 된다.
생성된 네트워크 네임스페이스를 통해 bridge 네트워크에 연결된다.
이에 대한 자세한 내용은 네트워크 네임스페이스 글에서 정리하였음.
즉 docker0 라는 bridge network 에 컨테이너들이 연결된다.

# curl http://172.17.0.3:80

호스트에서 해당 컨테이너IP:Port 로 통신하면 정상적으로 nginx 메세지가 출력되지만 외부 네트워크는 해당 bridge network 를 찾을 수 없다.
그렇기 때문에 컨테이너를 실행할 때 포트 매핑을 해준다.

# docker run -p 8080:80 nginx

이렇게하면 host:8080 으로 통신을 시도하면 bridge network 내부의 80 포트로 매핑되어 외부에서 통신이 가능하다.
컨테이너는 포트를 매핑하면 iptables 를 통해 작업한다.

iptables \
	-t nat \
    -A DOCKER \
    -j DNAT \
    --dport 8080 \
    --to-destination 172.17.0.3:80

 

반응형
저작자표시 (새창열림)

'DevOps > ✏️ Cloud' 카테고리의 다른 글

Kubernetes DNS ( coreDNS )  (0) 2025.05.19
CNI (Container Network Interface)  (0) 2025.05.19
Network Namespace  (1) 2025.05.15
drain, cordon, uncordon 명령  (0) 2025.03.27
Multi-Container (init Container)  (0) 2025.03.26
'DevOps/✏️ Cloud' 카테고리의 다른 글
  • Kubernetes DNS ( coreDNS )
  • CNI (Container Network Interface)
  • Network Namespace
  • drain, cordon, uncordon 명령
자동화를 꿈꿉니다.
자동화를 꿈꿉니다.
DevOps 개발자
  • 자동화를 꿈꿉니다.
    데봅스 성장기
    자동화를 꿈꿉니다.
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • DevOps (29)
        • ✏️ Cloud (12)
        • ✏️ CICD (11)
        • ✏️ Mac (6)
      • 경제 (0)
      • 운동 (0)
  • 블로그 메뉴

    • 홈
  • hELLO· Designed By정상우.v4.10.3
자동화를 꿈꿉니다.
Docker Networking
상단으로

티스토리툴바