네트워크에서 IP 주소의 고갈을 막기 위해 사설 IP와 공인 IP를 나누는 NAT이라는 개념이 등장했다. 도커에서도 이와 유사하게 하나의 컴퓨터에서 여러 개의 컨테이너를 구동하는 경우, 각 컨테이너마다 IP 주소가 할당되는데, 이 IP 주소는 도커가 설치된 호스트 내에서만 쓸 수 있는 IP로 외부와의 통신이 불가능하다. 그러면 각 컨테이너는 어떻게 외부와의 네트워크 통신이 가능한 걸까?
- eth0
- 호스트의 eth0은 실제 우리가 외부와 연결할 때 사용하는 호스트 네트워크 인터페이스이다.
- 컨테이너 안에 eth0은 veth 가상 인터페이스를 통해 외부와 통신할 수 있게 되는 것이다.
- veth
- 컨테이너가 시작될 때마다 호스트에 veth(virtual eth)라는 가상의 네트워크 인터페이스가 생성된다.
- 컨테이너가 외부와 네트워크 통신이 가능하게 하기 위해 생성되는 가상의 인터페이스이다.
- docker0
- docker0 브리지는 각 veth 인터페이스와 바인딩되어 호스트의 eth0 인터페이스와 이어주는 역할을 한다.
- 이를 통해 도커가 관리하는 가상 네트워크 안에서 컨테이너들이 네트워크 통신을 할 수 있다
Reference
- https://captcha.tistory.com/70
- https://velog.io/@skanddi/%EB%8F%84%EC%BB%A4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'Backend > Docker' 카테고리의 다른 글
도커 알아보기 (0) | 2024.06.25 |
---|---|
깃허브 액션, 도커, EC2, RDS를 통해 배포하기 (0) | 2024.04.26 |
도커(Docker) 사용하기 (1) | 2024.04.24 |