브리지 드라이버를 사용하여 사용자 정의 네트워크를 만든 후 컨테이너를 추가하여 통신하는 실습을 진행해 보도록 하겠습니다.
지금부터 하려는 실습은 예전 포스트에서 진행했던 레거시 연결과 같은, 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를 해보면 컨테이너 두 개가 기동 중이라고 볼 수 있어야 합니다.
docker network inspect로 containers 부분을 살펴보면 아래와 같이 두 컨테이너가 설정돼있는 걸 확인해 볼 수 있습니다.
두 컨테이너와의 연결 확인해 보기
이제 실제 브라우저에서 node 웹서버를 접속해 몽고 디비 데이터를 가져와 출력하는지 확인해 보겠습니다.
1. 입력 페이지에서 데이터를 입력해서 몽고 디비에 넣기.
2. 입력된 데이터 확인
데이터가 잘 입력되고, 입력된 데이터를 가져와서 다시 출력이 잘되고 있습니다. 이 모든 과정이 두 개의 컨테이너에서 통신해서 이뤄지고 있습니다.
이상으로 두 컨테이너를 네트워크를 이용해 묶어주고, node컨테이너에서 몽고 디비 컨테이너의 데이터를 가져오는 실습을 진행해 보았습니다.
여기까지 읽어주셔서 감사합니다.
'Container > Docker' 카테고리의 다른 글
[docker] docker-compose.yml 파일 구성 알아보기 (0) | 2022.05.02 |
---|---|
[Docker] Docker Compose 란? 특징 및 필요성 (0) | 2022.05.01 |
[Docker] 컨테이너 네트워크 란, 네트워크 만들기 (0) | 2022.04.26 |
[Docker] 두 컨테이너 연결, 노드 컨테이너와 몽고디비 컨테이너 연결하기 (0) | 2022.04.25 |
[Docker] 도커 컨테이너 서로 연결하기 (이름으로 연결, legacy linking) (0) | 2022.04.24 |
최근댓글