Docker
기본 개념
애플리케이션을 개발, 배포, 실행하기 위한 오픈소스 컨테이너화 플랫폼
Docker를 사용하면 주변 환경에 상관 없이 똑같이 어플리케이션이 실행을 할 수 있도록 해준다.
도커의 구성 요소
| 도커 이미지 (Docker Image) | 도커 컨테이너 (Docker Container) |
|---|---|
| 컨테이너의 설계도 (container blueprint) | 도커 이미지 인스턴스 (image instance) |
| 변형 불가 (immutable) | 쓰기 가능 (writable) |
| 컨테이너 없이 존재 가능 | 컨테이너는 이미지를 실행시켜야 존재 |
| 컴퓨팅 자원을 필요로 하지 않음 | 실행을 위해 컴퓨팅 자원 필요 |
| 공개/비공개 레지스트리 플랫폼으로 공유 | 이미 실행 중인 개체는 공유 필요 없음 |
| 단 한번만 생성 | 같은 이미지로 부터 다수의 컨테이너 생성 |
도커 이미지(Image)
- 컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것
- 더 이상 의존성 파일을 컴파일하거나 이것저것 설치할 필요가 없는 상태의 파일을 의미
- 이미지를 컨테이너에 담고 실행시키면 해당 프로세스가 동작함
- 도커 이미지의 생성 방식
- 여러 개의 읽기 전용 레이어로 구성되고 파일이 추가되면 새 레이어가 생성돼서 추가됨
- 기존 이미지에 추가적 구성이 필요할 때 다시 다운로드 하는 것이 아니라 기존 이미지에 레이어를 추가하여 구성을 올려주는 방식
도커 컨테이너(container)
- 이미지를 실행한 상태로 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 하거나 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술
- 특징
- 컨테이너는 이미지 레이어에 읽기/쓰기 레이어를 추가하는 것으로 생성됨
- 종료되었다고 해서 삭제되지는 않음
- 한 서버는 여러 개의 컨테이너를 가져도 상관없으며 각각 독립적으로 실행
- 컨테이너는 커널 공간과 호스트 os 자원 공유함
결론
필요한 모든 환경과 코드를 패키징하여 이미지로 만들고, 이를 인스턴스화하여 컨테이너라는 격리된 공간에서 실행(Run)시키는 것이 도커의 기본 작동 원리이다.
Leave a comment