본문 바로가기
🤓 스터디/🐳 [Udemy] Docker & Kubernetes 실전가이

[ Udemy : Docker & Kubernetes 실전가이드 (4) ] 네트워킹 컨테이너 통신

by Mr.Baobab 2025. 3. 12.
반응형

 

 


 

1. HTTP 통신 (웹 애플리케이션과 외부 사이트 연결)

일반적으로 도커 컨테이너 내부에서 외부 웹사이트와의 통신은 가능하며, 웹 애플리케이션이 HTTP 요청을 통해 데이터를 주고받을 수 있습니다.

 

✅ 예제: 컨테이너 내부에서 API 요청 보내기

curl https://jsonplaceholder.typicode.com/posts/1
  • 웹 애플리케이션이 API 서버와 통신할 때 사용됨
  • 컨테이너가 인터넷에 연결되어 있어야 함

하지만 내부 컨테이너 간의 통신을 원할 경우 별도의 네트워크 설정이 필요합니다.

 


2. 호스트 머신과의 통신

컨테이너 내부에서 호스트 머신의 서비스와 통신해야 할 경우 host.docker.internal을 사용할 수 있습니다.

사용 방법:

ping host.docker.internal
  • host.docker.internal은 도커가 실행되는 호스트 머신의 IP 주소를 반환합니다.
  • Windows, macOS에서 기본 지원되며, Linux의 경우 추가 설정이 필요할 수 있음

예제: 호스트 머신의 데이터베이스와 연결

mysql -h host.docker.internal -u root -p
  • 호스트 머신에서 실행 중인 MySQL 서버에 접근 가능

 


 

3.  다른 컨테이너와 통신 (IP 주소 사용)

컨테이너 간 통신을 설정할 수도 있습니다. 예를 들어, 웹 애플리케이션이 다른 컨테이너에서 실행 중인 데이터베이스(DB) 와 통신하는 경우가 있습니다.

방법 1: 컨테이너의 IP 주소 사용

  1. 먼저, 데이터베이스 컨테이너의 IP 주소를 확인해야 합니다.
docker inspect 컨테이너이름 | grep "IPAddress"

   

    2. 애플리케이션에서 해당 IP 주소를 사용하여 DB에 연결

mongoose.connect('mongodb://컨테이너ip주소:27017/swfavorites');

 

문제점:

  • 컨테이너가 재시작될 때 IP 주소가 변경될 수 있음
  • 설정이 번거로움

이 문제를 해결하기 위해 네트워크를 생성하여 컨테이너 간 통신을 쉽게 설정할 수 있습니다.

 


4. 네트워크를 활용한 컨테이너 통신

방법 2: 사용자 지정 네트워크 사용
별도의 네트워크를 생성하여 컨테이너끼리 통신하면, 컨테이너 이름만으로 쉽게 접근할 수 있습니다.

1) 네트워크 생성

docker network create my_network
  • my_network라는 새로운 네트워크를 생성

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

docker run -d --network my_network --name mongodb mongo
docker run -d --network my_network --name my_app my_app_image
  • 두 컨테이너가 같은 네트워크 (my_network)에 속하게 됨
  • 이제 my_app 컨테이너에서 mongodb 컨테이너를 이름만으로 접근 가능

3) 코드에서 컨테이너 이름 사용

기존 IP 주소 방식 대신 컨테이너 이름을 사용할 수 있음

mongoose.connect('mongodb://mongodb:27017/swfavorites');

장점:

  • IP 주소를 신경 쓸 필요 없음
  • 컨테이너를 재시작해도 설정이 유지됨

 

5. 추가적인 네트워크 설정

도커 네트워킹을 보다 세부적으로 설정하는 방법도 있습니다.

1) 읽기 전용 볼륨을 사용한 네트워크 설정

  • :ro 옵션을 추가하면 특정 볼륨을 읽기 전용으로 마운트 가능
docker run -v my_volume:/data:ro my_image

2) .dockerignore를 활용한 네트워크 보안

  • .dockerignore 파일을 활용해 불필요한 파일이 컨테이너에 복사되는 것을 방지 가능
.env
node_modules/

3) 환경변수를 사용한 네트워크 설정

환경변수를 활용하면 컨테이너 실행 시 유동적으로 설정값을 변경할 수 있음

docker run -e DB_HOST=mongodb -e DB_PORT=27017 my_app
  • .env 파일을 사용하면 설정을 더욱 간편하게 관리 가능

 


🙄 느낀점

이제 뭔가 배웠던 것들을 활용해 실습하는 느낌이 더 들어서 재밌어 지는 느낌? 이다

 

 

반응형