Data-Driven System Development/DocKer

Docker 네트워크

Data Jun 2025. 2. 21. 23:32

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를 활용하여 네트워크 설정을 자동화하는 방법을 소개하겠습니다! 😊