[파이썬] 도커 네트워크 모델과 브리지, 호스트, 네트워크 연결

도커(Docker)는 컨테이너화 기술을 사용하여 애플리케이션을 격리된 환경에서 실행하는 도구입니다. 도커 컨테이너는 다양한 네트워크 모델을 지원하여 애플리케이션 간의 통신을 관리하고 구성할 수 있습니다. 이번 포스트에서는 도커의 네트워크 모델과 브리지, 호스트, 네트워크 연결에 대해 알아보겠습니다.

도커 네트워크 모델

도커 컨테이너는 기본적으로 자체적인 독립된 네트워크 환경에서 실행됩니다. 이를 통해 각각의 컨테이너는 가상의 네트워크 인터페이스를 가지며 다른 컨테이너와 통신할 수 있습니다. 도커는 다양한 네트워크 모델을 제공하여 컨테이너 간의 통신을 관리합니다.

브리지(Bridge) 네트워크

브리지 네트워크는 도커의 기본 네트워크 모델입니다. 도커 데몬(Docker Daemon)은 호스트 머신에 가상의 브리지 네트워크를 생성하고, 각 컨테이너는 이 네트워크에 연결됩니다. 이를 통해 도커 컨테이너끼리 통신할 수 있으며, 외부에 노출시키기 위해서는 호스트 포트와 컨테이너 포트를 매핑해야 합니다.

# 도커 브리지 네트워크 생성
docker network create my-bridge-network

# 컨테이너 실행 시 브리지 네트워크 연결
docker run -d --network=my-bridge-network --name=web nginx

# 호스트와 컨테이너 포트 매핑
docker run -d -p 8080:80 --name=my-web-app --network=my-bridge-network my-web-app-image

호스트(Host) 네트워크

호스트 네트워크는 컨테이너가 호스트 머신과 동일한 네트워크 인터페이스를 공유하는 네트워크 모델입니다. 이 모드에서는 컨테이너는 호스트와 동일한 IP 주소를 가지게 되어 외부와의 통신이 원활하게 이루어집니다. 하지만 컨테이너 간의 격리가 어려워지며, 호스트 머신의 다른 서비스와 충돌할 수도 있습니다.

# 호스트 네트워크로 컨테이너 실행
docker run -d --network=host --name=web nginx

컨테이너(Overlay) 네트워크

컨테이너 네트워크는 여러 호스트 머신에 분산된 컨테이너들을 가상 네트워크로 연결하는 네트워크 모델입니다. 이 모드에서는 도커 스웜(Docker Swarm)이나 쿠버네티스(Kubernetes)와 같은 오케스트레이션 도구를 사용하여 여러 호스트에 컨테이너를 배포하고 관리해야 합니다.

# 컨테이너 네트워크 생성
docker network create --driver=overlay my-overlay-network

# 컨테이너 실행 시 컨테이너 네트워크 연결
docker run -d --network=my-overlay-network --name=web nginx

네트워크 연결

도커 네트워크 모델을 사용하면 여러 컨테이너 간의 네트워크 연결을 구성할 수 있습니다. 컨테이너는 별도의 IP 주소를 가지며, 이를 통해 다른 컨테이너와 통신할 수 있습니다. 또한 컨테이너는 호스트 머신의 IP 주소를 사용하여 외부와 통신할 수도 있습니다.

# 컨테이너 간의 통신
docker run -d --network=my-bridge-network --name=api my-api-app-image
docker run -d --network=my-bridge-network --name=web my-web-app-image

# 외부와의 통신
docker run -d -p 8080:80 --name=my-web-app --network=my-bridge-network my-web-app-image

# 호스트와의 통신
docker run -d -p 8080:80 --name=my-web-app --network=host my-web-app-image

도커 네트워크 모델과 브리지, 호스트, 컨테이너 네트워크 연결을 통해 도커 컨테이너 간의 통신을 구성할 수 있습니다. 적합한 네트워크 모델과 연결 방식을 선택하여 애플리케이션의 요구에 맞는 네트워크 환경을 구성하면 됩니다.