상세 컨텐츠

본문 제목

[Docker] 컨테이너 끼리 내부 통신가능하게 설정

프로그래밍/Server

by 웰치스짱 2023. 4. 10. 19:03

본문

반응형

 

도커를 사용하다 보면 여러개의 컨테이너끼리 서로간에 통신이 필요한 경우가 있을때 어떻게 설정을 해야 가능한지 정리해보겠습니다.

 

1) 먼저 내부 네트워크 브릿지를 새로 생성합니다.

 

docker network create --gateway 172.19.0.1 --subnet 172.19.0.0/21 internal_net

생성한 네트워크의 상세 내역을 확인해봅시다.

# 네트워크 브릿지 리스트 확인
ubuntu@ip-10-10-10-149:~$ docker network ls
NETWORK ID     NAME           DRIVER    SCOPE
639aff3124e1   bridge         bridge    local
742d3b6b0356   internal_net   bridge    local
db9535f2945b   host           host      local
2d915c07de3a   none           null      local


# 새로 생성한 네트워크 브릿지 내역 확인
ubuntu@ip-10-10-10-149:~$ docker inspect internal_net
[
    {
        "Name": "internal_net",
        "Id": "742d3b6b0356c61a041a82d7b13a5a262fba7a04827efb2adbaf6a3c5b40b6cf",
        "Created": "2023-04-10T07:31:14.928137822Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/21",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

이제 도커를 실행시킬때 해당 네트워크 브릿지를 명시해줍니다.

이때 IP를 특정하여 공유시켜줄수 있습니다.

 

# internal_net 브릿지를 사용하고 ip는 172.19.0.100을 사용하게 설정
# ip를 명시하지 않으면 자동으로 바인딩이 되며 docker 컨테이너 시작 순서에 따라 변경됨
docker run -d -p 11001:11001 --network internal_net --ip 172.19.0.100 -e ....

 

다시 현재 네트워크 상태를 확인해봅시다.

 

ubuntu@ip-10-10-10-149:~$ docker inspect internal_net
[
    {
        "Name": "internal_net",
        "Id": "742d3b6b0356c61a041a82d7b13a5a262fba7a04827efb2adbaf6a3c5b40b6cf",
        "Created": "2023-04-10T07:31:14.928137822Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/21",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "b2ca9a3f466f1901cae3b9a8943b4978ea8f304645237a8610e4f5f2ecb3971b": {
                "Name": "internal_net.api",
                "EndpointID": "22ff1e8996056a110fc0c8332f743d482c8795c4e5545c1a6462e1987e390ef5",
                "MacAddress": "02:42:ac:13:00:64",
                "IPv4Address": "172.19.0.100/21",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

위와 같이 설정한 IP와 네트워크 대역대로 실행이 됩니다.

 

다른 컨테이너도 동일하게 사용하시면 됩니다.

반응형

관련글 더보기

댓글 영역