ingress 는 overlay 타입이며, scope 가 swarm 이다
- swarm 은 Cluster 전체에 하나의 Network 로 동작하는 것으로, Cluster 전체가 하나의 Network 이다
- 로드 밸런싱과 라우팅 메시에 사용되며, 서비스 내의 컨테이너에 대한 접근을 라운드 로빈 방식으로 분산하는 로드 밸런싱을 담당한다
- 라우팅 메시란? 사용 가능한 노드의 게시된 포트로 들어오는 모든 요청을 활성 컨테이너로 라우팅 해주는 기술
docker_gwbridge 는 bridge 타입이며, scope 가 local 이다
- 이는 각 Node 에서만 영향을 미치는 Network 이다
- gwbridge 는 외부로 나가는 통신 및 overlay Network 트래픽의 종단점 역활을 한다
- docker_gwbridge Network는 Docker Swarm을 Init하거나 Join할 때 자동으로 생성된다
Swarm Mode 로 생성된 모든 Service 의 컨테이너가 외부로 노출되기 위해서는 무조건 ingress Network 를 사용해야 하는 것은 아니다. docker run -p 를 사용해 외부에 노출했던 것처럼, 특정 Port 를 사용하도록 설정할 수도 있다
- 다음은 ingress 를 사용하지 않고, Host 의 8080 Port 를 직접 컨테이너의 80 Port 에 연결하는 방식이다. 이는, gwbridge 와 ingress 가 아닌 host network 를 사용하는 방식이다
docker service create --publish mode=host,target=80,published=8080,protocol=tcp --name web nginx
Swarm 환경에서 생성되는 컨테이너들은 기본적으로 docker_gwbridge Network 와 ingress Network 에 연결된다
Node 들이 Cluster 환경에서 서로 통신하기 위해서는 Cluster 환경을 구성할 때 사용한 Network 를 사용한다
- overlay driver 는 Cluster 환경에서만 사용 가능하다
docker network create --subnet 192.168.123.0/24 -d overlay myoverlay
docker service create --name ovctn --network myoverlay --replicas 1 --constraint node.role==manager ubuntu:18.04