Docker

[Docker] 🦮월월월월의 컨테이너와 네트워크

월월월월2 2024. 8. 25. 23:16

컨테이너와 네트워크

도커 컨테이너에서는 크게 3가지의 통신이 일어날 수 있다.

  1. 컨테이너와 World Wide Web의 통신
  2. 컨테이너에서 로컬 호스트 머신으로 통신
  3. 컨테이너 간 통신

도커 컨테이너와 WWW의 통신

도커 컨테이너와 World Wide Web과의 통신은 어떠한 조치를 취하지 않아도 통신이 된다.

컨테이너와 로컬 호스트 머신 간의 통신

컨테이너와 로컬 호스트 머신간 통신을 하기 위해서는

host.docker.internal

을 사용한다.

이를 도메인이 필요한 곳, URL이 필요한 곳에 입력하면 호스트 머신의 IP주소로 변환된다.

컨테이너간 통신

컨테이너 간 통신을 하려면 docker container inspect {컨테이너 식별자}를 입력하여 컨테이너의 IP 주소를 알아내 사용할 수 있다.

하지만 이 방법은 컨테이너의 IP주소가 바뀌면 하드코딩된 IP주소도 바꿔서 다시 빌드해야 하므로 효율적이지 않다.

이를 효율적으로 하기 위해서 컨테이너 네트워크를 사용한다.

컨테이너 네트워크

도커에서는 docker run --network {네트워크 이름}을 입력하면 모든 컨테이너를 하나의 동일한 네트워크에 속하게 할 수 있다.

그러면 이전에 수동으로 했던 IP 조회 및 해결작업이 자동으로 수행된다.

도커 네트워크를 사용하려면 먼저 네트워크를 만들어야 한다.

docker network create {네트워크 이름}을 사용하여 네트워크를 생성한다.

이후 다른 컨테이너와 통신하고 싶으면 다른 컨테이너의 이름을 사용하면 된다.

네트워크 종류 (드라이버)

  • Bridge(디폴트) - 컨테이너가 동일한 네트워크에 있는 경우, 이름으로 서로를 찾을 수 있음
  • Host - 컨테이너와 호스트 시스템 간의 격리가 제거됨 (즉, localhost를 네트워크로 공유함.)
  • Overlay - 여러 Docker 데몬 (서로 다른 머신에서 실행되는 Docker)이 서로 연결될 수 있음
  • Macvlan - 컨테이너에 커스텀 MAC 주소를 설정할 수 있음
  • none - 모든 네트워킹이 비활성화됨