None
네트워크가 없다. 외부로 통신 불가.
Host
호스트의 네트워크에 그대로 노출한다. 컨테이너 안에서 80을 열면 호스트의 IP로 80에 접근해서 내용을 볼 수 있다.
두 개의 컨테이너가 같은 포트를 열 수는 없다.
Bridge
기본값으로 172.17.0.0/24의 브리지 네트워크가 생성되어 내부 private network 주소를 할당받는다.
기본값으로 "bridge"라는 이름의 네트워크가 생성된다. docker network ls
를 찍어 보면 Network 이름이 bridge로 되어 있으나, 실제로 호스트에서 생성되는 네트워크 이름은 docker0이다.
Docker에서
docker inspect
명령의 NetworkSettings 부분을 보면, 컨테이너의 네트워크 네임스페이스를 볼 수 있다.
ip link
명령을 찍어보면, master를 docker0으로 하는 veth뭐시기@if뭐
라는 인터페이스가 생겨 있음을 볼 수 있다.ip -n 네임스페이스명 link
명령을 찍어보면, eth0@if뭐+1
라는 인터페이스가 컨테이너의 네트워크 네임스페이스에 연결되어 있음을 볼 수 있다.
즉 veth뭐시기@if뭐
는 가상-스위치인 bridge(docker0
)에 꽂혀있고, eth0@if뭐+1
는 네트워크 네임스페이스(컨테이너)에 꽂혀있는 구성의 한 쌍의 가상-이더넷-케이블 구조를 생각하면 된다.
뭐
는 자연수이다. 예를 들어veth뭐시기@if5
와 연결된 상대는eth0@if6
이라는 것이다.
이러한 구조는 네트워크가 bridge로 설정된 컨테이너가 켜질 때마다 계속 만들어진다.
포트 포워딩
아무것도 설정하지 않은 경우, 외부 네트워크에서 bridge 내부로 inbound로 들어올 수 없다.docker run -p 8080:80
처럼 포트포워딩 매핑을 해 주면, 호스트로 들어오는 8080 트래픽이 해당 컨테이너의 80으로 포워딩된다.
이 때, 실제로는 docker에서 알아서 iptables NAT rule을 생성해주고 있는 것이다. iptables -nvL -t nat
를 찍어보면 도커가 만들어놓은 DNAT rule을 확인할 수 있다.
ip link
ip adr
ip addr add 192.168.1.0/24 dev eth0
ip route
ip route add 192.168.1.0/24 via 192.168.2.1
cat /proc/sys/net/ipv4/ip_forward
arp
netstat -plnt
route
'콤퓨우터 > 필기: KodeKloud CKA 강의' 카테고리의 다른 글
223. Service Networking (0) | 2024.05.17 |
---|---|
215. CNI Weave (0) | 2024.05.17 |
204. Network Namespaces (0) | 2024.05.17 |
189-191. Persistent Volumes, Persistent Volume Claims and Using PVCs in Pods (0) | 2024.05.17 |
184-185. Storage in Docker and Volume Driver Plugins (0) | 2024.05.17 |