1.1 Bridge 네트워크 드라이버
Docker 네트워크 드라이버는 컨테이너가 서로 및 외부 네트워크와 상호 작용할 수 있도록 해줘. Docker는 다양한 네트워크 드라이버를 제공하며, 각각은 고유한 특징과 특정 사용 시나리오에 적합해. 이 강의에서는 네 가지 주요 네트워크 드라이버인 bridge, host, none, overlay를 다룰 거야.
Bridge 네트워크 드라이버는 Docker의 기본 네트워크 드라이버야. 이 드라이버는 컨테이너가 서로 통신할 수 있는 개인 내부 네트워크를 생성해. 이 네트워크는 호스트의 외부 네트워크로부터 격리되어 있어.
특징:
-
bridge
네트워크에 연결된 컨테이너는 IP 주소를 통해 서로 상호작용할 수 있어. - 외부 네트워크는
bridge
네트워크의 컨테이너와 직접 상호작용할 수 없어, 포트 포워딩을 설정하지 않는 한. - 로컬 개발 및 테스트 시나리오에 사용하기 쉬워.
사용 예:
네트워크를 지정하지 않고 컨테이너를 생성하면 자동으로 bridge
네트워크에 연결돼.
docker run -d --name my_container nginx
포트 포워딩을 설정하려면 -p
플래그를 사용해.
docker run -d -p 8080:80 --name my_container nginx
1.2 네트워크 드라이버 Host
네트워크 드라이버 host
는 컨테이너가 호스트 머신의 네트워크 스택을 직접 사용하게 해줘. 이 말은 컨테이너가 호스트와 동일한 IP 주소를 가지며, 호스트의 모든 네트워크 인터페이스를 사용할 수 있다는 뜻이야.
특징:
-
host
네트워크 드라이버를 사용하는 컨테이너는 네트워크 가상화에 대한 오버헤드가 줄어들어 더 빠르게 동작해. - 컨테이너는 호스트와 동일한 네트워크 인터페이스에 접근할 수 있어서 보안 위험이 커질 수 있어.
- 네트워크 성능이 중요한 시나리오나 특정 네트워크 구성이 필요한 경우에 적합해.
사용 예제:
docker run -d --network host --name my_container nginx
1.3 네트워크 드라이버 None
네트워크 드라이버 none
는 컨테이너의 모든 네트워크 기능을 비활성화해. 네트워크 none
에 연결된 컨테이너는 네트워크 인터페이스가 없어서 다른 컨테이너나 네트워크와 완전히 격리돼.
특징:
- 컨테이너를 모든 네트워크에서 완전히 격리시킴.
- 네트워크가 필요 없는 작업(네트워크와 무관한 작업 수행 등)에 유용함.
사용 예제:
docker run -d --network none --name my_container busybox
1.4 네트워크 드라이버 Overlay
네트워크 드라이버 overlay
는 여러 Docker 호스트를 아우르는 분산 네트워크를 생성하는 데 사용돼. 이 드라이버는 Docker Swarm이나 Kubernetes에서 서로 다른 호스트에 있는 컨테이너들 간의 네트워크 상호작용을 보장하기 위해 자주 사용돼.
특징:
- 다른 호스트에 있는 컨테이너들 간의 통신을 보장해.
- Docker Swarm 같은 클러스터링 설정이 필요해.
- 기존 네트워크 위에 가상 네트워크를 생성하여 높은 수준의 격리와 보안을 제공해.
사용 예시:
overlay
드라이버를 사용하려면 먼저 Docker Swarm 클러스터를 생성해야 해.
1. Docker Swarm 초기화:
docker swarm init
2. overlay 네트워크 생성:
docker network create -d overlay my_overlay_network
3. overlay
네트워크에 연결된 컨테이너 실행:
docker service create --name my_service --network my_overlay_network nginx
1.5 네트워크 드라이버 비교
다양한 네트워크 드라이버 비교
네트워크 드라이버 | 격리 | 성능 | 적용성 | 특징 |
---|---|---|---|---|
bridge | 높음 | 보통 | 로컬 네트워크 | 기본적으로 격리된 네트워크 |
host | 낮음 | 높음 | 성능 | 호스트와 공유된 네트워크 스택 |
none | 완전 | 최고 | 격리 | 네트워크로부터 완전한 격리 |
overlay | 높음 | 높음 | 분산 네트워크 | 다른 호스트의 컨테이너 간 통신 |
네트워크 드라이버 사용
-
Bridge
: 컨테이너 간 상호작용이 필요하지만 외부 네트워크로부터 격리되어야 하는 로컬 앱 및 테스트에서 사용하세요. -
Host
: 네트워크 성능이 높거나 네트워크 격리가 우선되지 않는 특수 네트워크 구성의 앱에서 사용하세요. -
None
: 네트워크 상호작용이 필요 없는 완전히 격리된 컨테이너에 사용하세요. -
Overlay
: 클러스터에서 작동하는 분산 앱에서 다른 호스트의 컨테이너 간 통신이 필요한 경우 사용하세요.
GO TO FULL VERSION