Docker
[Docker] 🦮월월월월의 컨테이너와 네트워크
월월월월2
2024. 8. 25. 23:16
컨테이너와 네트워크
도커 컨테이너에서는 크게 3가지의 통신이 일어날 수 있다.
- 컨테이너와 World Wide Web의 통신
- 컨테이너에서 로컬 호스트 머신으로 통신
- 컨테이너 간 통신
도커 컨테이너와 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 - 모든 네트워킹이 비활성화됨