Docker Networking

zuckerfrei·2024년 1월 29일
0

Docker

목록 보기
4/4

CKA 강의 중 도커 네트워크 관련 내용이 있어 정리했다.

1. 도커 네트워크 종류

none

# example
docker run --network none nginx

컨테이너가 어떤 네트워크도 연결되지 않은 상태

여러 컨테이너가 생성되어있어도 none 네트워크이면 서로 연결 x

host

docker run --network host nginx

컨테이너가 호스트 네트워크와 연결된 것

예를 들어, 컨테이너를 80 포트로 서비스 할 경우 호스트의 80 포트로 접속 가능(포트 매핑 필요 없이)

bridge

docker run nginx

호스트와 컨테이너에 연결되는 내부 사설 네트워크가 생성되는 방식

브릿지 네트워크에 연결되는 각 장치는 사설 네트워크 아이피를 가지게 됨


2. bridge network

도커가 호스트에 설치되면 bridge라는 사설 네트워크를 기본값으로 생성함

~/Doc/C/9.Networking  docker network ls          
NETWORK ID     NAME                  DRIVER    SCOPE
53589998420d   bridge                bridge    local
d2469630f3f2   host                  host      local
e5e36d5a8201   none                  null      local

docker0 = bridge(network)

컨테이너가 생성될 때마다 도커는 그 컨테이너를 위한 네트워크 네임스페이스를 생성함

그럼 방금 생성된 컨테이너를 위한 네트워크 네임스페이스를 브릿지 네트워크에 어떻게 연결할까?

네임스페이스와 브릿지에 각각 1개씩 인터페이스 쌍을 생성하여 연결함

외부에 컨테이너 포트를 오픈하기 위해 포트 매핑 또는 포트 퍼블리싱 작업이 필요함

# example
docker run -p 8080:80 nginx

어떻게 이게 가능할까? NAT 규칙을 만들어서 구현한다.

NAT 규칙을 생성하고 목적지를 설정함

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

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

위의 iptables 명령어를 사용하면 아래와 같은 결과

profile
무설탕 음료를 좋아합니다

0개의 댓글