Docker란?
- Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼
- 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 컨테이너는 라이브러리, 시스템 도구, 코드 등 소프트웨어 실행에 필요한 모든 것이 포함한다.
Docker 사용 이유
- 도커를 통해 애플리케이션을 실행하면 독립적인 환경에서 일관된 결과를 보장한다.
도커의 핵심 개념은 이미지와 컨테이너를 생각하면 된다.❗
컨테이너란?
응용프로그램을 빠르고 쉽게 시작할 수 있는 portable units
- 격리된 공간에서 프로세스가 동작하는 기술
- 기존의 가상화 방식인 OS 가상화가 아닌 프로세스를 격리하는 방식으로 동작한다.
장점
- 단순히 프로세스를 격리하기 때문에 가볍고 빠르다.
- CPU나 메모리는 프로세스가 필요한 만큼만 추가 사용하여서 성능적으로 거의 손실이 없다.
Docker 이미지란?
- 도커 이미지는 소스 코드, 라이브러리, 종속성, 도구 및 응용 프로그램을 실행하는데 필요한 기타 파일을 포함하는 불변(변경 불가) 파일를 의미한다.
- Application을 포장 및 전송하기 위해 도커는 "docker image"를 사용한다.
- Docker image는 파일로 어플리케이션 실행에 필요한 독립적인 환경을 포함한다.
특징
1. 컨테이너를 생성하는 이미지 베이스는 별도로 존재하며 변경할 수 없다.
2. 이미지는 템플릿일 뿐이므로 시작하거나 실행할 수 없다. 컨테이너는 실행 중인 이미지일 뿐이기 때문이다.
Dockerfile이란?
Dockerfile --(Build)--> Image --(Create)--> Container
- 도커 이미지를 빌드하는 방법(환경정보 저장)을 정의하는 스크립트