
도커 네트워크(Docker Network)는 컨테이너 간의 통신을 관리하는 기능을 제공하며, 도커 컨테이너들이 서로 또는 외부 네트워크와 원활하게 연결될 수 있도록 해줍니다. 도커 네트워크를 사용하면 컨테이너 간의 통신을 효율적으로 설정하고 관리할 수 있으며, 네트워크 격리(isolation)도 가능하게 합니다.
도커 네트워크 종류
도커는 기본적으로 몇 가지 네트워크 드라이버를 제공합니다:
1. Bridge 네트워크 (기본값)
- 기본적으로
docker run
명령어를 사용할 때 컨테이너는bridge
네트워크에 연결됩니다. - 컨테이너들은 같은 브리지 네트워크 내에서 서로 통신할 수 있지만, 외부 네트워크와는 NAT(Network Address Translation)를 통해 통신합니다.
docker network create
명령을 사용하여 사용자 정의 브리지 네트워크를 생성하면 컨테이너 간 통신이 더욱 유연해지고, 컨테이너 이름으로 접근할 수 있습니다.
docker network create my_bridge_network
docker run -dit --name container1 --network my_bridge_network alpine
docker run -dit --name container2 --network my_bridge_network alpine
2. Host 네트워크
- 컨테이너가 호스트의 네트워크를 직접 사용하여 별도의 네트워크 인터페이스 없이 동작합니다.
- 성능이 뛰어나지만, 네트워크 격리가 없으므로 보안상 주의해야 합니다.
--network host
옵션을 사용하면 컨테이너가 호스트의 네트워크를 공유합니다.
docker run --rm -dit --network host nginx
3. Overlay 네트워크
- 여러 개의 도커 데몬이 있는 스웜(Swarm) 환경에서 사용됩니다.
- 여러 호스트에 걸쳐 있는 컨테이너들을 하나의 네트워크처럼 연결할 수 있습니다.
docker network create
명령을 사용하여 overlay 네트워크를 생성할 수 있습니다.
docker network create -d overlay my_overlay_network
4. Macvlan 네트워크
- 컨테이너에 실제 물리적 네트워크 인터페이스의 MAC 주소를 할당하여 직접 통신할 수 있도록 합니다.
- 주로 네트워크의 세분화 및 특정한 네트워크 요구 사항이 있을 때 사용됩니다.
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 my_macvlan_network
5. None 네트워크
- 컨테이너가 네트워크 인터페이스를 가지지 않으며, 완전히 격리된 상태로 동작합니다.
- 네트워크 기능이 필요하지 않은 경우 사용됩니다.
docker run --rm -dit --network none alpine
도커 네트워크 관리 명령어
도커 네트워크를 관리하는 주요 명령어는 다음과 같습니다:
네트워크 목록 확인
docker network ls
네트워크 상세 정보 확인
<pre class="wp-block-syntaxhighlighter-code">docker network inspect <네트워크이름>
</pre>
네트워크 생성
docker network create my_custom_network
네트워크 삭제
<pre class="wp-block-syntaxhighlighter-code">docker network rm <네트워크이름>
</pre>
컨테이너를 특정 네트워크에 연결
<pre class="wp-block-syntaxhighlighter-code">docker network connect <네트워크이름> <컨테이너이름>
</pre>
컨테이너를 특정 네트워크에서 제거
<pre class="wp-block-syntaxhighlighter-code">docker network disconnect <네트워크이름> <컨테이너이름>
</pre>
도커 네트워크의 활용
- 컨테이너 간 통신: 브리지 네트워크를 활용하면 컨테이너 간에 직접 통신할 수 있습니다.
- 외부 서비스와 연결: 컨테이너를
host
네트워크에 연결하면 외부 서비스와 직접 통신할 수 있습니다. - 다중 호스트 네트워크:
overlay
네트워크를 사용하면 여러 호스트에서 실행되는 컨테이너 간 통신을 설정할 수 있습니다. - 보안 강화:
none
네트워크를 사용하여 특정 컨테이너를 완전히 격리할 수 있습니다.
도커 네트워크를 적절히 활용하면 컨테이너 기반 애플리케이션을 더욱 효율적으로 구축하고 운영할 수 있습니다. 필요한 네트워크 유형을 선택하여 최적의 환경을 구성하는 것이 중요합니다! 🚀
도커 네트워크는 운영체제(OS) 환경에 따라 지원하는 네트워크 드라이버가 다소 차이가 있습니다. 특히 Windows와 macOS에서는 일부 네트워크 드라이버가 제한적으로 지원되며, Linux는 거의 모든 네트워크 드라이버를 완벽하게 지원합니다.