소개
Docker Swarm 은 대규모로 컨테이너화된 애플리케이션을 조직하고 관리하는 강력한 도구입니다. Docker Swarm 의 주요 기능 중 하나는 여러 호스트 간에 컨테이너가 안전하고 효율적으로 통신할 수 있도록 하는 오버레이 네트워크를 생성하는 기능입니다. 이 튜토리얼에서는 Docker Swarm 에서 오버레이 네트워크를 생성하고 서비스를 배포하는 과정을 안내합니다.
Docker 오버레이 네트워크 소개
Docker 오버레이 네트워크는 여러 Docker 호스트에 배포된 컨테이너 간의 원활한 통신을 가능하게 하는 Docker Swarm 의 강력한 기능입니다. 이러한 네트워크는 기본적인 물리적 네트워크 인프라를 추상화하는 가상 네트워크 계층을 제공하여 컨테이너가 마치 같은 호스트에서 실행되는 것처럼 연결 및 통신할 수 있도록 합니다.
Docker 오버레이 네트워크 이해
Docker 오버레이 네트워크는 Layer 3 네트워크 위에 Layer 2 가상 네트워크를 생성할 수 있는 VXLAN(Virtual Extensible LAN) 프로토콜을 기반으로 합니다. 이를 통해 컨테이너는 물리적인 위치에 관계없이 동일한 논리적 네트워크에 연결될 수 있습니다.
graph LR
A[Docker 호스트 1] -- 오버레이 네트워크 --> B[Docker 호스트 2]
B -- 오버레이 네트워크 --> C[Docker 호스트 3]
C -- 오버레이 네트워크 --> A
Docker 오버레이 네트워크를 사용하는 주요 이점은 다음과 같습니다.
- 멀티 호스트 연결: 컨테이너는 여러 Docker 호스트를 가로질러 서로 통신할 수 있으므로 확장 가능하고 분산된 애플리케이션 배포를 가능하게 합니다.
- 자동 서비스 검색: 동일한 오버레이 네트워크에 있는 컨테이너는 Docker Swarm 이 제공하는 내장 DNS 서비스를 사용하여 서로를 검색하고 연결할 수 있습니다.
- 로드 밸런싱: Docker Swarm 의 로드 밸런싱 기능은 오버레이 네트워크에서 실행되는 서비스의 여러 복제본에 트래픽을 분산시키는 데 활용될 수 있습니다.
- 안전한 통신: Docker 오버레이 네트워크는 암호화를 지원하여 다른 호스트의 컨테이너 간에 안전한 통신을 보장합니다.
오버레이 네트워크 아키텍처
Docker 오버레이 네트워크는 Docker Swarm 클러스터링 및 오케스트레이션 시스템 위에 구축됩니다. 각 Swarm 노드 (매니저 또는 작업자) 는 오버레이 네트워크에 참여하여 전체 네트워크 토폴로지와 라우팅에 기여합니다.
Docker 오버레이 네트워크 아키텍처의 주요 구성 요소는 다음과 같습니다.
- VXLAN 터널 엔드포인트 (VTEP): 각 Swarm 노드는 오버레이 네트워크의 컨테이너 간 네트워크 트래픽을 캡슐화하고 역캡슐화하는 역할을 하는 VTEP 를 실행합니다.
- 오버레이 네트워크 데이터베이스: Raft 와 같은 분산 데이터베이스는 오버레이 네트워크 구성 및 라우팅 정보를 저장하여 Swarm 클러스터 전반에서 일관성과 가용성을 보장합니다.
- 오버레이 네트워크 드라이버: Docker 오버레이 네트워크 드라이버는 오버레이 네트워크의 생성, 구성 및 유지 관리를 담당합니다.
Docker 오버레이 네트워크의 기본 개념과 아키텍처를 이해함으로써 Docker Swarm 환경에서 이러한 네트워크를 더 잘 생성하고 관리할 수 있습니다.
Docker Swarm 에서 오버레이 네트워크 생성
Docker Swarm 에서 오버레이 네트워크를 생성하는 것은 간단한 과정입니다. 이 섹션에서는 오버레이 네트워크를 생성하고 Docker Swarm 환경에서 사용하도록 구성하는 단계를 안내합니다.
필수 사항
오버레이 네트워크를 생성하기 전에 다음 사항을 확인하십시오.
- 최소 하나의 매니저 노드와 하나의 작업자 노드가 있는 Docker Swarm 클러스터.
- Docker Engine 버전은 17.06 이상이어야 합니다. 이전 버전은 오버레이 네트워크 기능의 전체 범위를 지원하지 않을 수 있습니다.
오버레이 네트워크 생성
Docker Swarm 에서 오버레이 네트워크를 생성하려면 다음 단계를 따르십시오.
- Docker Swarm 매니저 노드에 연결합니다.
- 다음 명령을 실행하여 오버레이 네트워크를 생성합니다.
docker network create --driver overlay --attachable my-overlay-network
이 예제에서는 my-overlay-network라는 오버레이 네트워크를 --attachable 플래그와 함께 생성합니다. 이 플래그는 독립 실행형 컨테이너가 네트워크에 연결할 수 있도록 합니다.
오버레이 네트워크 확인
오버레이 네트워크를 생성한 후 다음 명령을 사용하여 생성 여부를 확인하고 세부 정보를 검사할 수 있습니다.
## Docker Swarm의 모든 네트워크 목록
docker network ls
## 오버레이 네트워크 세부 정보 검사
docker network inspect my-overlay-network
docker network inspect 명령의 출력은 서브넷, 게이트웨이 및 네트워크에 참여하는 노드 목록을 포함한 오버레이 네트워크 정보를 제공합니다.
오버레이 네트워크에서 서비스 배포
오버레이 네트워크가 생성되면 해당 네트워크에서 서비스를 배포할 수 있습니다. 서비스를 생성할 때 --network 플래그를 사용하여 연결할 네트워크를 지정할 수 있습니다.
docker service create --name my-service --network my-overlay-network nginx:latest
이렇게 하면 my-service라는 새 서비스를 생성하고 my-overlay-network 오버레이 네트워크에 연결합니다.
이러한 단계를 따르면 Docker Swarm 환경에서 오버레이 네트워크를 생성하고 관리하여 여러 호스트에 걸쳐 컨테이너 간의 안전하고 확장 가능한 통신을 가능하게 할 수 있습니다.
오버레이 네트워크에서 서비스 배포
이제 Docker Swarm 에서 오버레이 네트워크를 생성했으므로 이제 그 위에 서비스를 배포할 수 있습니다. 이 섹션에서는 오버레이 네트워크에 서비스를 배포하고 그 기능을 활용하는 방법을 살펴봅니다.
오버레이 네트워크에 서비스 연결
Docker Swarm 에서 새 서비스를 생성할 때 --network 플래그를 사용하여 연결할 네트워크를 지정할 수 있습니다. 이렇게 하면 서비스의 컨테이너가 오버레이 네트워크에 연결되고 동일한 네트워크의 다른 서비스와 통신할 수 있도록 합니다.
docker service create --name my-service --network my-overlay-network nginx:latest
이 예제에서는 my-service라는 새 서비스를 생성하고 my-overlay-network 오버레이 네트워크에 연결합니다.
서비스 검색 및 로드 밸런싱
오버레이 네트워크를 사용하는 주요 이점 중 하나는 Docker Swarm 이 제공하는 내장 서비스 검색 및 로드 밸런싱 기능입니다. 서비스가 오버레이 네트워크에 배포되면 Swarm 의 내부 DNS 서비스를 사용하여 서로를 검색하고 통신할 수 있습니다.
graph LR
A[서비스 A] -- 오버레이 네트워크 --> B[서비스 B]
B -- 오버레이 네트워크 --> C[서비스 C]
C -- 오버레이 네트워크 --> A
Docker Swarm 의 로드 밸런싱 메커니즘은 서비스의 복제본에 트래픽을 자동으로 분산하여 높은 가용성과 확장성을 보장합니다.
안전한 통신
Docker 오버레이 네트워크는 암호화를 지원하여 서로 다른 호스트의 컨테이너 간에 안전한 통신을 보장합니다. 이는 종단 간 암호화가 필요한 민감한 애플리케이션이나 서비스를 배포할 때 특히 중요합니다.
서비스 확장
애플리케이션이 성장함에 따라 더 많은 복제본을 추가하여 서비스를 쉽게 확장할 수 있습니다. Docker Swarm 은 새 복제본에 대한 네트워크 구성 및 로드 밸런싱을 자동으로 처리하여 오버레이 네트워크의 다른 서비스와 원활하게 통신할 수 있도록 합니다.
docker service scale my-service=5
이 명령은 my-service를 5 개의 복제본으로 확장하고, Docker Swarm 은 새 복제본이 오버레이 네트워크에 연결되고 다른 서비스에서 접근할 수 있도록 합니다.
Docker 오버레이 네트워크에 서비스를 배포하면 Docker Swarm 이 제공하는 원활한 연결, 서비스 검색, 로드 밸런싱 및 보안 기능을 활용하여 확장 가능하고 분산된 애플리케이션을 빌드하고 관리하는 작업을 더욱 쉽게 만들 수 있습니다.
요약
이 포괄적인 튜토리얼에서는 확장 가능하고 상호 연결된 Docker 기반 애플리케이션을 구축하는 데 필수적인 단계인 Docker Swarm 에서 오버레이 네트워크를 생성하는 방법을 배웠습니다. 오버레이 네트워크의 기능을 활용하여 컨테이너화된 서비스 간의 원활한 통신을 가능하게 하여 강력하고 효율적인 인프라를 구축할 수 있습니다. 이 가이드에서 얻은 지식을 통해 이제 특정 요구 사항에 맞춰 Docker Swarm 환경을 자신 있게 관리하고 최적화할 수 있습니다.



