- 공식문서: https://docs.docker.com/v17.09/engine/userguide/networking/
docker network ls
명령으로 구성된 network 종류 확인 가능
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
9802b1bb6468 bridge bridge local
f78513044503 docker_dask_default bridge local
8eeeb223ac9f docker_gwbridge bridge local
u6u3pgytc9qr hadoop-net overlay swarm
94e45591dbd0 host host local
cuz7djbr1y1z ingress overlay swarm
a214353d85c3 none null local
docker network inspect
명령으로 네트워크 설정 및 연결된 노드들의 정보를 확인 가능
$ docker network inspect
Network Driver 종류
Container
bridge - default
- 컨테이너가 외부와 통신하기 위한 Virtual Bridge
- 컨테이너가 하나씩 실행될 때 마다 Bridge에 컨테이너 인터페이스가 바인딩 됨
- 가장 기본적인 Bridge는
docker0
: host에서ifconfig
명령으로도 확인 가능 -docker0
의 IP는 자동으로 172.17.0.1로 설정되며, Subnet Mask는 255.255.0.0 즉, 172.17.0.0/16 으로 설정
host
--net=host
옵션- 컨테이너가 독립적인 네트워크 영역을 갖지 않고 호스트와 네트워크를 공유함(Bridge는 각 컨테이너가 독립적인 네임스페이스를 가짐)
container
- 기존에 존재하는 다른 컨테이너의 네트워크 환경을 공유
--net=container:[containerID]
옵션- 기존에 존재하던 컨테이너와 같은 ip 주소, mac 주소를 가지게 됨(이 컨테이너를 위한 인터페이스는 없음!)
none
--net=none
옵션- 외부와의 인터페이스가 없음
Orchestration
ex) Swarm
overlay
- 필요성: 포트 포워딩을 통해 다른 호스트와 통신은 가능하겠지만, 어떤 애플리케이션에서는 포트가 랜덤하게 지정되는 경우가 많음 - 이 경우 포드 포워딩으로 통신하게 하는 것은 사실상 불가능
- 여러 대의 노드를 하나의 네트워크로 묶어서(= 같은 NAT을 공유하게 만들어서) 이 네트워크를 사용하는 모든 컨테이너들이 문제없이 통신할 수 있게 함
- 마스터 노드에서
docker network create --driver overlay --subnet=10.0.9.0/24 my-net
명령으로 생성하고 컨테이너를 시작할 때--net=my-net
옵션으로 overlay network 사용
$ docker network create --driver overlay --subnet=10.0.9.0/24 my-net
- swarm을 사용하는 경우 도커의 내장 overlay network인
docker_gwbridge
로 각 host들이 자동으로 연결됨
'DevOps > Docker' 카테고리의 다른 글
CentOS8에서 Dockerfile build시 DNS Not Resolving under Network 에러 해결: 방화벽 설정 바꾸기 (0) | 2020.08.08 |
---|
댓글