- 도커 네트워크 구조
- 도커는 컨테이너 내부 ip를 순차적으로 할당한다
- 이 ip는 컨테이너를 재시작할 때마다 변경될 수 있다
- 내부 ip는 도커가 설치된 호스트, 즉 내부 망에서만 쓸 수 있는 ip이므로 외부와 연결될 필요가 있다
- 이 과정은 컨테이너를 시작할 때마다 호스트에 veth(vitual) 라는 네트워크 인터페이스를 생성하면서 이루어진다
- veth 인터페이스는 사용자가 직접 생성할 필요는 없으며 컨테이너가 생성될 때 도커 엔진이 자동으로 생성함
- 이말은 즉, 실행중인 컨테이너 수만큼 veth로 시작하는 인터페이스가 생성된다
- 이때 docker() 브리지도 같이 생성되는데 브리지의 역할은 각 veth 인터페이스와 바인딩돼 호스트의 eth() 인터페이스와 이어주는 역할을 한다
- 도커 네트워크 기능
- 컨테이너를 생성하면 기본적으로 docker() 브리지를 통해 외부와 통신할 수 있는 환경을 사용할 수 있지만 사용자의 선택에 따라 여러가지 네트워크 드라이버를 쓸 수 있다
- 대표적인 네트워크 드라이버로는 브리지, 호스트, 논, 컨테이너, 오버레이가 있다
- 기본적으로 브리지 네트워크는 생성할때 자동으로 연결되는 docker() 브리지를 활용하도록 설계되어있음
- 만약 기본적으로 존재하는 docker()를 사용하는 브릿지 네트워크가 아닌 새로운 브리지 타입의 네트워크를 생성하려면 다음과 같은 명령어를 입력한다
브리지 생성만들어 놓은 브리지와 연결하여 컨테이너 생성docker network disconnect, connect를 사용해서 컨테이너에 유동적으로 붙이고 뗄 수 있음docker network create --driver bridge mybridge
- docker network disconnect mybridge mynetwork_container docker network connect mybridge mynetwork_container
- docker run -i -t --name mynetwork_container \\ --net mybridge \\ ubuntu:14.04
- 호스트 네트워크
- 네트워크를 호스트로 설정하면 호스트의 네트워크 환경을 그대로 쓸 수 있음
- host 네트워크를 사용한 컨테이너를 설정하려면 다음과 같은 명령어를 사용함
호스트 모드를 쓰는 컨테이너에서 아파치 웹 서버를 구동한다면 호스트의 ip와 컨테이너의 아파치 웹 서버 포트인 80으로 바로 접근할 수 있다docker run -i -t --name network_host \\ --net host \\ ubuntu:14.04
- 논 네트워크
- none은 말 그대로 아무 네트워크를 쓰지 않는 것을 뜻함. 논 네트워크 컨테이너를 생성하면 외부와 연결이 단절됨
docker run -i -t --name network_none \\ --net none \\ ubuntu:14.04
- 컨테이너 네트워크
- 컨테이너 네트워크를 만들면 다른 컨테이너의 네트워크 네임스페이스 환경을 공유할 수 있음 (내부 IP, 네트워크 인터페이스의 주소)
docker run -i -t -d --name network_container_1 ubuntu:14.04
이렇게 다른 컨테이너의 내부 네트워크 환경을 공유하면 내부 IP를 새로 할당받지 않으며 호스트에 veth로 시작하는 가상 네트워크 인터페이스도 생성되지 않음docker run -i -t -d --name network_container_2 \\ --net containe:network_container_1 \\ ubuntu:14.04
이 글은 시작하세요! 도커/쿠버네티스를 보고 공부한 내용입니다
'서버 > 도커' 카테고리의 다른 글
[도커] json-file 로그 사용하기 (0) | 2022.02.28 |
---|---|
[도커] 브리지 네트워크와 —net-alias (0) | 2022.02.25 |
[도커] 도커 볼륨 (0) | 2022.02.24 |
[도커] 컨테이너 어플리케이션 구축 웹 서버 바인딩 (0) | 2022.02.21 |
[도커] 컨테이너 삭제 (0) | 2022.02.19 |
댓글