본문 바로가기

Docker

[Docker] 여러개의 컨테이너 연결하기 - Docker network

 

1. Docker network란?

- 도커 컨테이너는 분리된 파일 시스템과 네트워크를 갖고있어서 설정하지 않으면 파일 시스템과 네트워크 통신이 불가능함

- network를 통해서 도커 컨테이너끼리 통신할 수 있게 만들 수 있음

 

 

2. network 확인

 

1) 도커 네트워크 확인

docker network ls

 

2) 도커 네트워크 상세 정보 확인

docker network inspect bridge

 

 

 

 

3. 사용자 정의 network 설정하기

 

1) 네트워크 생성

 

docker network create {생성할 네트워크 이름}

 

 

2) 네트워크 연결과 컨테이너 실행

docker run -d -p 24017:24017 --network {네트워크명} --network-alias {컨테이너명} {이미지명}

 

  • -d: 컨테이너를 백그라운드에서 실행
  • -p {호스트 포트:컨테이너 포트}: 호스트 포트와 컨테이너 포트를 연결
  • --network {네트워크명}: 컨테이너를 특정 네트워크에 연결
  • --network-alias mongo: 컨테이너를 네트워크 상에서 mongo 라는 별칭으로 식별, 이 별칭을 사용하여 동일한 네트워크에 속한 다른 컨테이너가 이 컨테이너를 참조할 수 있음
  • mongo: 사용할 이미지의 이름, 위와 같은 경우 MongoDB 공식 이미지 사용

 

 

3) 네트워크 연결 확인

- nicolaka/netshoot 이미지를 사용하여 쉘 스크립트를 실행

- dig 명령어는 연결 정보를 알 수 있음

docker run -it --network {네트워크명} nicolaka/netshoot
> dig mongo

 

  • docker run: 도커 컨테이너 실행 명령어
  • -it: 터미널 상에서 상호작용을 가능하게 하는 옵션, 컨테이너 안의 셸에 직접 명령어를 입력할 수 있음
  • --network {네트워크명}: 특정 네트워크에 컨테이너 연결
  • nicolaka/netshhot: nicolaka 사용자가 제공하는 유틸리티 도구가 포함된 컨테이너 이미지, 이 컨테이너는 네트워크 관련 유틸리티 및 도구를 사용할 수 있는 도구 상자 역할을 함
  • dig: DNS 질의를 수행하는 명령어
  • mongo: 조회하려는 호스트명

 

4) 어플리케이션 DB 링크 변경

- 기존 localhost를 mongo로 수정

 

5) 코드가 변경되었으므로 새로운 이미지를 생성(빌드) 

 

6) 네트워크 연결하기