프로그래밍공부(Programming Study)/DevOps

[Docker] 1. 개요

Chaany 2023. 3. 25.
728x90

Docker란

  • 컨테이너 기술을 지원하는 다양한 프로젝트 중 하나이며, 컨테이너 기술의 사실상 표준
  • 컨테이너 기반 가상화 플랫폼으로, 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 소스 소프트웨어
  • 애플리케이션과 해당 종속성을 단일 패키지로 묶어서 호스트 운영 체제에서 격리된 환경에서 실행 가능
  • linux의 ns(namespace)와 cgroups와 같은 커널 기능 사용하여 가상화

Docker를 구성하는 개념/원리

이미지

: 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일

컨테이너

: 이미지를 격리하여 독립된 공간에서 실행한 가상 환경, 가상머신을 사용하여 각 MS(Micro Service)를 격리하는 기술

  • linux namespace : 각 프로세스가 파일 시스템 마운트, 네트워크, 유저(uid), 호스트 네임(uts) 등 에 대해 시스템에 독립 뷰를 제공
  • linux cgroup(controll group) : 프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역대,device 노드 등)을 제한

도커 사용이유

  • 애플리케이션을 배포할 때 호스트 운영 체제의 종속성과 버전 충돌 문제를 방지할 수 있다
  • 컨테이너화된 애플리케이션을 배포하는 것이 매우 쉽기 때문에 애플리케이션의 확장성과 유연성을 높일 수 있음
  • 하드웨어를 전부 구현하지 않으므로 빠른 실행 가능

컨테이너를 활용하며 게스트OS와 하이퍼바이저가 필요없어진다

도커의 한계

  • 컨테이너 운영체제: Docker는 호스트 운영 체제 위에 격리된 운영 체제를 실행합니다. 이러한 컨테이너 운영 체제는 크기가 작지만 여전히 일부 분리와 보안 문제가 있을 수 있음
  • 네트워크 문제: Docker는 컨테이너 간의 네트워크 연결을 제공하지만, 여러 호스트에서 컨테이너를 실행하고 연결하는 것은 복잡할 수 있음
  • 대규모 클러스터 문제: 서비스의 크기가 커질수록 관리해야 하는 컨테이너의 양이 급격하게 증가할 수 있으며, 관리 및 배포 문제가 발생할 수 있습니다. 이를 해결하기 위해 배포 및 컨테이너 배치 전략을 잘 고안해야 하며, 별도의 관리 도구가 필요할 수 있음
  • 보안 이슈: Docker는 컨테이너를 격리시키지만, 악의적인 사용자가 취약점을 이용하여 호스트 운영 체제나 다른 컨테이너에 액세스할 수 있는 보안 문제가 있을 수 있음
  • 스케일링 문제 : 스케일-인, 아웃이 어려움

도커 사용시 권장사항

  • 프로세스 문제 발생시 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는 것이 좋음(브라우저와 같음)

추가 학습 Keyword

  • 파일 시스템 마운트
  • uid
  • uts
  • 네트워크 대역대, device node
728x90

댓글