반응형
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 주소 사용
- 먼저, 데이터베이스 컨테이너의 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 파일을 사용하면 설정을 더욱 간편하게 관리 가능
🙄 느낀점
이제 뭔가 배웠던 것들을 활용해 실습하는 느낌이 더 들어서 재밌어 지는 느낌? 이다
반응형
'🤓 스터디 > 🐳 [Udemy] Docker & Kubernetes 실전가이' 카테고리의 다른 글
[ Udemy : Docker & Kubernetes 실전가이드 (6) ] : 유틸리티 컨테이너 (0) | 2025.03.23 |
---|---|
[ Udemy : Docker & Kubernetes 실전가이드 (5) ] : Docker로 다중 컨테이너 구축하기 & docker compose (0) | 2025.03.18 |
[ Udemy : Docker & Kubernetes 실전가이드 (3) ] 데이터 관리 및 볼륨으로 작업하기 (0) | 2025.03.12 |
[ Udemy : Docker & Kubernetes 실전가이드 (2) ] 이미지, Dockerfile 이란? (0) | 2025.02.23 |
[ Udemy : Docker & Kubernetes 실전가이드 (1) ] 도커, 컨테이너 설명 및 도커 설치 (0) | 2025.02.16 |