일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 중급파이썬
- 채팅
- SAA
- Class
- docker
- TypeScript
- async
- 파이썬
- flask
- MongoDB
- 튜플
- lambda
- pandas
- AWS
- merge
- git
- EC2
- SSA
- socket io
- wetube
- NeXT
- S3
- crud
- node
- react
- Vue
- dict
- RDS
- 카톡
- Props
- Today
- Total
초보 개발자
docker network 본문
docker network를 통해서 container끼리 통신하게 만들 수 있다!!
flask서버는 host에서 db는 컨테이너에서 실행시킨다고 가정해보자.
기본적으로 컨테이너를 생성하면 docker는 bridge라는 기본 네트워크로 설정이 된다.
하지만 이 네트워크는 독립적이라서 다른 기본 bridge네트워크와는 통신을 할 수 없다.
db는 27017:27017로 이어두었다.
따라서 flask에서 db에 접속을 하기 위해선 MongoClient('localhost', 27017)이라고 적어두면
host의 27017포트를 따라들어가고 mongo db 컨테이너의 27017포트로 연결이 되는 로직이다.
이번엔 flask서버도 컨테이너로 만들어보자 이 경우에 코드를 변경하지 않으면 어떻게 될까?
이 경우 ws에서 localhost는 ws를 의미한다. 따라서 27017포트에는 아무것도 존재하지 않으므로 연결이 되지 않는 상태이다. 따라서 컨테이너에 넣은 경우 하나의 네트워크로 묶어주어야 한다.
이 경우 test라는 network로 2개의 컨테이너를 묶고 flask안에서 MongoClient('mongo' < network alias , 27017) 이렇게 적어주면 같은 네트워크 안에서 alias로 적어둔 녀석을 찾아간다. 따라서 db를 만들 때 꼭 network alias를 적어주어야 한다.
같은 네트워크 안의 27107포트로 연결이 되어 접근이 가능해지는 것이다. 따라서 db 컨테이너를 생성할 때
굳이 27017:27017로 열어주지 않아도 실행은 가능하다!!
1. docker network 생성하기
docker network create test
# 기본적으로 bridge driver로 생성이 됨,
# 같은 브릿지 안의 컨테이너들 끼리만 통신이 가능
2. docker network 연결해서 container 실행하기
docker run -d -p 24017:24017 --network test -- network-alias mongo --name mongo_db mongo
docker run -d -p 80:5000 --network test --name ws memo:v1
# 같은 네트워크로 묶음
mongoclient와 연결할 때 mongo라고 적은 부분 --network-alias mongo < 이 거와 똑같이 적어야함
--network-alias abcd라고 적었으면 저 부분도 abcd라고 적어주어야함
'AI 웹개발 트랙 - 내배캠 > 9주차 ~' 카테고리의 다른 글
ec2 (0) | 2022.03.17 |
---|---|
aws ec2를 사용하여 docker 배포해보기 (0) | 2022.03.11 |
docker bind mount (0) | 2022.03.08 |
docker 이미지 만들고 docker hub에 올려보기 ! (0) | 2022.03.07 |
docker 컨테이너 편집 (0) | 2022.03.07 |