✔️

컨테이너 통신

컨테이너 네트워크 모델

컨테이너 이미지는 readonly이며, 컨테이너에 추가되는 데이터들은 별도의 RW레이어에 저장
컨테이서 삭제시 데이터도 삭제된다.
따라서 컨테이너 삭제와 상관없이 보존할 수 있는 볼륨마운트가 필요.

포트포워딩

container port를 외부로 노출시켜 외부 연결 허용
iptables rule을 통한 포트 노출
→ iptables -t nat -L -n -v

# host 80에서 컨테이너 80으로 연결
docker run --name web1 -d -p 80:80 nginx:1.14 

# host 임의의 포트(docker ps 등으로 확인가능)에서 컨테이너 80으로 연결
docker run --name web2 -d -p 80 nginx:1.14

# host 임의의 포트에서 컨테이너 dockerfile에 expose한 포트로 연결
docker run --name web3 -d -P nginx:1.14

user-defined bridge network

컨테이너 이미지는 readonly이며, 컨테이너에 추가되는 데이터들은 별도의 RW레이어에 저장
컨테이서 삭제시 데이터도 삭제된다.
따라서 컨테이너 삭제와 상관없이 보존할 수 있는 볼륨마운트가 필요.

docker network ls

docker network create --driver bridge \
     --subnet 192.168.100.0/24 \
     --gateway 192.168.100.1 \
     mynet

docker network inspect mynet

docker network ls

#기본네트워크에서 컨테이너 실행
docker run -d --name web4 -p 8081:80 nginx:1.14

docker inspect web4
...
...
"NetworkSettings": {
    "Networks": {
        "bridge": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": null,
            "NetworkID": "3a46df6fea536bb67e0dd000e0cc1a9655366321963176ba6b2072842b088ea3",
            "EndpointID": "7c572d13a7e447039f6857742e6c45bd07b7b392f0f2fdeef5d3d60541b01bab",
            "Gateway": "172.17.0.1",
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:11:00:02",
            "DriverOpts": null
        }
    }
}


#유저네크워크에서 컨테이너 실행
docker run -d --name web5 --net mynet -p 8082:80 nginx:1.14

docker inspect web4
...
...
"NetworkSettings": {
    "Networks": {
        "mynet": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "b5104160cb4b"
            ],
            "NetworkID": "4db7371c6b142c2066c9b6a082571f03eac411e03cc5d8fdd5b5a2814436f4d1",
            "EndpointID": "cd8c3fd6cbf086c99d50069fd334cf54c0b16ccc6f9529e060cf6c0ee8ecd61e",
            "Gateway": "192.168.100.1",
            "IPAddress": "192.168.100.2",
            "IPPrefixLen": 24,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:c0:a8:64:02",
            "DriverOpts": null
        }
    }
}