도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 소프트웨어 애플리케이션을 패키징하고 배포하는 데 사용됩니다. 도커는 애플리케이션과 그에 필요한 모든 종속성을 포함하는 독립적인 실행 환경을 제공하여 개발, 테스트 및 배포 과정을 간소화합니다. 이를 통해 애플리케이션의 이식성과 확장성을 크게 향상시킬 수 있습니다.
도커는 애플리케이션과 모든 종속성을 독립적인 컨테이너로 패키징합니다. 이렇게 패키징된 컨테이너는 어디에서든 실행될 수 있으며, 개발 환경과 프로덕션 환경 간의 차이를 줄여줍니다. 이식성이 뛰어나므로 다양한 환경에서 애플리케이션을 실행할 수 있습니다.
-> 같은 기능으로 가상머신(Virtual Machine)과 비슷하지만 도커를 사용하면 리소스를 분리하여 사용하기 때문에 도커는 각 컨테이너를 격리된 환경에서 실행하므로 서로 영향을 미치지 않고 여러 애플리케이션을 동시에 실행할 수 있습니다. 이를 통해 리소스 사용을 효율적으로 관리하고 보안을 강화할 수 있습니다.
도커는 이미지를 통해 컨테이너를 만들고 이를 통해 격리된 환경 속에서 작업할 수 있게합니다.
도커허브를 통해 가져온 이미지 또는 생성한 이미지 -> 컨테이너 생성
컨테이너: 도커에서 애플리케이션과 해당 환경을 패키지화하는 단위를 컨테이너라고 합니다. 이 컨테이너는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정 파일을 포함하며 모든 종속성을 격리된 환경에서 실행합니다.
이미지: 컨테이너를 만들기 위한 템플릿이며, 애플리케이션과 그 종속성을 정의합니다. 이미지는 읽기 전용이며 변경할 수 없습니다. 이미지는 Docker Hub와 같은 레지스트리에 저장되고 공유할 수 있습니다.
도커 엔진: 도커 컨테이너를 생성, 관리 및 실행하는 핵심 엔진입니다. 도커 엔진은 컨테이너의 라이프사이클 관리, 네트워킹, 스토리지 관리 등을 담당합니다.
도커 컴포즈: 여러 컨테이너를 정의하고 연결하여 복잡한 애플리케이션 스택을 관리하는 도구입니다. 컴포즈 파일을 사용하여 애플리케이션 구성을 정의하고 일괄적으로 배포할 수 있습니다.
도커 스웜: 도커 내장 오케스트레이션 도구로, 여러 호스트에서 컨테이너를 관리하고 스케일링하며 고가용성을 제공합니다.
도커 레지스트리: 도커 이미지를 저장하고 공유하기 위한 중앙 저장소입니다. Docker Hub는 가장 널리 사용되는 레지스트리 중 하나이며, 사용자 정의 레지스트리를 구성할 수도 있습니다.
도커 컴포넌트: 도커는 다양한 구성 요소로 구성되며, 주요 컴포넌트로는 도커 데몬(Docker Daemon), 도커 클라이언트(Docker Client), 도커 이미지, 도커 컨테이너, 도커 레지스트리 등이 있습니다.