Docker는 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 플랫폼입니다.
애플리케이션을 인프라에서 분리하여 빠르게 소프트웨어를 제공할 수 있습니다.
코드를 작성하고 프로덕션에서 실행하는 사이의 지연 시간을 크게 줄일 수 있습니다.
1. The Docker platform
- Docker는 컨테이너라는 약간 격리된 환경에서 애플리케이션을 패키지화하고 실행할 수 있게 합니다.
- 컨테이너는 경량화되어 있으며, 애플리케이션을 실행하는 데 필요한 모든 것을 포함하므로 호스트에 의존할 필요가 없습니다.
2. What can I use Docker for?
Fast, consistent delivery of your applications
- 개발자가 로컬 컨테이너를 사용하여 표준화된 환경에서 작업할 수 있게 해줍니다.
- CI/CD 워크플로우에 이상적입니다.
Responsive deployment and scaling
- 다양한 환경에서 실행될 수 있도록 고도로 이식 가능한 워크로드를 허용합니다.
Running more workloads on the same hardware
- 가벼우며 빠르기 때문에 성능상 유리합니다.
3. Docker architecture
- 클라이언트-서버 아키텍처를 사용합니다.
- REST API를 사용하여 통신합니다.
The Docker daemon
- Docker의 데몬 프로세스 입니다.
- Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨 등의 Docker 객체를 관리합니다.
- 다른 데몬과도 통신하여 Docker 서비스를 관리할 수 있습니다.
The Docker client
- 사용자가 Docker와 상호작용하는 방법입니다.
- Dockerd(Docker Daemon)과 상호작용하여 수행합니다.
Docker registries
- Docker 이미지를 저장하는 저장소입니다.
- 누구나 사용할 수 있는 공개 저장소입니다.
- 필요한 이미지를 pull하거나 push할 때 구성된 저장소와 통신합니다.
Docker objects
Images
- 컨테이너를 생성하기 위한 읽기 전용 템플릿입니다.
- 각 Dockerfile의 명령어는 이미지에서 계층을 생성합니다.
Containers
- 이미지의 실행 가능한 인스턴스 입니다.
- API 혹은 CLI를 통해 생성, 시작, 이동 또는 삭제가 가능합니다.
- 기본적으로 다른 컨테이너나 호스트 기계와 격리됩니다.