본문 바로가기

Micro Service Architecture/Docker

23. Docker Network - Host

반응형

1. 개념 : container의 네트워크 스택은 Docker host와 분리되지 않으며, container는 host의 namespace를 공유. 
- 이에 따라 자체 IP 주소를 할당받지 않고 port 80을 바인딩하는 container는 호스트 IP 주소에 있는 port 80을 사용할 수 있음.
- vmware의 host network 와는 다름.

 

2. 컨테이너 생성

# nginx 컨테이너를 host 네트워크로 생성
$ docker run -itd --name=test_nginx_1 --net=host nginx:latest

 

3. 네트워크 확인

# test_nginx_1 컨테이너가 할당되었지만 IP 정보는 없음.
$ docker network inspect host
...
        "Containers": {
            "c3fd5da98c78c83cbf39af10a17304d9738d2e1833d8392a70bebc354d7b03c9": {
                "Name": "test_nginx_1",
                "EndpointID": "daaeeea0f2470fda361a841ae16dff595de9460e3cb3f633f8a89bb18ab0e1f0",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            }
        },
...
 
# 호스트 인터페이스 확인 : veth* 와 같은 가상 인터페이스가 생성 되지 않음.
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e6:5d:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.6.200/24 brd 192.168.6.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::7cd7:4062:7e9e:ad12/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:e3:2e:95:b4 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
59: br-ea790e81a281: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:d4:15:76:fe brd ff:ff:ff:ff:ff:ff
    inet 172.22.0.1/16 brd 172.22.255.255 scope global br-ea790e81a281
       valid_lft forever preferred_lft forever
    inet6 fe80::42:d4ff:fe15:76fe/64 scope link
       valid_lft forever preferred_lft forever

 

4. 컨테이너 확인

# 컨테이너를 생성할때 publish port 정보가 없이 생성.
$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
c3fd5da98c78   nginx:latest   "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes             test_nginx_1
 
# 호스트 netstat 정보를 확인하면 nginx 가 사용하는 80포트가 열려있는 것을 확인
$ netstat -anpot | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11263/nginx: master  off (0.00/0/0)
tcp6       0      0 :::80                   :::*                    LISTEN      11263/nginx: master  off (0.00/0/0)
반응형