해당 글은 쿠버네티스 교과서 책과 공식 홈페이지(https://kubernetes.io/ko/)를 참조하여 작성되었습니다
Docker는 컨테이너 환경 기반의 플랫폼으로, 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공한다
인프라를 서버에 직접 설정해야하는 것과 달리, 컨테이너로 쉽게 생성/삭제가 가능하기에 마치 애플리케이션을 관리하는 것처럼 관리할 수 있다
또한 VM과는 달리 가벼운데다 애플리케이션을 실행을 위한 것들이 포함되어 있으므로, 확장성과 편리성이 좋다는 장점이 있다
각 컨테이너는 서로 독립적으로 동작하기에 간편하게 삭제하고 생성할 수 있다
이에 따라 무상태성을 지향하기에, 언제 어디서나 실행을 시켜도 같은 결과물이 나온다는 장점이 있다
앞서 말했듯 VM과 달리 가볍고 이미지를 통해 실행이 가능하기에 확장성과 이동성이 좋다
Docker는 클라이언트 - 서버 아키텍처를 사용하며, 다음과 같은 구조를 가지고 있다

각 요소에 대해 간단히 알아보도록 하자
Docker run, docker build, docker pull
데몬과 REST API, UNIX 소켓, 네트워크 인터페이스로 통신
별도의 명령어를 통해 데몬(dockerd)을 실행,데몬으로 하여금 컨테이너를 빌드/실행/배포하는 일을 수행
데몬(dockerd)
클라이언트에서 Docker API를 수신하여, 이미지, 컨테이너, 네트웤, 볼륨같은 Docker 개체를 관리한다
이미지
컨테이너를 만드는 방법이 포함된 읽기 전용 템플릿이다
보통 DockerFile을 통해 이미지를 빌드하고 Resigtry에 푸시한다
컨테이너
이미지의 실행 가능한 인스턴스이다
Docker API를 통해 컨테이너를 다룰 수 있다
Docker 이미지, 도움이 되는 플러그인 등이 저장되어 있는 곳이다
기본적으로 Docker Hub에서 찾는다
그럼 이러한 Docker는 결국 어떻게 사용되는 것일까?
다음 편에서 알아보자