Docker란?
컨테이너 기술을 사용하여 애플리케이션에 필요한 환경을 신속하게 구축하고 테스트 및 배포를 할 수 있게 해주는 플랫폼이다.
무료로 제공해주는 CE(Community Edition)과 EE(Enterprise Edition)으로 나뉘고 아래와 같은 플랫폼들에서 작동 가능하다.
- Linux
- Ubuntu
- CentOS
- Debian
- Cloud
- Azure
- AWS
- Wibdows10
- MacOS
- ETC
Docker Image란?
도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 말하며, 특정 프로세스를 실행하기 위한(컨테이너 생성(실행)에 필요한) 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치할 필요가 없는 상태의 파일을 의미한다.
또한, 컨테이너를 생성하는 Base가 되는 것이 바로 이미지이다. 이미지는 컨테이너를 실행하는데 핗요한 모든 것을 포함하고 재사용이 가능하다.
특징
- 이미지는 상태 값을 가지지 않고 변하지 않는다. (Immutable)
- 하나의 이미지는 여러 컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
- 도커 이미지들은 github와 유사한 서비스인 DockerHub를 통해 버전 관리 및 배포(push&pull)가 가능하다.
- 다양한 API가 제공되어 원하는 만큼 자동화가 가능하다.
- 도커는 Dockerfile 을 이용하여 이미지를 만든다. Dockerfile에는 소스와 함께 의존성 패키지 등 사용했던 설정 파일을 버전 관리하기 쉽도록 명시된다.
Container란?
컨테이너는 Host OS 상에서 리소스를 논리적으로 구분하여 마치 별도의 서버인 것처럼 사용할 수 있게 해주는 기술이다.
물리적으로는 구분하지 않기 때문에 쉽게 제거하고 다시 생성할 수 있어 가볍다고 표현할 수 있다.
컨테이너 사용 이유
- 여러 애플리케이션에서 사용하고 있는 라이브러리나 미들웨어 버전에 대한 충돌 회피
- 높은 이식성과 확장성
- 컨테이너 이미지 그대로 의존성 없이 다른 환경에서 실행 가능
- 여러 개의 컨테이너 실행하여 이중화 가능
- 다양한 운영 환경 지원
'Infra' 카테고리의 다른 글
MSMTP와 SMTP (0) | 2023.04.18 |
---|---|
[Netdata] Email을 이용한 알림 설정 (0) | 2023.04.18 |
[Netdata] 오픈소스 모니터링 시스템 (0) | 2023.04.17 |