Docker란 어플리케이션을 패키징하는 툴이다.
리눅스 기반 컨테이너에 Application 등의 소스코드, 개발환경들을 담아내는 기술이다.
*VM과 다른점은 각 VM마다 Guest OS가 필요해서 상당히 무거운것에 반해 도커는 HOST OS만이 존재하고, 컨테이너에는 어플리케이션을 구동하는 데 필요한 라이브러리, 실행 파일만 존재하기 때문에 상당히 가벼움.
도커가 필요한 이유는 로컬 PC에서 개발한 프로그램을 서버에 그대로 가져가서 RUN 했을 경우 오류가 나는 경우가 매우 많음. (언어, 프레임워크 버전 오류)
그래서 프로그램이 구현되는 상태를 이미지화 해서 저장해두었다가 쓰는 방식을 채택함.
도커의 3대 구성요소로 "도커파일", "이미지", "컨테이너" 가 있다.
"도커파일" - 도커 이미지를 만들기 위해 사용되는 파일로, 도커를 빌드하면 도커 이미지가 생성 됨
"이미지" - 현재 실행되고 있는 어플리케이션의 상태를 이미지화 해서 뜨는것 (객체지향 언어의 클래스 느낌)
"컨테이너" - 이미지를 이용해서 구동한(RUN) 상태
도커 이미지는 Docker Hub라는 사이트를 통해 주로 배포된다.