PPAK

[Docker] Docker Container(Spring, Redis) 간 네트워크 연결 본문

프로젝트

[Docker] Docker Container(Spring, Redis) 간 네트워크 연결

PPakSang 2022. 8. 27. 09:22

프로젝트에서 본격적으로 Redis 를 사용하기 위해서는 로컬에서 실행중인 Spring Container 와 Redis Container 간의 연결이 필요했습니다.

 

일반적으로 OS 위에서 실행하는 JVM 과 Redis 는 host network 를 사용하여 손쉽게 연결할 수 있지만 Docker 는 컨테이너 간 네트워크 역시 격리시켜놓았기 때문에 같은 네트워크를 사용하고자 한다면 컨테이너를 잇는 네트워크 브릿지를 생성하고 이어주어야 합니다.

 

$ docker network ls

위 명령어를 통해 docker 에서 기본적으로 생성해놓은 네트워크를 확인해보면 host 와 bridge 가 존재하는 것을 확인할 수 있습니다.

$ docker network inspect bridge

별도의 연결 네트워크를 명시하지않은 모든 컨테이너는 이 default bridge 에 연결이 되고 만약 현재 실행중인 컨테이너가 존재한다면, 위 명령어를 통해서 해당 bridge network 에 연결되어 있음을 확인할 수 있습니다.

 

이러한 Docker bridge 는 실제 하드웨어 브릿지와 같이 둘 이상의 LAN 을 하나의 네트워크 대역 아래 두는 것을 의미합니다.

 

따라서 저희가 목표로 하는 서로 다른 컨테이너를 하나의 네트워크 대역 아래 두고 싶다면 별도로 bridge 를 생성하고 컨테이너를 이어주면 될 것 입니다.

 

브릿지 생성

$ docker network create --driver bridge mybridge
$ docker network inspect mybridge

위 명령어를 통해 브릿지를 생성하고 기본 게이트웨이가 만들어진 것을 확인합니다.

 

$ docker run -d --name myredis --net mybridge redis
$ docker run -p 8080:8080 -d --net mybridge --name=boot-server boot-server:1.0

--net [네트워크 이름] 옵션을 통해 서로 다른 컨테이너를 하나의 네트워크 대역에 위치 시킵니다.

 

Docker 는 여기서 굉장히 유용한 기능을 제공하는데 위와 같이 하나의 네트워크 대역에 위치시키기만 하면, 컨테이너 이름 (여기서는 myredis, boot-server) 을 호스트 이름으로 사용할 수 있습니다.

-> application.yml 에서 host: myredis 로 사용가능하다는 것을 의미

 

잘못된 정보가 있다면 댓글로 알려주시면 감사하겠습니다!!

Comments