Docker는 소프트웨어 개발 및 배포를 위해 널리 사용되는 컨테이너 플랫폼으로, Docker를 사용하면 애플리케이션과 해당 종속성을 컨테이너라는 단위로 패키징하고 이 컨테이너를 다양한 환경에서 일관되게 실행할 수 있다.
이미지 (Image) : 컨테이너를 생성하기 위한 템플릿. 애플리케이션과 모든 종속성을 포함.
컨테이너 (Container) : 이미지를 실행한 상태. 격리된 환경에서 애플리케이션이 실행됨.
도커 허브 (Docker Hub) : Docker 이미지를 저장하고 공유할 수 있는 중앙 저장소.
도커 파일 (Dockerfile) : 이미지를 정의하는 스크립트. 이미지 생성 과정과 필요한 명령어들을 포함.
일관된 환경 : 개발, 테스트, 배포 환경을 동일하게 유지할 수 있어 환경 차이로 인한 문제를 줄임.
경량성 : 가상머신보다 적은 리소스를 사용하며, 빠르게 시작되고 종료됨.
확장성 : 다중 컨테이너 애플리케이션을 쉽게 배포하고 관리할 수 있음.
이식성 : 운영체제에 종속되지 않고 다양한 플랫폼에서 실행 가능.
신속한 배포 : 이미지를 통해 애플리케이션의 배포가 신속하게 이루어짐.
모듈성 : 애플리케이션을 마이크로서비스 아키텍처로 분리하여 관리 가능.
복잡성 : 대규모 시스템에서는 컨테이너 오케스트레이션 도구(Kubernetes 등)를 사용해야 하며, 이는 추가적인 복잡성을 야기.
데이터 관리 : 컨테이너가 휘발성 환경이므로 데이터를 관리하는 방법에 주의가 필요.
보안 문제 : 컨테이너가 호스트 OS의 커널을 공유하므로, 보안 이슈가 발생할 수 있음.
성능 오버헤드 : 가상머신보다는 적지만, 여전히 성능 오버헤드가 존재함.