본문 바로가기
개발/개발공부

Network Namespace / Container 기초, 네트워크, 네임스페이스, 컨테이너, 간단 정리

by 치킨개발자 2023. 1. 6.
728x90

Network Namespace


컨테이너가 볼수 있는 네트워크 인터페이스와 라우팅 테이블을 제한

lsns로 Network namespace 확인 가능

$lsns
        NS TYPE   NPROCS   PID USER   COMMAND
4026534275 net         93    1 root   ~~
...

새로운 Network namespace는 loopback interface 만 존재

외부통신을 위해서는 한쌍의 virtual ethernet interface가 필요

추가로 인터페이스에 IP주소를 부여하여 라우팅테이블에도 등록해야함

 

다양한 케이스가 존재하고 각각의 케이스별로 연결 방식이 상이함

1. 호스트 안의 각각의 네임스페이스간 직접 통신

2. 호스트의 bridge를 통해 네임스페이스간 통신

3. namespace -> host -> 외부 통신

....

여러 케이스가 있고 각각 중간에 필요한 interface가 다름.

나중에 실습을 통해 자세히 확인해볼 예정

 

Docker Network


https://docs.docker.com/engine/tutorials/networkingcontainers/

Docker Network도 보면 컨테이너에 eth가 있고 veth를 통해 네트워크를 이용하는 것을 볼 수 있음

bridge, overlay network등에 대한 지원이 편리

Docker Engine을 사용하면 자동으로 network구성을 해줌

$ docker network inspect bridge

[
    {
        "Name": "bridge",
        "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.1/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c": {
                "Name": "networktest",
                "EndpointID": "647c12443e91faf0fd508b6edfe59c30b642abb60dfab890b4bdccee38750bc1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "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": "9001"
        },
        "Labels": {}
    }
]

network inspect를 통해 ip확인 가능

 

$ docker network create -d bridge my_bridge

유저가 custom bridge network도 생성 가능

반응형

댓글