[파이썬] 도커 컨테이너와 호스트 간 네트워크 설정

도커는 컨테이너화된 애플리케이션을 실행하기 위한 플랫폼으로 네트워크 설정은 이들 컨테이너가 호스트와 상호 작용할 수 있는 방법을 제공합니다. 이번 블로그 포스트에서는 도커 컨테이너와 호스트 간의 네트워크 설정에 대해 알아보도록 하겠습니다.

호스트 네트워크 모드

도커는 컨테이너 인스턴스를 실행할 때, 기본적으로는 가상 네트워크를 생성하여 컨테이너 간의 통신을 관리합니다. 하지만 호스트 네트워크 모드를 사용하면 컨테이너가 호스트의 네트워크 인터페이스를 직접 사용할 수 있습니다. 이는 컨테이너가 호스트와 같은 네트워크에 위치하게 되어 로컬 환경에서 실행 중인 다른 서비스에 접근할 수 있게 해줍니다.

호스트 네트워크 모드를 설정하기 위해서는 --net=host 플래그를 사용하여 컨테이너를 실행합니다.

docker run --net=host <image_name>

포트 바인딩

도커 컨테이너는 호스트와 완전히 격리되어 있지만, 컨테이너의 내부 포트와 호스트의 포트를 연결하는 포트 바인딩을 통해 컨테이너 서비스를 외부에서 접근할 수 있습니다.

포트 바인딩은 -p 플래그를 사용하여 설정하며, 호스트의 포트와 컨테이너의 포트를 함께 지정합니다.

docker run -p <host_port>:<container_port> <image_name>

예를 들어, 호스트의 8080 포트를 컨테이너의 80 포트와 연결하려면 다음과 같이 실행할 수 있습니다.

docker run -p 8080:80 <image_name>

다른 네트워크 모드

도커는 호스트 네트워크 모드 이외에도 다양한 네트워크 모드를 제공합니다.

  1. 브리지 네트워크: 도커의 기본 네트워크 모드로, 컨테이너가 가상 네트워크에 연결되어 외부와 통신합니다.
  2. 네트워크 생성 및 연결: docker network create 명령을 사용하여 사용자 정의 네트워크를 생성하고, --network 플래그를 사용하여 컨테이너를 생성할 때 생성한 네트워크에 연결할 수 있습니다.
  3. 컨테이너에서 다른 컨테이너로 연결: --link 플래그를 사용하여 컨테이너 간에 직접적인 연결을 설정할 수 있습니다.

결론

도커 컨테이너와 호스트 간의 네트워크 설정은 애플리케이션의 구성 및 통신 방식에 따라 다양하게 설정할 수 있습니다. 호스트 네트워크 모드와 포트 바인딩을 통해 컨테이너와 호스트 간의 네트워크 연결을 유연하게 관리할 수 있습니다. 도커의 다양한 네트워크 모드를 활용하여 원하는 구성을 설정해보세요.

더 많은 도커 네트워크 설정 옵션에 대해서는 도커 공식 문서를 참고하세요.