취미가 좋다

[2-3] 여러 컨테이너 연결 본문

Sparta Coding Club/Docker

[2-3] 여러 컨테이너 연결

benlee73 2021. 7. 30. 14:42

Docker Network 란?

도커 컨테이너들은 분리된 file system과 네트워크를 가지므로, 도커 네트워크를 통해 컨테이너간 통신을 가능하게 해준다.

 

Docker Network 문법

1. 도커 네트워크 생성

docker network create test

 

2. 컨테이너 실행할 때 도커 네트워크 연결

docker run -d -p 24017:24017 --network test --network-alias mongo mongo

--network 옵션으로 test 네트워크에 연결한다.

--network-alias 로 앞으로 이 컨테이너에 연결하고 싶을 때, 이 네트워크 안에서 mongo 라는 이름으로 연결한다.

 

3. 컨테이너에서 다른 컨테이너 호출하기

docker run -it --network test nicolaka/netshoot
> dig mongo

mongodb에 접근 가능한지 확인해보기 위해, netshoot이라는 이미지를 가져온다.

컨테이너를 실행시키고 터미널로 접근하게 되면, dig 명령어로 mongo에 접근 가능한지 확인해본다.

 

Docker Network로 메모 어플리케이션에 DB 연결하기

1. 네트워크 생성

docker network create memo

 

2. mongo db network 생성

docker run -d -p 24017:24017 --network memo --network-alias mongo mongo

 

3. app.py 의 DB link 변경

client = MongoClient('mongo', 27017) # localhost -> mongo로 변경

로컬에서 서버를 띄우지 않고, 도커 이미지로 서버를 띄우기 때문에, 컨테이너와 연결하기 위해 mongo를 입력한다.

 

4. 새로운 이미지 생성

docker build -t simple-memo-app:version3 .

version3 라는 새로운 태그로 이미지를 빌드한다.

 

5. flask 어플리케이션 network 연결

docker run -p 5000:5000 --network memo simple-memo-app:version3

어플리케이션 웹에서 데이터를 저장하면, mongoDB에 저장된다.

어떤 컨테이너가 종료되고 새로 생성되더라도 기존 데이터가 유지가 된다.

Comments