본문 바로가기

Micro Service Architecture/Docker

21. Docker Network - Bridge (네트워크 공유)

반응형

1. 네트워크 공유 : 
- 컨테이너 가상 인터페이스를 공유. 
- 같은 IP을 가상 인터페이스에 할당 받게 됨

 

2. 네트워크 생성

# 172.22.0.0/24 대역의 172.22.0.1의 게이트웨이를 가지는 test_defualt이름의 브릿지 네트워크 생성
$ docker network create --driver bridge --ip-range 172.22.0.0/16 --subnet 172.22.0.0/16 --gateway 172.22.0.1 test_default

 

3. 컨테이너 생성 및 네트워크 할당

# nginx 컨테이너를 test_nginx_1 이름으로 test_default 네트워크로 할당
$ docker run -itd --name=test_nginx_1 --net=test_default -P nginx:latest
 
 
# ansible centos7 컨테이너를 test_centos7_1 이름으로 test_nginx_1 컨테이너 네트워크에 연결
$ docker run -itd --name=test_centos7_1 --net=container:test_nginx_1 ansible/centos7-ansible:latest

 

4. 설정된 정보 확인

# 속한 컨테이너는 test_nginx_1 1개만 표시.
$ docker network inspect test_default
...
        "Containers": {
            "57fa7098c764a69a7137b94f142e52d27b6fc98cc535b8dfb3c33ee6d62e43eb": {
                "Name": "test_nginx_1",
                "EndpointID": "1650328f5c340ca2bae749af08259a90be1b6208d35d62156bc7c89a71978604",
                "MacAddress": "02:42:ac:16:00:02",
                "IPv4Address": "172.22.0.2/16",
                "IPv6Address": ""
            }
        },
...
 
 
# test_nginx_1 컨테이너 inspect 확인 : 172.22.0.2 할당
$ docker inspect test_nginx_1
...
            "Networks": {
                "test_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "57fa7098c764"
                    ],
                    "NetworkID": "ea790e81a2810d0d4e612faf6a5273a6ec47de5d18b2045e6651469660c459cb",
                    "EndpointID": "1650328f5c340ca2bae749af08259a90be1b6208d35d62156bc7c89a71978604",
                    "Gateway": "172.22.0.1",
                    "IPAddress": "172.22.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:16:00:02",
                    "DriverOpts": null
                }
            }
...
 
# test_centos7_1 컨테이너 inspect 확인 : 인터페이스 정보가 없음.
$ docker inspect test_centos7_1
...
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {}
        }
...
 
 
# 호스트 인터페이스 확인 : veth* 인터페이스가 1개만 생성됨
$ ip addr
...
63: veth71b6760@if62: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-ea790e81a281 state UP group default
    link/ether c6:40:d8:bd:4e:ba brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::c440:d8ff:febd:4eba/64 scope link
       valid_lft forever preferred_lft forever

 

5. 컨테이너 내부 확인

# test_centos7_1 컨테이너 확인 : 172.22.0.2로 test_nginx_1과 같은 IP로 할당
$ docker exec -it test_centos7_1 /bin/bash
[root@57fa7098c764 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.22.0.2  netmask 255.255.0.0  broadcast 172.22.255.255
 
# 외부 통신
[root@57fa7098c764 ansible]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=127 time=43.5 ms
^C
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 43.584/43.584/43.584/0.000 ms
반응형

'Micro Service Architecture > Docker' 카테고리의 다른 글

23. Docker Network - Host  (0) 2021.03.24
22. Docker Network - Bridge (net-alias)  (0) 2021.03.24
20. Docker Network - Bridge (기본)  (0) 2021.03.24
19. docker-compose 문법  (0) 2021.03.24
18. [docker] Bash Completion  (0) 2021.03.16