Home Docker
Post
Cancel

Docker

Docker란?

[TOC]

컨테이너란?

컨테이너란 호스트 OS상에 논리적인 구획을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다. 호스트 OS의 리소스를 논리적으로 분리시키고, 여러 개의 컨테이너가 공유하여 사용한다. 컨테이너는 오버헤드가 적기 때문에 가볍고 고속으로 작동하는 것이 특징이다.

Docker 개요

Docker를 사용하면 컨테이너를 매우 가벼운 모듈식 가상머신처럼 다룰 수 있다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있어, 애플리케이션을 클라우드에 최적화하도록 지원한다.

Docker의 작동

Docker를 포함한 컨테이너 툴은 이미지 기반 배포 모델을 제공하므로 여러 환경 전반에서 애플리케이션 또는 서비스를 모든 종속 항목과 손쉽게 공유할 수 있다. 또한 Docker는 이 컨테이너 환경 내에서 애플리케이션 배포를 자동화 한다.

Docker 기술과 기존의 Linux 컨테이너의 차이점

Docker 기술은 처음에 LXC기술을 기반으로 구축되긴 했지만, 그 이후로는 종속 관계를 벗어났다.

LXC는 경량의 가상화 방법으로 유용하게 사용되었지만 개발자 또는 사용자에게 우수한 경험을 제공하지는 못했다. Docker 기술은 컨테이너를 실행하는기능 이상의 것을 제공하며, 컨테이너 생성 및 구축, 이미지 전송, 이미지 버전 관리 프로세스를 용이하게 해준다.

img

전통적인 Linux 컨테이너는 멀티플 프로세스를 관리할 수 있는 초기화 시스템을 사용한다. 즉, 전체 애플리케이션을 하나로 실행할 수 있다. Docker 기술은 애플리케이션이 개별 프로세스로 세분화되도록 하며 이를 수행할 수 있는 툴을 제공한다. 이 세분화된 접근 방식에는 이점이 있다.

Docker 컨테이너의 이점

모듈성

Docker의 컨테이너화 접근 방식은 전체 애플리케이션을 분해할 필요 없이 애플리케이션의 일부를 분해하고, 업데이트 또는 복구하는 능력에 집중되어있다. 사용자는 이 마이크로서비스 기반 접근 방식 외에도 SOA의 작동 방식과 동일하게 멀티플 애플리케이션 사이에서 프로세스를 공유할 수 있다.

계층 및 이미지 버전 제어

각 Docker 이미지 파일은 일련의 계층으로 이우어져 있으며 이 계층들은 단일 이미지로 결합된다. 이미지가 변경될 때 계층이 생성되고, 사용자가 실행 또는 복사와 같은 명령을 지정할 때마다 새 계층이 생성된다.

Docker는 새로운 컨테이너를 구축할 대 이러한 계층을 재사용하므로 구축 프로세스가 훨씬 더 빨라진다. 중간 변경 사항이 이미지 사이에서 공유되므로 속도, 규모, 효율성이 더 개선된다. 계층화에는 버전 관리가 내재되어 있으며 새로운 변경 사항이 발생할 때 마다 내장 변경로그가 기본적으로 적용되므로 컨테이너 이미지를 완전히 제어할 수 있다.

롤백

계층화에서 가장 유용한 부분은 아마도 롤백 기능일 것이다. 모든 이미지에는 계층이 있으며, 현재의 이미지 반복이 적절하지 않은 경우 이전 버전으로 롤백하면 된다. 이 기능은 애자일 개발 접근 방식을 지원하며 툴 관점에서 실제로 CI/CD를 수행하는데 도움을 준다.

신속한 배포

각 프로세스에 대한 컨테이너를 생성함으로써 사용자는 유사한 프로세스를 새 앱과 빠르게 공유할 수 있다. 또한, 컨테이너를 추가하거나 이동하기 위해 OS를 부팅할 필요가 없으므로 배포 시간이 크게 단축된다. 이뿐만 아니라 배포 속도가 빨라 컨테이너에서 생성된 데이터를 비용 효율적으로 쉽게 생성하고 삭제할 수 있다.

Docker기술은 효율성을 중시하며 더 세분화되고 제어 가능한 마이크로서비스 기반 접근방식이다.

This post is licensed under CC BY 4.0 by the author.