취미가 좋다
[2-3] 여러 컨테이너 연결 본문
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에 저장된다.
어떤 컨테이너가 종료되고 새로 생성되더라도 기존 데이터가 유지가 된다.
'Sparta Coding Club > Docker' 카테고리의 다른 글
[2-5] Docker-compose (0) | 2021.07.31 |
---|---|
[2-4] 컨테이너의 리소스 사용량 제한 (0) | 2021.07.31 |
[2-2] 원하는 volume을 컨테이너에 연결하기 (0) | 2021.07.30 |
[2-1] 컨테이너의 데이터를 유지 (0) | 2021.07.30 |
[1-3] 어플리케이션 공유하기 (0) | 2021.07.30 |
Comments