Docker
- 컨테이너 기반의 오픈소스 가상화 플랫폼
- 다양한 프로그램들과 실행환경을 컨테이너로 규격화시켜 프로그램의 배포 및 관리를 단순화
- 코드뿐만 아니라 실행에 필요한 모든 dependency들도 컨테이너에 담기 때문에 다른 환경에서도 빠른 실행 가능
- 가상머신 처럼 다른 프로세스와 격리되어 사용할 수 있지만 성능 저하가 거의 없음
- 오픈소스이기 때문에 특정 회사에 종속되지 않음
Docker Image
컨테이너를 만드는데 사용되는 읽기전용 템플릿
컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것
- 서비스 운영에 필요한 서버 프로그램, 코드 및 라이브러리, 컴파일된 실행 파일 등을 묶는 형태를 도커이미지 라고 한다.
- 컨테이너 생성(실행)에 필요한 모든 파일과 환경을 가진 것으로 dependency 파일을 컴파일하거나 설치할 필요가 없는 상태의 파일
- 도커 이미지는 도커 파일 이라는 파일로 만들어지는데, 도커 파일에는 소스코드와 함께 의존성 패키지 등 사용한 설정 파일을 관리하기 쉽도록 명시됨
- 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커파일을 만든 후 도커파일을 빌드하여 이미지를 만듬
- 상태값을 가지지 않고 변하지 않음 (Immutable)
Docker Layer
- 여러 개의 레이어를 나누어 이미지를 구성
- 레이어 방식을 사용하면 기존의 이미지 레이어를 이용해 다양한 이미지를 새로 만들 수 있고, 기존 이미지를 사용하기 때문에 용량을 절약할 수 있음
- 컨테이너를 생성할 때도 레이어 방식을 이용해 기존의 이미지 레이어 위에 읽기/쓰기 레이어를 추가함
- 이미지레이어를 그대로 사용하면서 컨테이너가 실행중에 생성하는 파일이나 변경된 내용은 읽기/쓰기 레이어에 저장되므로 여러 개의 컨테이너를 생성하더라도 최소한의 용량만 사용하게 됨
Docker Hub
- 도커허브를 통해 수많은 공개 이미지를 무료로 관리해줌
- 누구나 쉽게 도커 이미지를 만들고 배포할 수 있음
- 용량이 큰 이미지들도 도커 허브에서 관리해주기 때문에 사용자는 부담 없이 도커 이미지를 사용할 수 있음
Docker Container
도커 이미지를 실행한 상태
격리된 공간에서 프로세스가 동작하는 기술
- 이미지로 컨테이너를 생성하면 이지미의 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간
- 읽기 전용인 이미지에 변경된 사항을 저장하는 컨테이너 레이어에 저장
- 하나의 도커 이미지로 여러개의 도커 컨테이너를 만들 수 있음
- 도커 이미지를 변경해도 이미 실행 중인 도커 컨테이너에는 영향을 주지 않음