Docker란
Docker(도커)는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아 두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용하기 위한 오픈소스 플랫폼. Docker는 내부에서 컨테이너 기술을 사용하고 있다.
https://www.docker.com/get-started
프로그래머에게 Docker란?
웹 시스템 개발 시 애플리케이션을 제품 환경에서 가동하기 위해서는 다음과 같은 요소가 필요하다.
- 애플리케이션의 실행 모듈(프로그램 본체)
- 미들웨어 & 라이브러리 군
- OS/네트워크 등과 같은 인프라 환경
Docker에서는 이러한 인프라 환경을 컨테이너로 관리한다. 애플리케이션 실행에 필요한 모든 파일 및 디렉토리들을 컨테이너로서 모아버린다. 이러한 컨테이너의 바탕이 되는 Docker 이미지를 Docker Hub와 같은 리포지토리(repository)에 공유한다.
프로그래머는 Docker를 사용하여 개발한 애플리케이션의 실행에 필요한 모든 것이 포함되어 있는 Docker 이미지를 작성하고 이 이미지는 컨테이너의 바탕이 된다. 작성한 이미지를 바탕으로 컨테이너를 가동시킨다. 이 이미지는 Docker가 설치되어 있는 환경이라면 기본적으로 어디서든지 작동되므로 '개발/테스트 환경에서 움직이지만 제품 환경에서는 움직이지 않는다' 는 리스크를 줄일 수 있다.
따라서 애플리케이션 개발부터 테스트, 제품 환경에 대한 전개를 모두 애플리케이션 엔지니어가 수행하는 것이 가능해진다.
Docker의 이러한 특징 때문에 앞으로 애플리케이션 엔지니어와 인프라 엔지니어의 경계가 모호해질 것이며, 두 엔지니어의 역량을 모두 갖춘 엔지니어가 경쟁력 있는 엔지니어가 될 것이라고 생각한다.
참고
'About > Docker' 카테고리의 다른 글
[Docker] Docker의 작동 구조 (2) (cgroups) (0) | 2020.12.27 |
---|---|
[Docker] Docker의 작동 구조 (1) (namespace) (2) | 2020.12.13 |
[Docker] Docker 컴포넌트 (1) | 2020.12.13 |
[Docker] Docker의 기능 (1) | 2020.12.07 |
[Docker] 컨테이너(Container)란? (2) | 2020.12.05 |