Docker 네트워크 가이드
Docker 네트워크를 이해하고 직접 설정하는 방법을 다룹니다.
1. Docker 네트워크 종류
네트워크 확인
docker network ls
위 명령어를 실행하면 다음과 같은 기본 네트워크가 제공됩니다.
- bridge: 컨테이너를 독립적인 가상 네트워크에서 실행. 기본 네트워크.
- host: 컨테이너가 호스트 네트워크와 동일한 네트워크에서 실행됨.
- none: 네트워크 연결이 없는 상태.
각 네트워크 상세 정보 확인
docker network inspect [네트워크이름]
2. Docker 네트워크 관련 명령어
docker network ls
- 네트워크 리스트 출력docker network inspect [네트워크명]
- 네트워크 상세 정보 확인docker network create [네트워크명]
- 새로운 네트워크 생성docker network rm [네트워크명]
- 네트워크 삭제docker network connect [네트워크명] [컨테이너명]
- 컨테이너를 네트워크에 연결docker network disconnect [네트워크명] [컨테이너명]
- 컨테이너를 네트워크에서 해제
3. Docker의 bridge 네트워크 구조
컨테이너는 기본적으로 bridge
네트워크를 사용하며, 내부적으로 Linux Namespace를 활용합니다.
기본적으로 172.17.0.0/16 대역의 IP를 할당받으며, 네트워크 장치는 다음과 같이 구성됩니다.
[ 컨테이너 ] [ 컨테이너 ] [ lo ][eth0] [ lo ][eth0] | | [veth] [veth] | / [docker0] (브릿지 네트워크) | [실제 네트워크 장치]
4. 직접 가상 네트워크 설정
1) 네임스페이스를 이용한 네트워크 구성
# 네임스페이스 생성
ip netns add ns1
ip netns add ns2
# 가상 네트워크 링크 생성
ip link add veth-ns1 type veth peer name veth-ns2
# 각 네임스페이스에 링크 연결
ip link set veth-ns1 netns ns1
ip link set veth-ns2 netns ns2
# IP 할당 및 활성화
ip netns exec ns1 ip address add 10.0.0.11/24 dev veth-ns1
ip netns exec ns2 ip address add 10.0.0.12/24 dev veth-ns2
ip netns exec ns1 ip link set veth-ns1 up
ip netns exec ns2 ip link set veth-ns2 up
# 연결 확인
ip netns exec ns1 ping 10.0.0.12
2) 가상의 브릿지를 이용한 네트워크 구성
# 가상의 브릿지 생성
ip link add bridge1 type bridge
ip link add bridge2 type bridge
# 네트워크 링크 생성 및 연결
ip link add ns1-veth type veth peer name ns1-veth-br
ip link add ns2-veth type veth peer name ns2-veth-br
ip link set ns1-veth netns ns1
ip link set ns2-veth netns ns2
ip link set ns1-veth-br master bridge1
ip link set ns2-veth-br master bridge2
# IP 설정 및 활성화
ip netns exec ns1 ip addr add 10.10.10.10/24 dev ns1-veth
ip netns exec ns2 ip addr add 20.20.20.20/24 dev ns2-veth
ip addr add 10.10.10.1/24 dev bridge1
ip addr add 20.20.20.1/24 dev bridge2
# 경로 추가 및 NAT 설정
ip netns exec ns1 ip route add default via 10.10.10.1
ip netns exec ns2 ip route add default via 20.20.20.1
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 20.20.20.0/24 -j MASQUERADE
5. Docker 네트워크 상태 확인
ip addr
- 네트워크 인터페이스 확인 (docker0 확인 가능)ip -c -br link
- 네트워크 장치 상태 확인docker exec [컨테이너명] ip a
- 컨테이너 내부 네트워크 확인docker exec [컨테이너명] route
- 컨테이너의 기본 게이트웨이 확인iptables -t nat -L
- NAT 설정 확인
'Spring' 카테고리의 다른 글
Spring Batch (0) | 2025.04.12 |
---|---|
Vue.js 프로젝트를 EC2에서 Nginx로 배포하는 방법 (0) | 2025.03.08 |
AWS에 백엔드 서버 배포하는 법 (0) | 2025.03.07 |
Spring Cloud Config로 yml파일 원격 관리하기 (0) | 2025.03.04 |
서킷 브레이커(Circuit Breaker)란? (0) | 2025.03.04 |