반응형

브리지 드라이버를 사용하여 사용자 정의 네트워크를 만든 후 컨테이너를 추가하여 통신하는 실습을 진행해 보도록 하겠습니다.

지금부터 하려는 실습은 예전 포스트에서 진행했던 레거시 연결과 같은, Node.js와 MongoDB의 연결입니다. 다른 점은 네트워크를 만든 후 통신한다는 점입니다.

*레거시 연결 실습은 아래 글은 참고해 주세요.

[소프트웨어 개발/Docker] - [Docker] 두 컨테이너 연결, 노드 컨테이너와 몽고디비 컨테이너 연결하기

 


네트워크 만들기 

먼저 docker network ls로 기존에 있는 네트워크를 조회해 보겠습니다.

몇 개의 기본적인 네트워크가 존재하는 걸 확인할 수 있습니다.

네트워크는 docker network create로 네트워크를 만들 수 있습니다.

docker network create --driver bridge my_network1

--driver로 bridge 드라이버를 설정하고 있고 "my_network1" 이라는 네트워크 명을 만들고 있습니다.

docker network ls를 다시 해보면 방금 만든 network가 생성된 것을 확인해 볼 수 있습니다.

docker network inspect로 네트워크의 세부 사항을 검사해 보겠습니다.

docker network inspect my_network1

네트워크의 상세 정보를 확인해 볼 수 있고 Subnet과 Gatewat등도 확인해 볼 수 있습니다. 여기서 주목할 점은 Containers 영역이 아직 비어 있다는 점입니다. 

 

첫 번째 컨테이너 실행(몽고디비)

첫 번째 실행할 컨테이너는 MongoDB컨테이너 입니다.

docker run -d --net=my_network1 --name mongodb mongo

--net으로 방금 만든 네트워크 "my_network1"을 --name으로 "mongodb"를 지정하는 걸 주목해 주세요.  같은 네트워크에 묶어지면 --name으로 지정한 "mongodb"를 노드 컨테이너의 express에서 커넥션 스트링으로 사용할 수 있습니다.

 

이제 다시 network inspect를 실행해보겠습니다.

my_network1의 Containers에 mongodb가 들어있는 걸 확인해 볼 수 있습니다.

 

두 번째 컨테이너 실행(Node.js)

docker run -d --net=my_network1 --name nodeapp -p 3000:3000 fronquery/node

node 컨테이너 역시 --net으로 mongodb와 같은 네트워크인 my_network1을 지정해 주고 있습니다.

docker ps를 해보면 컨테이너 두 개가 기동 중이라고 볼 수 있어야 합니다.

컨테이너 2개가 실행중

docker network inspect로 containers 부분을 살펴보면 아래와 같이 두 컨테이너가 설정돼있는 걸 확인해 볼 수 있습니다.

 

두 컨테이너와의 연결 확인해 보기

이제 실제 브라우저에서 node 웹서버를 접속해 몽고 디비 데이터를 가져와 출력하는지 확인해 보겠습니다.

1. 입력 페이지에서 데이터를 입력해서 몽고 디비에 넣기.

2. 입력된 데이터 확인

몽고디비에서 데이터를 가져와 출력중인 화면

데이터가 잘 입력되고, 입력된 데이터를 가져와서 다시 출력이 잘되고 있습니다. 이 모든 과정이 두 개의 컨테이너에서 통신해서 이뤄지고 있습니다.


이상으로 두 컨테이너를 네트워크를 이용해 묶어주고, node컨테이너에서 몽고 디비 컨테이너의 데이터를 가져오는 실습을 진행해 보았습니다.

 

여기까지 읽어주셔서 감사합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기