본문 바로가기

리눅스

[draft] Docker Bridge 네트워크 생성하는 방법

Docker Bridge 네트워크 생성하는 방법

Docker를 사용하다 보면 컨테이너 간 통신을 보다 명확하게 분리하거나 특정 서비스(예: Elasticsearch 클러스터 등)를 위한 전용 네트워크가 필요한 경우가 많습니다. 이 글에서는 Docker의 기본 bridge 네트워크 구조를 살펴보고 사용자 정의 bridge 네트워크를 생성·확인하는 방법입니다.

1. Docker 네트워크 개요

Docker는 컨테이너 간 통신을 위해 여러 종류의 네트워크 드라이버를 제공합니다.

  • bridge : 단일 Docker 호스트 내 컨테이너 간 통신에 사용 (기본값)
  • host : 호스트 네트워크를 컨테이너와 공유
  • none : 네트워크 기능 비활성화

2. 현재 Docker 네트워크 목록 확인

현재 Docker에 어떤 네트워크가 존재하는지 확인해 보겠습니다.

docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
6796a63d6574   bridge    bridge    local
3edc63ab63b3   host      host      local
54bcfe43a226   none      null      local
  • bridge: Docker 설치 시 기본으로 생성되는 기본 bridge 네트워크
  • host, none: 특수 목적의 네트워크

3. 기본 bridge 네트워크 상세 정보 확인

docker network inspect NETWORK_ID
docker network inspect 6796a63d6574
[
    {
        "Name": "bridge",
        "Id": "6796a63d657459c976414bb6e85be17a6772ac4c23e45b2dd3af180ebf9f8446",
        "Created": "2021-11-15T16:05:18.7966082+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
  • Subnet : 172.17.0.0/16
  • Gateway : 172.17.0.1
  • Bridge 인터페이스 이름 : docker0
  • 컨테이너 간 통신(ICC) 및 IP Masquerade 활성화

이는 Docker가 기본적으로 제공하는 네트워크 대역이며 모든 컨테이너가 이 네트워크에 연결되면 하나의 큰 네트워크를 공유하게 됩니다.

4. 사용자 정의 bridge 네트워크 생성

사용자 정의 bridge 네트워크를 생성해 보겠습니다.

docker network create \
	--driver=bridge \
    --subnet=172.13.0.0/16 \
    --gateway=172.13.0.1 \
    elastic-cluster-net
ef600adb3d4e73e68d99177fe2f937defb97630c11118574d802f8f1098fb536

5. 생성된 네트워크 확인

네트워크 목록을 확인해 보겠습니다.

docker network ls
$ docker network ls
NETWORK ID     NAME                  DRIVER    SCOPE
6796a63d6574   bridge                bridge    local
ef600adb3d4e   elastic-cluster-net   bridge    local
3edc63ab63b3   host                  host      local
54bcfe43a226   none                  null      local

elastic-cluster-net 이 정상적으로 추가된 것을 확인할 수 있습니다.

6. 사용자 정의 bridge 네트워크 상세 정보 확인

생성한 네트워크의 상세 설정을 확인합니다.

docker network inspect elastic-cluster-net
[
    {
        "Name": "elastic-cluster-net",
        "Id": "ef600adb3d4e73e68d99177fe2f937defb97630c11118574d802f8f1098fb536",
        "Created": "2021-11-17T10:53:17.140983353+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.13.0.0/16",
                    "Gateway": "172.13.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
  • Subnet : 172.13.0.0/16
  • Gateway : 172.13.0.1
  • 기본 bridge 네트워크와 독립된 IP 대역 사용
  • 현재 연결된 컨테이너 없음 (Containers: {})

참고URL

- dockerdocs : docker network create