인프라/Docker

[Docker] 도커 네트워크

2juhyunju 2021. 12. 27. 21:47
  • bridge 드라이버
    • bridge는 컨테이너가 사용하는 프라이빗 네트워크 이며 같은 bridge에 연결되어 있으면 컨테이너의 IP주소로 통신할 수 있다. 외부로 통신할 때 에는 NAPT 통신을 사용하며, 외부에서 bridge로 통신하려면 포트포워딩을 사용해야 한다.
    • 도커를 설치하면 이름이 docker0인 리눅스 브릿지가 생성되는데 이는 docker network ls 명령의 출력에서 이름이 bridge인 네트워크와 동일하다. 이를 확인하려면 docekr inspect 커맨드를 사용한다.
    • bridge 드라이버를 사용하는 네트워크는 여러 개 생성할 수 있으며 docker network create 커맨드를 사용한다.
# docker network create --subnet <IP주소> --gateway <게이트웨이 주소> <네트워크이름> 
// bridge 드라이버를 사용하는 net1 네트워크 생성

# docker run -itd --name <컨테이너이름> --network <네트워크이름> centos:latest
// network 1를 사용하는 컨테이너 생성​

 

  • host 드라이버
    • 호스트에서 컨테이너의 네트워크 격리를 해제하여 호스트의 네트워크 정보를 공유해서 사용하는 방법이다.
      컨테이너는 호스트 입장에서 하나의 프로세스이기 때문에 가상머신과 다르게 네트워크 정보를 공유할 수 있다. 컨테이너가 이 네트워크를 사용할 때 컨테이너의 포트가 호스트에서 사용하는 포트와 충돌해서는 안 된다.
# docker run -d --name web4 --network host httpd:latest 
// bridge 드라이버를 사용하는 컨테이너는 curl 명령으로 웹 서버에 접근하려면 IP 주소를 알아야 했지만 
WEB4 컨테이너는 localhost로 조회할 수 있다. 이는 호스트와 네트워크 정보를 같이 공유하기 떄문이다.