Container를 생성하고 관리하는 도구
표준화된 소프트웨어 유닛
: 코드 패키지와 해당 코드를 실행하는데 필요한 종속성과 도구가 포함되어 있음
Docker로 빌드된 특정 Container을 실행하는 경우,
그 Container에는 애플리케이션 소스 코드 뿐만이 아니라
코드를 실행하는데 필요한 도구 또한 포함하고 있기 때문에,
해당 Container을 실행하면, 어느 환경이든
동일한 코드 / 동일한 도구 / 동일한 버전 / 동일한 동작과 결과를 제공
이로 인해, 따라오는 장점으로는
[ 장점 ]
1. 분리된 환경을 구성할 수 있음
2. 특정 환경을 구성할 수 있음
[ 단점 ]
1. Virtual OS 오버헤드가 발생할 수 있음
2. 메모리, CPU, 하드 드라이브의 공간을 낭비
3. app을 초기 설정하는데 공수가 많이 듬
[ 장점 ]
1. Virtual Machines 장점을 가지며, 단점을 보완
2. 불필요한 중복된 OS, 수많은 추가 도구를 포함하지 않음
- OS에 낮은 영향 줌
- 빠른 구동 속도
- 최소한의 Disk 사용량
- 공유, 재구축, 배포 용이
- app에 필요한 모든 것을 캡슐화한 앱과 환경만을 보유
즉, App을 캡술화함
- OS에 큰 영향 줄 수 있음
- 느린 구동 속도
- Container 보다 더 많은 디스크 공간 차지
- 공유, 재구축, 배포가 가능하지만, Container보다 까다로움
- app에 필요한 모든 것을 캡슐화한 앱과 환경뿐만 아니라,
컴퓨터 전체를 캡슐화 함
Docker Engine
Docker 전용 가상 환경을 구성하는 도구
대부분의 OS들은 Docker를 지원하지 않음
Docker를 지원하지 않는 OS에서 Docker를 사용하려면, 가상 환경을 구성해야 함
Docker ToolBox
가상화를 지원하지 않는 OS에 docker를 설치할 수 있도록 도와주는 도구
Docker Desktop
docker가 정상적으로 실행되고 있는 확인하는 프로그램
Docker Hub
클라우드 or 웹에서 이미지를 호스팅하여
다른 시스템과 사람들에게 쉽게 공유할 수 있게 해주는 서비스
Docker Compose
Docker를 기반으로 하는 도구
복잡한 컨테이너 또는 다중 컨테이너 프로젝트를 더 쉽게 관리 가능
Kubernetes
복잡하게 컨테이너화된 애플리케이션을 배포할 때, 관리하는 도구