도커와 쿠버네티스

Lys·2023년 9월 13일

개발상식

목록 보기
13/15

도커(Docker)

  • 컨테이너 기반의 오픈소스 가상화 플랫폼
  • 다양한 프로그램들과 실행환경을 컨테이너로 규격화시켜 프로그램의 배포 및 관리를 단순화할 수 있다.
  • 실행에 필요한 모든 dependency들도 컨테이너에 담기 때문에 다른 환경에서도 빠르게 애플리케이션을 실행할 수 있다.
  • 어떠한 프로그램이라도 컨테이너로 규격화할 수 있기 때문에 편리하다.

  • 도커 이미지(Docker Image)
    컨테이너를 만드는 데 사용되는 읽기 전용(Read-only) 템플릿
    컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커파일을 만든 후 Dockerfile을 빌드 하여 이미지를 만듬.

  • 도커 컨테이너(Docker Container)
    도커 이미지를 실행한 상태
    이미지로 컨테이너를 생성하면 이미지의 목적에 맞는 파일이 들어있는 파일 시스템과
    격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성됨
    도커 컨테이너는 읽기 전용인 이미지에 변경된 사항을 저장하는 컨테이너 계층(Layer)에 저장함

    하나의 도커 이미지로 여러 개의 도커 컨테이너를 만들 수 있음
    도커 이미지를 변경해도 이미 실행 중인 도커 컨테이너에는 영향을 주지 않음

도커와 가상머신의 차이

도커는 여러 컨테이너들이 똑같은 하나의 머신 위에서 OS 커널을 공유한다.
이렇게 하나의 머신 위에서 OS 커널을 공유하기 때문에 보통 수십~수백 MB의 작은 크기를 차지한다.


가상머신은 하나의 머신 혹은 하드웨어를 여러 개의 OS로 나누어 점유하게 된다.
하나의 머신 위에서 동작하지만, 사실상 다른 머신인 것처럼 각자 OS, 애플리케이션, 라이브러리들을 가지고 있기 때문에 하나당 수 GB를 차지하게 된다.
또한, 부팅하는데 오랜 시간이 걸린다는 단점도 존재한다.


쿠버네티스

구글(Google) 엔지니어들이 개발하고 설계한 플랫폼으로, 컨테이너 시스템을 확장하여 대규모로 컨테이너를 관리, 조정 및 예약할 수 있는 컨테이너 오케스트레이션 도구

  • 컨테이너 오케스트레이션
    컨테이너의 배포, 관리, 확장, 네트워킹을 자동화한다.

기능

  • 서비스 디스커버리와 로드 밸런싱 : 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.
  • 스토리지 오케스트레이션 : 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있다
  • 자동화된 롤아웃과 롤백 : 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.
  • 자동화된 빈 패킹(bin packing) : 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 쿠버네티스에게 지시하면 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.
  • 자동화된 복구(self-healing) : 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며, '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에 보여주지 않는다.
  • 시크릿과 구성 관리 : 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트할 수 있다.


🙇‍ 참고 사이트 🙇‍

https://cocoon1787.tistory.com/755
https://code-lab1.tistory.com/236
https://tech.cloudmt.co.kr/2022/06/29/%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-%EC%9D%B4%ED%95%B4-1-3-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%82%AC%EC%9A%A9%EB%B2%95/
https://aws.amazon.com/ko/compare/the-difference-between-kubernetes-and-docker/
https://kubernetes.io/ko/docs/concepts/overview/

0개의 댓글