docker network? 

  • 컨테이너가 서로 연결하고 통신하거나 Docker가 아닌 워크로드와 통신할 수 있는 기능
  • Docker의 네트워킹 하위 시스템은 드라이버를 사용하여 플러그형으로 연결

 

docker network driver 종류와 사용 예제 

 

bridge

  • 기본 네트워크 드라이버
  • 동일한 브리지 네트워크에 연결된 컨테이너들이 통신할 수 있도록 하는 동시에 해당 브리지 네트워크에 연결되지 않은 컨테이너들과 격리

 

bridge 네트워크 설정 및 사용 예제

 

$ docker network create my-bridge
  • my-bridge 이름의 브릿지 네트워크 생성 

 

$ docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
de9c8e373986   bridge      bridge    local
  • 도커 네트워크 목록 확인 

 

$ docker network inspect my-bridge
[
    {
        "Name": "my-bridge",
        "Id": "8e1b132eb066fb9b143edad8e72fc04e4ffd335227005e2ccc885ce31811b40a",
        "Created": "2025-04-15T05:48:15.075292759Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "49c0db95eb0d8069e5b2dfcfb431a4670bc763b347b07fe8cf7ab092338b4b38": {
                "Name": "container2",
                "EndpointID": "fed67438d8ca789eda63b5c394323e33f942147cc48bf934180ba8f2c6ff5939",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "d499eb01fec62647d3fe3b87565bdb60bc7bc40fdcaa986aee3c7a9427659ef9": {
                "Name": "container1",
                "EndpointID": "0f664af14246c6729df37200ca7bf1046ba61396434ee8801cad47f4ed33c77f",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
  • 네트워크 상세 정보

 

$ docker run -dit --name container1 --network my-bridge nginx
$ docker run -dit --name container2 --network my-bridge alpine
  • 네트워크를 지정해서 컨테이너 생성
  • docker run option) --network network : Connect a container to a network

 

$ docker exec -it container2 ping container1
PING container1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.332 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.339 ms
64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.419 ms
...
  • container2에서 container1에 ping 명령어로 통신이 가능한지 확인 

 

 

host

      • 컨테이너는 호스트의 네트워킹 네임스페이스를 공유
      • 호스트의 포트 사용, 컨테이너에 자체 IP 주소가 없음 (포트 매핑 -P 필요없음)
      • 같은 포트를 여러 컨테이너에서 사용할 수 없음
      • Linux 컨테이너만 지원

 

host 네트워크 설정 및 사용 예제

$ docker run -d --name nginx-host --network host nginx
  • niginx-host 이름으로 nginx 컨테이너를 호스트 네트워크 모드로 실행
  • nginx는 호스트의 80번 포트를 사용하므로 80번 포트 사용 
  • 호스트 머신의 IP/포트를 그대로 사용하기 때문에 포트 바인딩(-p) 없이도 바로 접근 가능 (브라우저에서 http://localhost 접속)

 

※ 주의

host 네트워크는 docker network create 로 생성 불가 

docker run 에서 --network host 로 설정 !! 

 

 

 

overlay

  • 여러 Docker 데몬 호스트 간에 분산 네트워크를 생성
  • Swarm 서비스 간 연결을 생성하는 데 자주 사용

 

 

docker network 명령어 

 

$ docker network COMMAND

 

Commands :

  • connect        Connect a container to a network
  • create           Create a network
  • disconnect   Disconnect a container from a network
  • inspect         Display detailed information on one or more networks
  • ls                   List networks
  • prune            Remove all unused networks
  • rm                 Remove one or more networks

 

 


* docker/networking
https://docs.docker.com/engine/network/

* docker network
https://docs.docker.com/reference/cli/docker/network/ 

'! > docker' 카테고리의 다른 글

docker compose  (0) 2025.05.29
docker volume, bind mounts  (0) 2025.04.12
Dockerfile  (0) 2025.04.04
Docker CLI 명령어  (0) 2024.11.14
Docker 설치 (MacOS)  (0) 2022.09.05

+ Recent posts