Tools/docker
[Docker] Docker란 무엇인가
MOMOBOB
2021. 4. 29. 21:10
반응형
1. 도커란
- 컨테이너 기술을 지원하는 다양한 프로젝트 중에 하나로 도커로 인해 컨테이너 기술이 알려짐
- 다양한 운영체제에서 사용 가능(리눅스, 윈도우, MacOS)
- 의존성 및 파일 시스템까지 패키징하여 빌드, 배포, 실행을 단순화하였음
- 리눅스의 네임 스페이스와 cgroup와 같은 커널 기능을 사용하여 가상화.
- 이미지 : 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
- 컨테이너 : 이미지를 격리하여 독립된 공간에서 실행되는 가상 환경
2. 도커의 필요성
- 컨테이너와 VM
- 컨테이너 : 특정 작업을 수행하는 단일 기능(마이크로서비스라고 함)이 컨테이너에 패키징됨. 경량화 속성과 공유 운영 체제(OS)로 인해 여러 환경 간에 매우 쉽게 이동 가능하다, 일반적으로 크기는 메가바이트 단위이다.
- VM : VM은 자체 OS를 포함하고 있어 리소스 집약적인 기능 여러 개를 동시에 가능. 애플리케이션 종속성 및 대규모 OS 설치 공간 등의 단점을 증대시킬 수 있음. 일반적으로 크기가 기기바이트 단위이다
▶ 하이퍼바이저의 필요없는 공간을 활용하면 더 많은 자원을 앱에 투자 가능
반응형
3. 컨테이너 성능 비교
- CPU 이용량
- Native, VM, 컨테이너별 GFLOPS 비교
GFLOPS(GPU Floating point Operations Per Second) : 초당 부동소수점 연산량, 컴퓨터의 성능을
수치로 나타낼 때 쓰는 단위
▶ 가상환경을 제공하는데 네이티브에 준하는 성능을 제공
4. 컨테이너를 격리하는 기술
리눅스 네임 스페이스
각 프로세스가 파일 시스템 마운트, 네트워크, 유저(uid) 호스트 네임(uts) 등에 대해 격리하는 기술
리눅스 컨트롤 그룹
프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역대, device노드 등)을 제한
5. 도커의 한계
- 서비스가 커지면 커질수록 관리해야하는 컨테이너의 양이 급격히 증가함.
- 배포 및 컨테이너 배치 전략이 필요함.
- 스케일-인, 스케일-아웃이 어려움.
-> 쿠버네티스 등의 오케스트레이션 이용
반응형