Docker 환경에서 컨테이너 간 통신을 원활하게 하려면 적절한 네트워크 설정이 필요합니다. 특히, 컨테이너가 **기본 브리지 네트워크(Bridge Network)**를 사용할 경우 외부에서 직접 접근할 수 없으며, 같은 네트워크에 속해야만 통신이 가능합니다. 이번 포스트에서는 Docker 컨테이너 간 네트워크 설정 및 통신 방법을 정리해보겠습니다.
docker container run \
--name mbti \
-e PORT=3000 \
--rm \
-d \
learncodeit/mbti:embedded-db
locallhost:3000/home -> 연결실패
명령어를 실행하면 mbti라는 이름의 컨테이너가 포트 3000에서 실행됩니다. 하지만, 호스트(localhost)에서 localhost:3000/home으로 접근하면 연결이 실패합니다.
원인: 기본 네트워크 설정 부족
- 기본적으로 Docker 컨테이너는 Bridge 네트워크에 할당됩니다.
- 하지만, 외부에서 접근하려면 -p 3000:3000 등의 포트 매핑이 필요합니다.
- 또한, 컨테이너 간 통신을 하려면 같은 네트워크에 속해야 합니다.
사용자 정의 네트워크 생성
docker network create my-first-network
docker network ls 명령어를 사용하면, 새로운 네트워크가 생성된 것을 확인할 수 있습니다.
✅ 이제 mbti 컨테이너는 my-first-network 네트워크에 속하게 됩니다.
컨테이너 간 통신 테스트
docker container run \
--name mbti \
-e PORT=3000 \
--rm \
-d \
--network mbti-network \
learncodeit/mbti:embedded-db
-> docker network connect mbti-network mbti # (연결 방법) / 먄약 컨테이너 생성 시 설정하지 않았다면
📌 설명
✅ --network mbti-network → 컨테이너를 특정 네트워크에 포함
✅ -d → 백그라운드 실행
✅ --rm → 컨테이너 종료 시 자동 삭제
📌 설명
✅ docker network connect <네트워크명> <컨테이너명>
✅ 이미 실행 중인 컨테이너도 네트워크에 연결 가능
docker container inspect
- "Networks": { "mbti-network": {...} }
- 해당 컨테이너가 mbti-network 네트워크에 속해 있음을 의미함.
- 하지만 직접 IP 주소를 사용하여 통신하는 방법도 가능.
- docker container inspect를 활용하면 컨테이너의 네트워크 상태 및 IP 정보를 확인할 수 있음.
- 컨테이너 간 통신을 위해 같은 네트워크에 속해야 함. 🚀
✅ 컨테이너 이름 API 응답을 받을 수 있음.
IP주소 혹은 DNS 이름으로 통신
✅ 성공적으로 API 응답을 받음! 🎉
결론 및 정리
📌 컨테이너 간 네트워크 설정 및 통신 방법
1️⃣ 기본적인 docker run 실행 시, 외부에서 접근 불가능
2️⃣ 사용자 정의 네트워크(docker network create <네트워크명>) 생성
3️⃣ --network <네트워크명> 옵션을 사용해 컨테이너 실행
4️⃣ 같은 네트워크에 속한 컨테이너 간 DNS 이름(컨테이너명) 또는 IP 주소를 이용하여 통신 가능
✅ Docker 네트워크를 올바르게 설정하면 컨테이너 간 API 호출이 가능해집니다! 🚀
👉 다음 포스트에서는 docker-compose를 활용하여 네트워크 설정을 자동화하는 방법을 소개하겠습니다! 😊
'Data-Driven System Development > DocKer' 카테고리의 다른 글
Docker Volume (0) | 2025.02.24 |
---|---|
Docker 네트워크 II (0) | 2025.02.24 |
Docker 컨테이너 실행 및 환경 변수 설정 (0) | 2025.02.21 |
Docker 이미지 빌드 과정과 최적화 방법 (1) | 2025.02.21 |
Docker Hub와 레이어 기반 이미지 관리: 효율적인 컨테이너 배포 전략 (0) | 2025.02.21 |