- Docker는 복잡한 리눅스 애플리케이션을 컨테이너로 묶어서 실행이 가능합니다.
- 서버에서 여러 개의 컨테이너를 실행하고 이미지 저장과 배포가 가능합니다.
애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 플랫폼으로 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징 합니다.
컨테이너: 라이브러리, 시스템 도구, 코드 등 소프트웨어 실행에 필요한 모든 것을 포함! (도커는 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 도와주는 도구입니다.)
가상화
기존의 가상화 기술은 하이퍼 바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식입니다. 소프트웨어를 사용하여 프로세서, 메모리, 스토리지 등과 같은 단일 컴퓨터의 하드웨어 요소를 다수의 가상 컴퓨터로 분할할 수 있도록 컴퓨터 하드웨어 상의 추상화 계층을 구축하여 마치 독립적인 컴퓨터인 것처럼 작동시킵니다.
- Guest OS: 하이퍼바이저에 의해 생성되고 관리되는 운영체제입니다.
- VMware, Virtualbox같은 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다.
단점으로는 가상화하는 작업은 하이퍼바이저를 거치기에 성능 손실이 발생합니다.
- 하이퍼바이저는 가상머신을 생성하고 실행하는 프로세스입니다.
게스트 OS를 사용하기 위한 라이브러리, 커널 등을 포함하기에 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지 용량이 커지는 단점도 있습니다.
Docker container
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술입니다. OS 가상화가 아닌 프로세스를 격리하는 방식으로 작동합니다. 커널은 호스트의 커널을 공유하고 컨테이너 안에 애플리케이션을 구동하는데 필요한 라이브러리 및 실행 파일만 존재하기에 이미지 용량도 작습니다.
컨테이너의 특징은 다음과 같습니다.
이미지란 서비스 운영에 필요한 서버 프로그램, 소스코드, 컴파일된 실행파일을 묶은 형태입니다. 컨테이너 실행에 필요한 파일과 설정을 포함하고 잇는 것으로 상태 값을 가지지 않고 변하지 않습니다.
- 컨테이너는 이미지를 실행한 상태입니다.(실행 파일과 프로세스 관계)
추가되거나 변하는 값은 컨테이너에 저장합니다. 같은 이미지에서 여러 개의 컨테이너를 만들 수 있고 컨테이너의 상태가 바뀌거나 삭제되어도 이미지는 변하지 않고 그대로 남아있습니다. 이미지로 컨테이너를 생성하면 컨테이너의 변경 사항만 별도로 저장해 정보를 보존합니다.
- 이미 생성된 이미지는 변하지 않습니다.
이미지의 이름은 "저장소 이름/이미지 이름/태그" 형태로 이루어지며 저장소 이름은 생략이 가능합니다. 태그는 이미지 버전 관리이며 생략하면 태그를 latest(최신버전)으로 인식합니다.
도커 이미지는 가상머신에 비해 작은 용량이며 하나의 이미지를 통해 여러 컨테이너를 생서, 삭제해도 이미지는 변하지 않습니다. 이미지는 Docker hub을 통해 버전 관리 및 배포가 가능합니다.
'BOAZ > 엔지니어링' 카테고리의 다른 글
1. CS 기초정리 (0) | 2022.08.18 |
---|