도커란?
도커(Docker)는 애플리케이션을 신속하게 배포, 관리 및 확장할 수 있도록 해주는 오픈 소스 플랫폼입니다. 도커는 컨테이너(Container)라는 가벼운 가상화 기술을 사용하여 애플리케이션과 해당 종속성을 함께 패키징하여 일관된 실행 환경을 제공합니다. 이를 통해 개발 환경과 운영 환경 간의 차이로 인한 문제를 줄일 수 있습니다

도커의 주요 개념
- 컨테이너(Container):
- 애플리케이션 코드와 모든 종속성(라이브러리, 환경 변수, 구성 파일 등)을 하나의 패키지로 묶은 가벼운 격리 환경입니다.
- 하나의 호스트 운영 체제 커널을 공유하면서 각각 격리된 공간에서 실행되기 때문에 가상 머신보다 더 빠르고 효율적입니다.
컨테이너의 생애주기
- 이미지(Image):
- 컨테이너를 생성하기 위한 읽기 전용 템플릿입니다.
- 애플리케이션의 코드, 런타임, 라이브러리 및 설정을 포함합니다.
- 도커 이미지는 계층(Layer)으로 구성되며, Dockerfile이라는 텍스트 파일을 사용해 이미지를 빌드합니다.
Dockerfile과 이미지와 컨테이너의 동작구조
- Dockerfile
- 도커 이미지를 빌드하기 위한 스크립트 파일입니다.
- 이미지 생성 과정을 단계별로 정의하며, 각 단계는 이미지를 구성하는 하나의 계층을 형성합ㅎ니다.
- 도커 허브(Docker Hub):
- 도커 이미지의 중앙 저장소입니다.
- 사용자들이 도커 이미지를 공유하고 사용할 수 있도록 도와줍니다.
- 공식 이미지와 사용자 생성 이미지가 포함되어 있습니다.
- 도커 엔진(Docker Engine):
- 도커의 핵심 부분으로, 컨테이너를 생성하고 관리하는 데 사용됩니다.
- 도커 CLI(Command Line Interface)와 REST API를 통해 도커 엔진과 상호작용할 수 있습니다.
도커의 장점
- 이식성:
- 컨테이너는 어디서나 실행될 수 있습니다. 개발 환경, 테스트 환경, 운영 환경 간의 일관성을 유지합니다.
- 효율성:
- 컨테이너는 가상 머신보다 적은 리소스를 사용합니다. 하나의 운영 체제 커널을 공유하기 때문에 더 빠르게 시작하고 실행할 수 있습니다.
- 격리성:
- 각 컨테이너는 다른 컨테이너와 독립적으로 실행됩니다. 이를 통해 애플리케이션 간의 충돌을 방지할 수 있습니다.
- 확장성:
- 컨테이너는 필요에 따라 신속하게 확장할 수 있습니다. 이를 통해 높은 가용성을 유지하면서 부하를 효율적으로 관리할 수 있습니다.