Docker

mkhome·2021년 5월 13일
0

docker

목록 보기
2/4

Docker-Swarm이란

  • 현재 회사에서 사용 중인 docker는 docker swarm. 사실 최근까지도 그냥 있으니깐 사용중에 있었고 무엇보다 새롭게 만지기가 무서워서 크게 신경을 쓰지 않았는데 docker-compose랑 뭐가 다른지 정확하게 확인하기 위해서 이번 포스팅을 시작(어차피 비공개로 할 것 같지만)

도커 스웜이란 도커 컨테이너를 위한 클러스터링, 스케줄링 툴을 말한다. 스웜을 이용하면 여러개의 서버와 컨테이너를 쉽게 관리 할 수 있다.

지원 기능

  • 컨테이너 자동 배치 및 복제(replica)
  • 컨테이너 그룹에 대한 로드밸런싱(이건 traefiK과 다른지...)
  • 컨테이너 장애 복구
  • 클러스터 외부에 서비스 노출
  • 컨테이너 추가 제거를 통한 확장 및 축소
  • 컨테이너 서비스간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어
    스케줄링: 컨테이너를 적당한 서버에 배포해 주는 작업입니다. 툴에 따라서 지원하는 전략이 조금씩 다른데 여러 대의 서버 중 가장 할일 없는 서버에 배포하거나 그냥 차례대로 배포 또는 아예 랜덤하게 배포할 수도 있습니다. 컨테이너 개수를 여러 개로 늘리면 적당히 나눠서 배포하고 서버가 죽으면 실행 중이던 컨테이너를 다른 서버에 띄워주기도 합니다.

클러스터링: 여러 개의 서버를 하나의 서버처럼 사용할 수 있습니다. 클러스터에 새로운 서버를 추가할 수도 있고 제거할 수도 있습니다. 작게는 몇 개 안 되는 서버부터 많게는 수천 대의 서버를 하나의 클러스터로 만들 수 있습니다. 여기저기 흩어져 있는 컨테이너도 가상 네트워크를 이용하여 마치 같은 서버에 있는 것처럼 쉽게 통신할 수 있습니다.

서비스 디스커버리: 말 그대로 서비스를 찾아주는 기능입니다. 클러스터 환경에서 컨테이너는 어느 서버에 생성될지 알 수 없고 다른 서버로 이동할 수도 있습니다. 따라서 컨테이너와 통신을 하기 위해서 어느 서버에서 실행중인지 알아야 하고 컨테이너가 생성되고 중지될 때 어딘가에 IP와 Port같은 정보를 업데이트해줘야 합니다. 키-벨류 스토리지에 정보를 저장할 수도 있고 내부 DNS 서버를 이용할 수도 있습니다.

로깅, 모니터링: 여러 대의 서버를 관리하는 경우 로그와 서버 상태를 한곳에서 관리하는게 편합니다. 툴에서 직접 지원하는 경우도 있고 따로 프로그램을 설치해야 하는 경우도 있습니다. ELK와 prometheus등 다양한 툴이 있습니다.


Docker Swarm의 장점은 아래와같다.
• 여러개의 Docker 호스트를 함께 클러스터링하여 단일 가상 Docker 호스트 생성
• 호스트 OS에 Agent만 설치하면 간단하게 작동하고 설정이 쉽고 Agent를 외부에 설치하지 않는다.
• Docker명령어와 Compose를 그대로 사용가능

--> 결국 그럼 compose와 다른 개념이 아니라 같은 개념인건가?

SWARM & COMPOSE

  • swarm은 말 그대로 여러 서버를 한번에 관리하는 거고 compose는 하나의 호스트에 여러 컨테이너를 올리는 것
  • 하나의 host에 많은 컨테이너를 올린 상황이라면 결국 compose로 해결해야하는것 아닌가????

--> 도커 공식문서에 보면 일정 버전 이후엔 자동으로 docker swarm이 적용된다고함

참조 - https://roseline124.github.io/kuberdocker/2019/07/31/docker-study08.html

https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose#%EC%84%A0%ED%96%89-%EC%A1%B0%EA%B1%B4

0개의 댓글