Docker Network 를 사용해서 Container 간 통신하기

식빵·2023년 6월 8일
0

docker reference

목록 보기
6/12
post-thumbnail

🐳 Docker Network 연결법

# 1. docker network (DRIVER=bridge as default) 생성합니다.
docker create network my_postgres_network

# 2. 현재 실행중인 docker container id 확인합니다. 현재 2개 존재합니다.
docker ps -q
c5f560bf23c4
588eb5cbe059


### 참고: 만약에 docker run 명령어로 network 연결하고 싶다면 아래처럼 하시길 바랍니다.
### docker run --network my_postgres_network ... 생략 ...


# 3. docker network 에 2개의 container 를 포함시킵니다.
docker network connect my_postgres_network c5f56
docker network connect my_postgres_network 588e


# 4. network <-> container 연결을 확인합니다. "Container" 를 자세히 보면 됩니다.
docker network inspect my_postgres_network
[
    {
        "Name": "my_postgres_network",
        "Id": "fd84bcaf0b9394e73ee2a9a1f68af03501170a8cb8ddb2b42e3b9483638f5665",
        "Created": "2023-06-08T04:13:43.215135314Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        
        ##### 여기가 핵심 ######
        "Containers": {
            "588eb5cbe0594b9f3ec29b10a51d20f4d1f47f73a7185a0cbc244e4c63e3c8d3": {
                "Name": "MyPostgresKo",
                "EndpointID": "d5faf4ebc0acfe0180f7b9a72579d213ea65ec9bd774310f6f1d240edf472bb7",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16", ## 컨테이너에 할당된 IP
                "IPv6Address": ""
            },
            "c5f560bf23c47b1dc409fb234c361f5e79ef176041bc8119458d606987aa2191": {
                "Name": "RemotePostgresKo",
                "EndpointID": "4b1f665569fff5b37f50281c88a9181d8c3d3042f5e1dfeaf6cee6ddb741542a",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16", ## 컨테이너에 할당된 IP
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
  • Containers 안에 있는 docker network 와 연결된 Container 의 정보가 보입니다.
  • docker network 내에서 서로 다른 IP 가 존재하는 것을 확인할 수 있습니다.
  • 이제 각 컨테이너들은 서로 접근할 때 해당 IP 로 통신을 할 수 있습니다.




🐳 보충: docker 네트워크 기본

1. 목록조회

맨 처음 docker 를 설치하고 docker network ls 명령어를 치면 아래와 같이 나옵니다.
이 명령어를 입력하면 Docker 네트워크에 목록을 쉽게 조회할 수 있습니다.

docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
e44bf3fd8034   bridge    bridge    local
e1ac8bb3ca50   host      host      local
e5dee8057bd9   none      null      local

bridge, host, none 명칭의 네트워크는 Docker daemon 이 실행되면서 디폴트로 생성되는 네트워크입니다.


2. 네트워크 종류

Docker 네트워크는 bridge, host, overlay 등 목적에 따라 다양한 종류의
network driver 를 지원합니다.

  • bridge : 하나의 호스트 컴퓨터 내에서 여러 컨테이너들이 서로 소통할 때 사용
  • host : 컨테이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너를 돌리기 위해서 사용
  • overlay : 여러 호스트에 분산되어 돌아가는 컨테이너들 간에 네트워킹을 위해서 사용




🐳 참고링크

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글