DevOps BootCamp/도커

로컬 호스트와 컨테이너 통신

cloudmaster 2023. 4. 15. 16:50

► 로컬 호스트와 컨테이너 통신하기

 

로컬에 다운로드 된 mongoDB를 사용하기 위한 코드
MongoNetworkError로 컨테이너 실행 안됨

컨테이너와 로컬 호스트가 통신 하지 않는 다는 사실을 알 수 있다.

 

> 따라서 database 코드를 수정해 주어야 한다.

 

도커 컨테이너 내부에서 알 수 있는 호스트 머신 ip 주소로 변환 해 주어야 한다

 

► 컨테이너 간 통신

 

1. 

inspect 명령어를 사용하여 container의 IP 주소를 찾아준다

 

NetworkSettings 부분을 보면 나와 있다
주소를 컨테이너 IP 주소로 바꾸어 준다

  > 하지만 첫 번쨰 방법은 주소를 하드코딩 해 주어야 해서, 컨테이너의 IP 주소가 바뀌면 계속 바꾸어 주어야 한다.

 

 

Docker Networks 소개: 우아한 컨테이너 간 통신

 1. network 컨태이너 만들기

> docker network create <만들 네트워크 이름>

 

 2. network 컨테이너와 다른 컨테이너를 연결

 

 3.  js 코드로 가서 connect 부분에서 호스트 부분을 수정해 준다

 

 4. 다시 build

 

 5. docker container를 실행시키는 코드에 --network <network 컨테이너 이름 추가>

 

 

Docker 네트워크 드라이버

 > Docker Networks는 실제로 네트워크 동작에 영향을 미치는 다양한 종류의 '드라이버'를 지원

 > 디폴트 드라이버는 'bridge' 드라이버, 모듈에 나타난 동작을 제공

 > 네트워크 생성 시 '--driver' 옵션을 추가하여 간단히 설정

  • overlay: 여러 Docker 데몬 (즉, 서로 다른 머신에서 실행되는 Docker)이 서로 연결. 여러 컨테이너를 연결하는 구식의 / 거의 사용되지 않는 방법인 'Swarm' 모드에서만 작동
  • macvlan: 컨테이너에 커스텀 MAC 주소를 설정. 그러면 이 주소를 해당 컨테이너와 통신하는데 사용
  • none: 모든 네트워킹이 비활성화
  • 써드파티 플러그인: 모든 종류의 동작과 기능을 추가할 수 있는 타사 플러그인을 설치

mongodb 권한 설정하기

1. -e 옵션을 통해 env를 추가하여 name과 password를 추가한다

 

2. ' mongodb:// ' 뒤에 ' id : password@ ' 부분을 추가하고 끝에 ' authSource=admin '을 추가한다 

 

✭ env 값 자동으로 넣기

 1. Dockerfile에 env 값 추가

 

 2. 자바스크립트 코드에 ${process.env.MONGODB_USERNAME}, ${process.env.MONGODB_PASSWORD}를 추가한다.

 

 

 

 

[출처] https://www.udemy.com/course/docker-kubernetes-2022/learn/lecture/30289916#overview

 

 

'DevOps BootCamp > 도커' 카테고리의 다른 글

컨테이너 - 볼륨과 환경 변수  (1) 2023.04.13
도커 푸시하기  (0) 2023.04.13
두 개의 도커 이미지 다루기  (0) 2023.04.12
왜 도커인가?  (0) 2023.04.11
도커 컨테이너 차트 시트  (0) 2023.04.10