도커란?
- 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반 오픈소스 가상화 플랫폼이면서 생태계이다.
- 다양한 운영체제에서 사용이 가능하다. (MacOS, 윈도우, 리눅스)
- 애플리케이션에 국한되지 않고 의존성 및 파일 시스템까지 패키징하여 빌드, 배포, 실행을 단순화한다.


- 컨테이너 엔진으로 리눅스 커널 기능을 사용하여 운영체제 위에 컨테이너를 만들고, Docker 자체는 서비스의 컨테이너를 관리하는 데몬으로 실행한다는 특징을 가지고 있다.
도커의 핵심 개념
컨테이너란?: 이미지를 격리하여 독립된 공간에서 실행한 가상 환경
- 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위
- 실제 물건을 담는 컨테이너와 같이 서버상의 컨테이너 안에 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.
- 일반 컨테이너의 개념과 같이 프로그램을 손쉽게 이동, 배포, 관리 할 수 있게 해주는 것
- AWS, Azure, Google Cloud등 어디서든 실행이 가능하게 해준다

도커 이미지란?: 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
- 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행가능한 소프트웨어 패키지이다
즉, 도커 이미지를 통해 도커 컨테이너들을 만드는 것이고, 도커 컨테이너는 도커 이미지의 인스턴스이다
도커 이미지는 프로그램을 실행하는데 필요한 설정이나 종속성을 갖고 있으며 도커 이미지를 이용하여 컨테이너를 생성하며 도커 컨테이너를 이용하여 프로그램을 실행한다
