컨테이너의 네트워크 인터페이스에 eth0과 Io 네트워크 인터페이스가 있다
도커는 컨테이너에 내부 IP를 순차적으로 할당하며 이는 컨테이너 재시작마다 변경될 수 있다
내부 IP는 도커가 설치된 호스트에서만 사용할 수 있으므로 도커는 각 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스(veth...)를 호스트에 생성한다. veth 인터페이스는 사용자가 직접 생성할 필요는 없고, 컨테이너가 생성될 때 도커 엔진이 자동으로 생성하며 각 컨테이너의 eth0와 연결된다.
docker0 브리지는 각 veth 인터페이스와 바인딩되어 호스트의 eth0 인터페이스와 이어준다.
컨테이너를 생성하면 기본적으로 docker0 브리지를 통해 외부와 통신할 수 있는 환경을 사용할 수 있다
사용자의 선택에 따라 여러 네트워크 드라이버를 쓸 수도 있다
docker network ls
docker network inspect bridge
같은 네트워크에 속한 컨테이너들만 서로 통신할 수 있다
Docker 컨테이너를 실행하면 사용자가 정의한 네트워크에 연결된다
컨테이너 간 통신 시 컨테이너 이름으로 접근할 수 있다
외부와 통신하려면 컨테이너의 포트를 호스트에 노출해야 한다
예를 들어, 여러 컨테이너가 같은 위치에서 함께 작동하지만, 외부와의 직접적인 통신이 제한되어야 하는 경우
컨테이너가 호스트와 동일한 IP 주소를 사용한다
네트워크 성능이 뛰어나다
다른 컨테이너와의 네트워크 격리 기능이 제공되지 않는다
예를 들어, 높은 네트워크 성능이 필요한 모니터링 도구나 컨테이너가 호스트와 동일한 포트를 사용해야 하는 경우
네트워크 인터페이스가 없으므로 컨테이너 간 통신 불가
외부와 연결되지 않음
완전히 독립된 환경에서 실행해야 하는 애플리케이션
내부 IP, 네트워크 인터페이스의 MAC 주소가 공유된다
호스트의 네트워크 인터페이스 카드를 가상화해 물리 네트워크 환경을 컨테이너에게 동일하게 제공한다.
MacVLAN을 사용하면 컨테이너는 물리 네트워크상에서 가상의 맥(MAC) 주소를 가지며,
해당 네트워크에 연결된 다른 장치와의 통신이 가능해진다.
MacVLAN에 연결된 컨테이너는 기본적으로 할당되는 IP 대역인 172.17.X.X 대신 네트워크 장비의 IP를 할당받는다.
컨테이너를 물리적 네트워크에서 독립적인 장치처럼 작동하게 한다
DHCP 서버 또는 고정 IP를 통해 IP주소를 컨테이너에 할당할 수 있다
네트워크 설정이 복잡하다.
컨테이너가 물리적 네트워크의 다른 장치와 직접 통신해야 하는 경우
컨테이너가 독립적인 네트워크 장치처럼 동작해야 하는 경우
이건 잘 모르겠다
swarm 모드나 Kubernetes에서 주로 사용
서로 다른 호스트의 컨테이너들이 같은 네트워크를 공유
네트워크 트래픽은 자동으로 암호화된다
클러스터 환경에서 실행되는 컨테이너들이 서로 통신해야 하는 경우
여러 물리적 서버에서 작동하는 분산 애플리케이션
도커 DNS는 호스트 이름으로 유동적인 컨테이너를 찾을 때 주로 사용된다
대표적인 예가 --link 옵션이다
컨테이너의 IP가 변경되도 별명으로 컨테이너를 찾을 수 있게 DNS에 의해 자동으로 관리된다
[AWS] 생존을 위한 AWS : 용어정리(2) - S3 관련 내용 (0) | 2025.01.12 |
---|---|
[AWS] 생존을 위한 AWS : 용어정리(1) - Amazon VPC : 서브넷, 라우팅과 NAT, 보안그룹과 네트워크 ACL (0) | 2025.01.12 |
[Docker] Docker의 네트워크 구조에 대해 알아보자 (1) (0) | 2024.01.01 |
[Docker] Docker에 대해 알아보자 (0) | 2024.01.01 |
[AWS] IAM ? (0) | 2022.06.19 |