[Docker] What is a Container?

DongGu·2021년 3월 10일
0

What is a Container?

A standardized unit of software

Package Software into Standardized Units for Development, Shipment and Deployment

컨테이너는 필요한 코드와 실행하기 위해 필요한 프로그램(dependencies)을 하나의 유닛으로 표준화하는 소프트웨어다. 하나로 묶어주기 때문에 빨리 작동시킬 수 있고, 다른 환경으로 옮기기 쉽다. 도커 컨테이너의 이미지는 가볍고, 독립적이고,실행가능한 소프트웨어 패키지다. 이 소프트웨어는 실행하기 위해 필요한 모든 것들(코드, 런타임, 시스템 도구, 라이브러리, 설정)을 포함한다.

컨테이너 이미지는 런타임 중에 컨테이너가 된다. 도커는 도커 엔진에서 실행될 때 이미지가 컨테이너가 된다. 리눅스, 위도우 기반의 어플리케이션 둘다 이용 가능하고, 컨테이너에 담긴 소프트웨어들은 항상 인프라에 관계없이 같이 실행된다. 컨테이너들은 소프트웨어들의 환경으로부터 분리시키고, 개발환경이 다름에도 불구하고 동일하게 작동하게 만든다.

도커 엔진에서 실행되는 도커 컨테이너는 다음과 같은 특징이 있다.

  • Standard
    도커는 컨테이너들의 산업표준화를 만들었다. 도커는 어떤 컨테이너들도 대체할 수 있다.

  • Lightweight
    컨테이너들은 기계의 운영체제 커널을 공유한다. 어플리케이션마다 각각의 운영체제를 요구하지 않는다. 이를 통해 높은 효율성 달성과 서버 비용 및 라이센스 비용을 낮춘다.

  • Secure
    컨테이너에서 어플리케이션은 안전하다. 그리고 도커는 컨테이너 산업에서 가장 강력한 기본 격리 기능을 제공한다.

Docker Containers Are Everywhere: Linux, Windows, Data center, Cloud, Serverless, etc.

도커 컨테이너는 도커엔진 오픈소스로서 2013년에 출시되었다.

도커 컨테이너는 컨테이너와 리눅스 월드의 구체성과 관련된 기존의 컴퓨팅 개념을 뒤집어놓았다. 특히 cgroups과 namespaces라고 불리는 원시 요소들에서. 도커 기술은 독특하다. 도커는 개발자의 요구사항, 시스템 운영자에 관심을 가지기 때문이다. 인프라로부터 어플리케이션에 필요한 프로그램(dependencies)를 분리시키 위해서다.

리눅스 세계에서 도커가 성공한 것은 마이크로소프트와의 파트너쉽을 체결하게 만들었다. 도커 컨테이너가 윈도우에서도 작동하게 되었다. 도커, 도커의 오프소스 프로젝트에서 이용할 수 이쓰 기술인 Moby는 모든 주요 데이터 센터 및 클라우드 공급업체에 의해 활용되어 왔다. 공급업자의 대부분은 도커를 그들의 컨테이너를 native IaaS 제품에 활용하고 있다. 게다가 인기 있는 서버리스 오픈소스 프레임워크는 도커 컨테이너 기술을 활용하고 있다.

Comparing Containers and Virtual Machines

컨테이너와 가상머신은 자원 분리, 할당을 통한 이득은 공통점이다. 컨테이너가 하드웨어 대신 운영체제를 가상화한다는 점에서 차이점이 있다. 컨테이너가 더 휴대성이 좋고 효율적이다.

CONTAINERS

컨테이너는 코드와 실행하기 위해 필요한 프로그램(dependencies)를 함께 묶는 어슬리케이션 계층의 추상화 작업이다. 다수의 컨테이너들은 같은 기계에서 작동시킬 수 있다. 그리고 운영체제 커널을 다른 컨테이너들과 함께 공유한다. 각 컨테이너는 사용자 공간에서 분리된 프로세스로 실행된다. 컨테이너들은 가상머신보다 용량을 작게 차지하고, 더 많은 어플리케이션을 다룰 수 있고, 가상머신, 운영체제를 더 적게 요구한다.

VIRTUAL MACHINES

가상머신은 하나의 서버를 여러대의 서버로 바꿔주는 물리적인 하드웨어의 추상화 작업이다. 하이퍼바이저는 가상머신을 생성하고 구동하는 소프트웨어다. 그 하이퍼바이저가 다수의 가상머신들이 하나의 기계에서 작동하는 것을 허가한다. 각각의 가상머신들은 운영체제, 어플리케이션, 필요한 바이너리 및 라이브러리들의 복사본을 포함한다. 가상머신은 새로 시작하기가 오래 걸린다.

Containers and Virtual Machines Together

컨테이너와 가상머신을 함께 쓰면 어플리케이션을 개발하고 관리하는 것에 있어서 상당한 유연성을 준다.

profile
코딩하는 신방과생

0개의 댓글