도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 가상화 플랫폼이다.
도커 컨테이너는 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다.
여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다.
이를 통해 언제나 동일하게 실행되는 것을 보증한다.

리소스를 격리하기 위해서 가상화라는 개념이 등장하였고, 가상화는 Host, OS위에 여러개의 독립된 게스트, OS를 띄워서 사용한다.
이런 가상화의 문제점은 이미지가 거대해지고(Guest OS에 커널을 포함) 성능 손실이 발생한다.
이 문제를 해결하기 위해서는 도커 엔진위에 컨테이너가 할당된다. 컨테이너는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행파일만 존재하기 때문에 이미지가 가볍다.
결과적으로, 도커를 사용하게 된다면, 더 가볍고 빠르게 격리된 환경에서 애플리케이션을 실행시킬 수 있다.

도커는 서버 - 클라이언트 - 서버 아키텍처로 통신한다. 도커 Client는 도커 컨테이너를 빌드, 실행 및 배포하는 작업을 수행하는 Docker 데몬과 통신한다.
도커 Client와 demon은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신한다.
다른 도커 클라이언트는 컨테이너 세트로 구성된 애플리케이션으로 작업할 수 있는 Docker Compose이다.