[Docker] What is a Container?

컨테이너란?

소프트웨어의 표준화된 단위

https://www.docker.com/resources/what-container

Docker

소프트웨어를 개발, 발송, 배포를 위한 표준화된 단위로 패키지화

컨테이너는 코드와 그 모든 의존성을 패키징하여 애플리케이션이 한 컴퓨팅 환경에서, 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위다. 도커 컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리, 설정 등 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 경량의 독립 실행형 소프트웨어 패키지다.

컨테이너 이미지는 런타임에 컨테이너가 되고, Docker 컨테이너의 경우 이미지가 Docker Engine에서 실행될 때 컨테이너가 된다. Linux 기반 애플리케이션과 Windows 기반 애플리케이션 모두에서 사용할 수 있는 컨테이너형 소프트웨어는 인프라에 관계없이 항상 동일하게 실행된다. 컨테이너는 소프트웨어를 그것의 환경으로부터 격리시키고, 개발 및 스테이징의 차이에도 불구하고 그것이 일률적으로 작동하도록 보장한다.

도커 엔진에서 실행되는 도커 컨테이너:

  • 표준(Standard): 도커는 컨테이너에 대한 산업 표준을 만들어 어디서든 휴대할 수 있도록 했다.
  • 경량(Lightweight): 컨테이너가 시스템의 OS 시스템 커널을 공유하므로 애플리케이션당 OS가 필요하지 않으므로 서버 효율성 향상 및 서버 및 라이센스 비용 절감
  • 보안(Secure): 컨테이너에서 애플리케이션이 더 안전하며, 도커가 업계에서 가장 강력한 기본 격리 기능을 제공

도커 컨테이너는 어디에나 있음: Linux, Windows, 데이터 센터, 클라우드, 서버리스 등

도커 컨테이너 기술은 2013년 오픈소스 도커 엔진으로 출시됐다.

컨테이너를 중심으로, 특히 cgroup과 네임스페이스로 알려진 원시 요소인 Linux 세계에서 기존의 컴퓨팅 개념을 활용했다. 도커의 기술은 애플리케이션 의존성과 기반구조를 분리하기 위한 개발자와 시스템 운영자의 요구사항에 초점을 맞추고 있기 때문에 독특하다.

Linux 환경에서 성공하면서 Docker 컨테이너와 그 기능을 Windows Server(때로는 Docker Windows 컨테이너라고도 함)에 가져온 Microsoft와의 파트너십이 추진되었다.

Docker와 Docker의 오픈 소스 프로젝트에서 이용할 수 있는 기술인 Moby는 모든 주요 데이터 센터 공급업체와 클라우드 공급자에 의해 활용되었다. 이러한 제공자 중 많은 수가 컨테이너 고유 IaaS 제품에 도커를 활용하고 있다. 또한, 선도적인 오픈 소스 서버리스 프레임워크는 Docker 컨테이너 기술을 활용한다.

컨테이너와 가상 시스템 비교

컨테이너와 가상 머신은 리소스 분리 및 할당 이점이 유사하지만 컨테이너가 하드웨어 대신 운영 체제를 가상화하기 때문에 다르게 기능한다. 컨테이너는 더 휴대성이 좋고 효율적이다.

컨테이너

컨테이너는 코드와 종속성을 함께 패키징하는 애플리케이션 계층의 추상화다. 여러 컨테이너가 동일한 시스템에서 실행될 수 있고 OS 커널을 다른 컨테이너와 공유할 수 있으며, 각각은 사용자 공간에서 격리된 프로세스로 실행된다. 컨테이너가 VM보다 더 적은 공간(컨테이너 이미지는 일반적으로 수십MB의 크기), 더 많은 애플리케이션을 처리할 수 있고 더 적은 VM 및 운영 체제를 필요로 한다.

가상 시스템

가상 머신(VM)은 물리적 하드웨어를 추상화하여 하나의 서버를 많은 서버로 전환하는 것이다. 하이퍼바이저를 통해 단일 시스템에서 여러 VM을 실행할 수 있다. 각 VM에는 운영 체제, 애플리케이션, 필요한 이진 파일 및 라이브러리의 전체 복사본이 포함되며, 여기에는 수십 GB가 소요된다. VM의 부팅 속도도 느릴 수 있다.

컨테이너와 가상 시스템을 함께 사용

컨테이너와 VM을 함께 사용하여 애플리케이션 구축 및 관리에 상당한 유연성 제공한다.

컨테이너 표준 및 업계 리더십

2013년 도커의 출시는 소프트웨어 컨테이너의 민주화를 통해 애플리케이션 개발에 혁명을 일으켰다. Docker는 이동성이 좋고 유연하며 배치하기 쉬운 Linux 컨테이너 기술을 개발했다. Docker는 libcontainer를 오픈소스화하고 전세계 기부자 커뮤니티와 파트너십을 맺고 개발을 진행했다. 도커는 2015년 6월 컨테이너 생태계가 성장하고 성숙함에 따라 표준화를 확립할 수 있도록 현재 runc로 알려진 컨테이너 이미지 사양과 런타임 코드를 OCI(Open Container Initiative)에 기증했다.

이러한 진화에 따라 도커는 2017년 도커가 클라우드 네이티브 컴퓨팅 재단(CNCF)에 기부한 containerd 프로젝트로 계속 환원하고 있으며, containerd는 runc를 활용한 업계 표준 컨테이너 런타임으로 단순성, 견고성, 휴대성을 강조하여 만들어졌다. containerd는 도커 엔진의 핵심 컨테이너 런타임이다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

containerd 소개

단순성(simplicity), 견고성(robustness), 이식성(portability)에 중점을 둔 업계 표준 컨테이너 런타임 containerd가 CNCF에서 졸업! 2019년 2월 28일 현재, containerd는 Kubernetes,…
Read More

[Docker] Docker overview

Docker는 애플리케이션 개발, 발송, 실행을 위한 개방형 플랫폼이다. Docker를 사용하면 소프트웨어를 신속하게 제공할 수 있도록 애플리케이션과 인프라를 분리할…