홈페이지를 참고하면 도커는 다음과 같이 간단히 설명할 수 있다.
도커는 컨테이너를 기반으로 하는 가상화 도구인데, 즉, 어플리케이션을 컨테이너 단위로 격리하여 실행하고 배포하는 기술이다.
컨테이너는 가상화 기술* 중 하나로, 호스트 운영체제 위에 여러개의 격리된 환경울 생성한다.
애플리케이션은 각각의 컨테이너 안에서 실행된다.
*가상화(Virtualization) 기술: 하나의 물리적인 컴퓨터 자원(CPU, 메모리, 저장장치 등)을 가상적으로 분할하여 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술. 이를 통해 물리적인 컴퓨터 자원을 더욱 효율적으로 사용할 수 있으며, 서버나 애플리케이션 등을 운영하는데 있어 유연성과 안정성을 제공.
vm과 달리 container은 하이퍼바이저 대신 컨테이너 엔진을 사용한다.
도커는 리눅스 컨테이너 기반으로, 리눅스 커널의 기능을 사용하여 만들어진다. (리눅스 기반이지만 다른 운영체제에서도 사용할 수 있다.) 애플리케이션을 컨테이너 단위로 격리하여 실행, 배포함으로써 빠르고 손쉽게 빌드, 배포, 관리할 수 있다.
'도커 클라이언트'는 도커와 상호작용하며, 도커 명령어를 사용하면 docker demon으로 보내어 실행하도록 한다.
이제 가장 부피가 큰 '도커 호스트'를 살펴보자.
먼저 docker demond(dockerd)는 도커 엔진의 핵심 구성요소이다. 도커 호스트에서 컨테이너를 관리하고 실행하는 역할을 수행하는데, 컨테이너를 생성, 시작, 중지, 삭제하는 등의 작업이 이에 해당된다. 또 컨테이너 이미지를 관리하고, 외부 이미지를 다운로드 및 빌드하는 작업을 수행한다. 없으면 안되는 존재!
다음으로는 docker image. 이는 도커 컨테이너를 만들기 위한 읽기 전용 템플릿이다.
docker container은 앞서 설명하였듯 애플리케이션을 실행하기 위한 모든 파일과 설정 정보를 포함하는 패키지로, 한 도커 이미지의 실행 가능한 인스턴스가 되겠다.
오른쪽의 docker registries는 도커 이미지들을 관리하고 저장하는 곳이다. 예를들어 도커허브는 alpine, nginx 와 같은 이미지들을 저장하고 있는 디폴트 레지스트리이다. 도커 허브는 누구나 접근 가능한 공개형 저장소이다. 이곳에서 이미지를 pull명령어를 통해 받아와 container로 만들 수 있다.