본문 바로가기

여러가지/Docker & AWS

[섹션 4] 네트워킹: (교차) 컨테이너 통신

-------------------------------------------------- 목차 ----------------------------------------------------

- 네트워크 명령어(생성, 확인, 삭제)

[실습 1] 컨테이너 내부 애플리케이션에서 월드 와이드 웹에 요청 보내기

[실습 2] 컨테이너 내부 애플리케이션과 로컬 머신에 있는 어플리케이션 통신하기

[실습 3] 노드 웹 API 컨테이너 <-> mongoDB 컨테이너

[실습 4] 컨테이너 네트워크

[참고] Postman 다운로드

-----------------------------------------------------------------------------------------------------------

기본적으로 컨테이너는 월드 와이드 웹에 요청(ex. HTTP)을 보낼 수 있다.

즉, 도커화된 컨테이너 내부의 애플리케이션과 웹 API 및 웹 페이지와 통신할 수 있다.

(+) 월드 와이드 웹(World Wide Web, www, w3)

: 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간

 

 

[실습 1] 컨테이너 내부 애플리케이션에서 월드 와이드 웹에 요청 보내기

1) app.js 코드 수정

2) 이미지 및 컨테이너 생성

> docker build -t favorites-node .

> docker run --name favorites -d --rm -p 3000:3000 favorites-node

3) Postman에서 GET 요청 보내기

> localhost:3000/movies

> localhost:3000/people

=> GET 요청을 보냈을 때 정상적으로 작동되는 것을 확인할 수 있다.

 

 

[참고] Postman 다운로드

Postman?

: 웹 API에 HTTP 요청을 보내는데 사용하는 간단한 도구

https://www.postman.com/downloads/

 

[실습 2] 컨테이너 내부 애플리케이션과 로컬 머신에 있는 어플리케이션 통신하기

(로컬 머신에 mongoDB 설치가 필요하여 실제로 진행하지는 않았다.)

1) app.js 코드 수정

=> 수정 전

=> 수정 후, docker 컨테이너 내부에서 알 수 있는 호스트 머신의 IP 주소로 변환되어 docker에 의해 인식된다.

(+) HTTP 요청

2) 이미지 및 컨테이너 생성

3) 확인

> localhost:3000/favorites

 

 

[실습 3] 노드 웹 API 컨테이너 <-> mongoDB 컨테이너

1) mongoDB 컨테이너 생성

> docker run -d --name mongodb mongo

2) IPAddress 찾기 및 복사

> docker container inspect mongodb

3) app.js 코드 수정

4) 이미지 및 컨테이너 생성

> docker build -t favorites-node .

> docker run --name favorites -d --rm -p 3000:3000 favorites-node

5) 컨테이너 확인

6) GET 요청

(+) 로컬 mongoDB와는 전혀 다른 데이터베이스이다.

7) 즐겨찾기 저장

(=> Json 파일 내용은 movies get 요청시 반환된 정보를 사용해라.)

8) GET 재요청

즉, 기존 로컬시스템에 있던 데이터베이스를 컨테이너 내부에 위치하도록 했다.

=> 단, 위의 방법은 데이터베이스 컨테이너 IP가 변경될 때마다 재빌드 해줘야한다.

 

 

● 네트워크 명령어

ㄱ. 생성

> docker network create <-네트워크 이름->

ㄴ. 확인

> docker network ls

ㄷ. 삭제

> docker network rm <-네트워크 이름->

 

 

[실습 4] 컨테이너 네트워크

1) 네트워크 생성 및 확인

> docker network create favorites-net

> docker network ls

2) 컨테이너 생성

> docker run -d --name mongodb --network favorites-net mongo

3) app.js 코드 수정

4) 이미지 및 컨테이너 생성

> docker run -t favorites-node

> docker run --name favorites --network favorites-net -d --rm favorites-node

5) GET 요청

6) 즐겨찾기 저장

7) GET 재요청

=> 컨테이너가 정상적으로 통신하고 있음을 확인할 수 있다.

(+) 네트워크로 컨테이너가 연결되어 있을 경우 포트 노출 할 필요 없다.