7.1 overlay
네트워크 학습
overlay
네트워크는 Docker에서 제공하는 분산 네트워크로, 서로 다른 호스트에서 실행되는 컨테이너들이 서로 상호작용할 수 있게 해주는 네트워크야. 보통 Docker Swarm이나 Kubernetes 같은 컨테이너 오케스트레이션에서 사용돼, 서로 다른 노드에서 실행되는 컨테이너들 간의 통신을 보장해. 이번 강의에서는 overlay
네트워크를 생성하고 사용하는 방법, 그리고 그 응용 사례를 살펴볼게.
overlay
네트워크는 기존 네트워크 위에 가상 분산 네트워크를 생성해서 여러 호스트를 하나의 네트워크 공간으로 묶어줘. 이렇게 하면 컨테이너들이 호스트의 물리적 위치와 상관없이, 마치 같은 로컬 네트워크에 있는 것처럼 상호작용할 수 있어.
overlay
네트워크를 사용하는 장점:
- 다른 호스트에 있는 컨테이너 간의 통신: 다양한 노드에서 실행되는 컨테이너들 간의 네트워크 상호작용을 보장해.
- 격리: 다양한 애플리케이션을 위한 격리된 네트워크 공간을 생성할 수 있어.
- 확장성: 작업 중단 없이 동적으로 노드를 추가하거나 제거할 수 있어.
7.2 overlay
네트워크 생성
overlay
네트워크를 생성하려면 먼저 Docker Swarm
클러스터를 초기화해야 해. 이렇게 하면 관리 노드(매니저)가 생성되고 분산 네트워크를 만들 수 있어.
1단계: Docker Swarm
초기화
클러스터의 매니저가 될 호스트에서 명령을 실행해. 이 명령은 Swarm
클러스터를 초기화하고 다른 노드를 클러스터에 추가하기 위한 명령을 출력해.
docker swarm init
2단계: 작업 노드를 클러스터에 추가하기
다른 호스트에서 docker swarm init
명령이 출력한 명령을 실행해 클러스터에 추가해. 명령 예:
docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377
3단계: overlay
네트워크 생성
클러스터를 초기화한 후에는 다음 명령을 사용해 overlay
네트워크를 생성해:
docker network create -d overlay my_overlay_network
4단계: 네트워크 확인
네트워크가 성공적으로 생성되었는지 확인하려면 docker network ls
명령을 실행해. 이 명령은 모든 네트워크 목록을 출력하며, 새로 생성된 overlay
네트워크도 포함돼:
docker network ls
출력 예:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5 my_overlay_network overlay swarm
이제 my_overlay_network
네트워크는 분산 애플리케이션에서 사용할 준비가 완료됐어.
7.3 overlay
네트워크 사용
이제 네트워크가 생성되었으니, 이 네트워크에 연결된 컨테이너와 서비스를 실행할 수 있어.
overlay
네트워크를 서비스에 사용하는 예시
Docker Swarm
에서 컨테이너를 관리하려면 서비스를 사용할 수 있어. overlay
네트워크에 연결된 몇 가지 서비스를 만들어볼게.
1단계: 웹 서버 서비스 생성
docker service create --name webserver --network my_overlay_network -p 8080:80 nginx
이 명령어는 webserver
라는 이름의 서비스를 생성하고, my_overlay_network
네트워크에 연결해. 웹 서버는 http://localhost:8080에서 접근 가능해.
2단계: 데이터베이스 서비스 생성
docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres
여기서는 database
라는 서비스를 생성하고, 같은 네트워크에 연결한 다음 POSTGRES_PASSWORD
환경 변수를 설정해줘.
3단계: 서비스 간의 연결 확인
각 서비스 간의 연결을 확인하기 위해 임시 컨테이너를 실행해봐:
docker run -it --network my_overlay_network busybox
컨테이너 안에서 ping
명령어를 사용해서 웹 서버와 데이터베이스에 연결을 확인할 수 있어:
ping webserver
ping database
설정이 제대로 되었다면, ping 결과에서 성공적인 연결을 보여줄 거야. 이걸로 컨테이너들이 호스트 이름을 통해 상호작용할 수 있다는 걸 확인할 수 있어.
4단계: 서비스 상태 확인
docker service ls
명령어로 생성된 서비스들의 상태를 확인할 수 있어:
docker service ls
예상 출력 결과는 실행 중인 서비스, 상태, 복제본 수에 대한 정보를 보여줄 거야.
참고: overlay
네트워크는 Swarm
클러스터에 연결된 컨테이너들이 서로 다른 호스트에서 데이터를 교환할 수 있게 해줘.
7.4 overlay
네트워크를 Docker Compose
에서 사용하는 예시
Docker Compose
는 다중 컨테이너 애플리케이션과 네트워크 관리를 쉽게 만들어줘. docker-compose.yml
파일에서 오버레이 네트워크를 정의하고 컨테이너 간의 통신에 사용할 수 있어.
docker-compose.yml
파일 예시:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my_overlay_network
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
networks:
- my_overlay_network
networks:
my_overlay_network:
driver: overlay
attachable: true
Docker Compose
실행:
docker stack deploy -c docker-compose.yml mystack
이 명령어는 docker-compose.yml
파일을 사용해 스택을 배포하고 my_overlay_network
네트워크에 연결된 서비스를 만들어줄 거야.
실용적인 팁:
- 네트워크 모니터링: Docker Swarm 모니터링 도구(Docker Dashboard나 Prometheus 같은)를 사용해서 네트워크 상태와 컨테이너 간의 상호작용을 추적해.
- 확장성 관리: 오버레이 네트워크는 노드를 동적으로 추가하거나 제거하는 거 지원해. 애플리케이션 확장을 위해 네트워크 리소스를 올바르게 설정해 둬.
- 구성 백업: 실패 상황 발생 시 빠르게 복구하려면 네트워크와 스택 구성을 정기적으로 저장해 둬.
GO TO FULL VERSION