Container 기반의 오픈소스 가상화 플랫폼
OS가 아닌 container 단위로 실행 환경의 가상화를 제공한다.
이를 통해 프로그램을 container로 추상화해 배포 및 관리를
단순하고 효율적으로 할 수 있게 한다.
Docker는 Linux 운영체제 위에서 동작할 수 있다.
현재 사용하는 os가 Linux가 아니더라고, 가상 머신 또는 WSL 등으로 Linux를 구동할 수 있다면 docker를 사용할 수 있다.
가상 컴퓨팅은 os 위에서 또 다른 os를 구동해 물리적 자원을 분할하여 사용하기 때문에 추가적인 오버헤드가 생긴다.
하지만 docker는 os를 새롭게 구동하지 않고, docker 엔진 위에서 각각의 container를 통해 실행 환경만 독립, 분할 하므로 더 좋은 성능을 보여준다.
프로그램을 실행하기 위한 파일들을 각각 원하는 설정, 원하는 버전으로 구성하여 이미지라는 형태로 저장
하나의 이미지는 여러 개의 레이어로 구성되어 있다.
동일한 프로그램이라도 레이어를 추가하거나 제거해 서로 다른 버전을 가진 이미지로 구성할 수 있다.
서로 다른 이미지가 동일 레이어를 사용한다면, 중복해서 저장하지 않고 해당 레이어를 공유하는 방식을 이용한다. (공유 파일 시스템, Union File System)
Dockerfile
파일에 고유 문법을 통해 이미지 생성 과정을 정의할 수 있다.
이미지는 실행 가능한 프로그램 단위, 레이어들의 집합
예를 들어 Docker에서 Python
,NodeJS
,MySQL
등은 이미지 형태로 받아 사용할 수 있다.