개발일기/CS(면접)
DOCKER?
w.llama
2024. 8. 8. 23:56
도커란?
도커는 애플리케이션을 컨테이너라는 독립된 환경에 패키징하고 배포할수 있게 해주는 도구이다
컨테이너는 애플리케이션 실행에 필요한 모든 요소(코드, 런타임, 시스템 도구, 라이브러리 등)이 표함되어 있다.
- 주요 특징
- 컨테이너 기술 활용
- 호스트 OS의 기능을 사용하면서 프로세스를 격리해 독립된 실행환경을 제공 - 이미지 기반
- 도커 이미지를 통해 애플리케이션과 그 실행 환경을 패키징 - 레이어 구조
- 이미지는 여러 읽기 전용 레이어로 구성되어 효율적인 저장과 배포가 가능
- 컨테이너 기술 활용
- 도커의 장점
- 환경 독립성
- 애플리케이션이 호스트 OS나 다른 컨테이너와 충돌없이 독립적으로 실행됩 - 간편한 배포
- 도커 이미지를 만들어 운영 서버에서 쉽게 전달할 수 있다. - 마이크로서비스 지원
- 각 컨테이너를 독립적인 서비스 모듈로 구성할 수 있다. - 일관된 개발 환경
- 개발자의 로컬 환경과 실제 서버환경의 차이로 인한 문제를 해결
- 환경 독립성
- 도커 VS 가상 머신
- 도커 컨테이너는 가상 머신에 비해 더 가볍고 효율적이다. 컨테이너는 호스트 OS의 커널을 공유하면서 필요한 부분만 격리하기 때문에, 가상 머신보다 빠르게 시작되고 적은 리소스를 사용한다 도커를 사용하면 개발자들은 애플리케이션을 환경에 구애 받지 않고 신속하게 배포하고 확장할 수 있다.
- 도커 이미지와 컨테이너의 주요 차이점
- 도커 이미지
- 컨테이너를 생성하기 위한 템플릿 또는 읽기 전용 파일시스템 - 도커 컨테이너
- 이미지를 기반으로 실행되는 실제 인스턴스 또는 프로세스
- 도커 이미지
- 도커 이미지
- 읽기 전용 레이어로 구성
- 애플리케이션 실행에 필요한 모든 파일과 설정을 포함
- 변경되지 않는 불변성을 가짐
- DockerHub를 통해 버전 관리 및 배포가 가능
- 도커 컨테이너
- 이미지를 기반으로 생성, 실행중인 상태를 나타냄
- 읽기-쓰기가 가능한 레이어를 가지고 있어 변경사항을 저장할 수 있음
- 이미지의 파일 시스템을 기반으로 실행된 리눅스 프로세스
- 관계
- 하나의 이미지로 여러 컨테이너 생성가능
- 컨테이너 삭제해도 이미지는 남아있음
- 컨테이너의 변경사항을 커밋하여 새로운 이미지 생성가능
- 도커 단점 !!
- 리눅스 기반 제한
- 리눅스 운영체제에서 실행 가능한 소프트웨어만 지원
- Window나 MacOS에서 도커를 사용하려면 추가설정이 필요
- 리소스 공유로 인한 잠재적 위험
- 여러 컨테이너가 호스트 OS의 커널을 공유하기때문에, 보안 취약점이 발생할 경우 전체 시스템에 영향이감
- 성능 오버헤드
- 컨테이너화로 인한 약간의 성능 저하가 발생 할 수 있다.
- 특히 I/O 집약정인 작업에서 이러한 현상이 두드러질 수 있다.
- 복잡성 증가
- 도커를 효과적으로 사용하기 위해서는 학습이 곡선이 존재한다
- 컨테이너 관리, 네트워킹, 볼륨관리등 새로운 개념을 이해해야함
- 데이터 지속성 관리
- 컨테이너는 기본적으로 휘발성이므로, 데이터의 영구저장을 위해 별도의 볼륨관리가 필요
- 모니터링 및 디버깅 어려움
- 분산된 환경에서 여러 컨테이너를 모니터링하고 디버깅하는 것이 복잡할수 있음
- 리소스 제한
- 호스트 서버의 리소스를 여러 컨테이너가 공유하므로, 개별 컨테이너의 리소스 사용에 제한이 있을 수 있음.
- 리눅스 기반 제한