728x90
Docker란
- 컨테이너 기술을 지원하는 다양한 프로젝트 중 하나이며, 컨테이너 기술의 사실상 표준
- 컨테이너 기반 가상화 플랫폼으로, 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 소스 소프트웨어
- 애플리케이션과 해당 종속성을 단일 패키지로 묶어서 호스트 운영 체제에서 격리된 환경에서 실행 가능
- linux의 ns(namespace)와 cgroups와 같은 커널 기능 사용하여 가상화
Docker를 구성하는 개념/원리
이미지
: 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
컨테이너
: 이미지를 격리하여 독립된 공간에서 실행한 가상 환경, 가상머신을 사용하여 각 MS(Micro Service)를 격리하는 기술
- linux namespace : 각 프로세스가 파일 시스템 마운트, 네트워크, 유저(uid), 호스트 네임(uts) 등 에 대해 시스템에 독립 뷰를 제공
- linux cgroup(controll group) : 프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역대,device 노드 등)을 제한
도커 사용이유
- 애플리케이션을 배포할 때 호스트 운영 체제의 종속성과 버전 충돌 문제를 방지할 수 있다
- 컨테이너화된 애플리케이션을 배포하는 것이 매우 쉽기 때문에 애플리케이션의 확장성과 유연성을 높일 수 있음
- 하드웨어를 전부 구현하지 않으므로 빠른 실행 가능
도커의 한계
- 컨테이너 운영체제: Docker는 호스트 운영 체제 위에 격리된 운영 체제를 실행합니다. 이러한 컨테이너 운영 체제는 크기가 작지만 여전히 일부 분리와 보안 문제가 있을 수 있음
- 네트워크 문제: Docker는 컨테이너 간의 네트워크 연결을 제공하지만, 여러 호스트에서 컨테이너를 실행하고 연결하는 것은 복잡할 수 있음
- 대규모 클러스터 문제: 서비스의 크기가 커질수록 관리해야 하는 컨테이너의 양이 급격하게 증가할 수 있으며, 관리 및 배포 문제가 발생할 수 있습니다. 이를 해결하기 위해 배포 및 컨테이너 배치 전략을 잘 고안해야 하며, 별도의 관리 도구가 필요할 수 있음
- 보안 이슈: Docker는 컨테이너를 격리시키지만, 악의적인 사용자가 취약점을 이용하여 호스트 운영 체제나 다른 컨테이너에 액세스할 수 있는 보안 문제가 있을 수 있음
- 스케일링 문제 : 스케일-인, 아웃이 어려움
도커 사용시 권장사항
- 프로세스 문제 발생시 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는 것이 좋음(브라우저와 같음)
추가 학습 Keyword
- 파일 시스템 마운트
- uid
- uts
- 네트워크 대역대, device node
728x90
'프로그래밍공부(Programming Study) > DevOps' 카테고리의 다른 글
Kubernetes에서 QoS와 Resource Request 및 Limit의 개념: CPU와 Memory의 의미 (0) | 2024.09.20 |
---|---|
mTLS란 무엇인가? Istio에서 mTLS 구성 방법과 보안 강화하기 (2) | 2024.09.11 |
빅쿼리(BigQuery)란? 구글 클라우드의 강력한 데이터 웨어하우스 솔루션 (0) | 2024.08.16 |
쿠버네티스(Kubernetes, k8s) 컨트롤플레인과 데이터플레인: 구조와 통신 방법 이해하기 (0) | 2024.08.13 |
[Docker] 2. 라이프 사이클 (0) | 2023.03.25 |
댓글