본문 바로가기
Develop/DevOps

[docker] 도커 네트워크 드라이버, Bridge Network ??

by 3-stack 2021. 12. 25.

jekins 학습의 시발점에 docker network create jenkins 명령어를 만났고,

도커 Birdge Network를 학습한 내용을 정리한다.

일단 위 명령어는 "jenkins"라는 도커 Bridge Network 를 만든다.

 

1. Bridge Network 가 뭔가요 ?

  • 도커의 기본 네트워크 드라이버.
  • 도커 네트워크 생성 시 네트워크 드라이버를 정의하지 않으면 Bridge Network 로 만들어진다.
  • Bridge Network는 주로 통신이 필요한 독립 실행형 컨테이너에서 사용된다.
$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8c99b66b3f04   bridge    bridge    local
fb4e9b287e33   host      host      local
33d3c47f8dad   none      null      local

 

2. Bridge Network 는 어떻게 사용되나요?

  • Docker를 설치한 후 Host(도커를 설치한 PC) 네트워크를 보면 "docker0" 이라는 인터페이스를 확인할 수 있다.
  • 이 인터페이스는 virtual ethernet bridge 이다. 컨테이너 생성 시 별도의 network 설정을 하지 않으면 "docker0" 브릿지를 통해 컨테이너와 Host가 통신하게 된다. ([참고] Windows 에서는 "docker0" 인터페이스를 확인할 수 없다. virtual machine 안에 있다.)
$ ifconfig docker0
docker0   Link encap:Ethernet  HWaddr 02:42:90:f4:b3:c5
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

3. Bridge Network, "birdge" 

  • 172.17.0.0/16 서브넷을 갖는다.
  • 컨테이너가 생성되면 이 대역의 IP(172.17.0.0 ~ 172.17.255.255)를 할당받게 된다.
    IP는 컨테이너가 재시작할 때마다 변경될 수 있다.
$ docker network inspect jenkins
[
    {
        "Name": "bridge",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                { "Subnet": "172.17.0.0/16" }
            ]
        },
        ...
    }
]

 

4. 통신 구조

  • 컨테이너는 외부와 통신하기 위해 2개의 네트워크 인터페이스를 생성한다.
  • 하나는 컨테이너 내부 Namespcae에 할당되는 "eth0" 이름의 인터페이스 이고, 다른 하나는 호스트의 네트워크 브릿지 = "docker0"에 바인딩 되는 "vethXXXXXXXX" 형식의 이름을 가진 veth 인터페이스 이다.

 


 

# 도커 네트워크 개요

도커 컨테이너, 서비스의 장점 중 하나는

도커 워크로드인지 도커로 배포되었는지 신경 쓸 필요가 없이 하나로 연결할 수 있다는 점이다.

도커 호스트가 윈도우, 리눅스, 윈도우+리눅스 실행하던 플랫폼에 관계없이 관리할 수 있다.

 

# 네트워크 확인 - docker network ls

 

# 네트워크 자세한 정보 - docker network inspect {네트워크 이름}

 

# 네트워크 드라이버

0. bridge / host / .... / none / overlay / ipvlan / macvlan

1. bridge

 기본 네트워크 드라이버. 네트워크 생성 시 드라이버를 정의하지 않으면 bridge로 만들어진다. Bridge Network는 주로 통신이 필요한 독립 실행형 컨테이너에서 사용된다

 Docker를 설치한 후 도커 호스트 네트워크를 보면 "docker0" 이라는 가상 인터페이스가 생긴다. 일반적인 인터페이스가 아니라 virtual ethernet bridge이다.

2. host : 독립 실행형 컨테이너의 경우, docker Host와 container 간의 네트워크 격리를 제거하고 호스트 네트워킹을 직접 사용.

댓글