티스토리 뷰
컨테이너 간 통신
Docker 컨테이너와의 통신은 어떻게 이루어 지게 될까요?
강의에서는 세가지 경우를 설명하고 있습니다.
Case 1: WWW 통신 컨테이너
컨테이너에서 실행되는 어플리케이션이 웹 API로 HTTP Request를 보내는 방법을 설명합니다.
이는 일반적인 API 통신과 동일한 방식으로 이루어집니다.
Case 2: 컨테이너에서 로컬 호스트 머신으로의 통신
컨테이너 내부에서 호스트 머신 또는 다른 도커화된 앱과의 통신이 필요한 경우에 대한 방법을 다룹니다.
특히, 호스트머신이나 데이터베이스와 통신하고자 할 때 해당 주소 설정은 아래와 같습니다.
localhost -> host.docker.internal
도커가 이해할 수 있는 도메인 도커 컨테이너 내부에서 알 수 있는 호스트 머신의 IP 주소로 변환되며 컨테이너와 호스트 머신 간의 통신을 보장합니다.
Case 3: 컨테이너 간 통신
컨테이너 내에서 실행 중인 어플리케이션이 다른 컨테이너와 통신하길 원할 때 어떻게 설정하는지에 대한 내용을 다룹니다.
이때 컨테이너의 IP 주소를 명시하여 통신을 설정하고 이를 확인 할 수 있는 방법은 아래와 같습니다.
docker container inspect {name}
실행 결과의 NetworkSettings > IPAddress는 컨테이너의 IP 주소를 의미하며 default port는 27017 입니다.
Docker Networks 소개: 우아한 컨테이너 간 통신
다음으로, 컨터이너 네트워크(=네트워크)는 다중 컨테이너 간의 통신을 허용하는 것을 의미합니다.
네트워크를 생성하고 컨테이너를 해당 네트워크에 연결하는 방법은 아래와 같습니다.
docker run --network {네트워크 이름}
--network 라는 플래그를 설정하여 모든 컨테이너를 하나의 동일한 네트워크에 밀어 넣을 수 있고 컨테이너 IP 조회 및 해결 작업을 자동으로 수행할 수 있습니다.
실행시 중지된 컨테이너 제거 후 실행 필요하며 도커는 네트워크를 자동으로 생성하지 않음으로 직접 만들어야 합니다.
docker networkd create {네트워크 이름}
# my_network 와 같이 생성한 네트워크 뿐만 아니라 내장 네트워크 확인 가능
docker networkd ls
두개의 컨테이너가 동일한 네트워크의 일부분인 경우 애플리케이션의 코드에 IP 하드코딩 하는 대신 컨테이너의 이름을 입력하면고 도커에 의해 컨테이너의 IP 주소로 변환됩니다.
이를 통해 네트워크 설정시 컨테이너에 연결하기 위해 실행될때 포트 게시(publish) 안 해주어도 통신이 가능하게 됩니다.
Docker가 IP 주소를 해결하는 방법
도커가 애플리케이션이 실행되는 환경을 소유하고 애플리케이션이 요청을 전송하는 경우 도커가 이를 인식 이 시점에서 주소, 컨테이너 이름, host.docker.internal 을 실제 IP 주소로 변환 주변의 컨테이너와 호스트 머신을 앎으로써 가능하게 됩니다.
해당 글은 https://www.udemy.com/course/docker-kubernetes-2022/ 를 보고 정리한 글로 해당 콘텐츠는 유데미로부터 강의 쿠폰을 제공받아 작성되었습니다.
- Total
- Today
- Yesterday
- 이동 윈도우 카운터 알고리즘
- 고정 윈도우 카운터 알고리즘
- 글또
- 회고
- 이동 윈도우 로깅 알고리즘
- 누출 버킷 알고리즘
- 개발자
- 알고리즘
- 처리율 제한 알고리즘
- 카카오프로젝트100
- 처리율제한
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |