도커 컨테이너란? 기능, 구성 요소, 이점 및 진화
게시 됨: 2020-11-23'도커'는 소프트웨어를 패키지 형태로 제공하기 위한 PaaS(Platform Set as a Service) 제품으로, 이를 컨테이너라고 한다. 커널은 컨테이너, 파티션, 영역, 가상 커널 등과 같은 격리된 사용자 공간의 여러 인스턴스를 허용하는 OS 수준 가상화 표준을 사용합니다.
이들은 프로그램이 실행되는 방식을 시뮬레이션하는 실제 컴퓨터처럼 작동합니다. 일반 운영 체제에서는 컴퓨터 프로그램이 실행 중인 리소스를 볼 수 있습니다. 컨테이너에서는 프로그램이 실행될 때 컨테이너에 할당된 내용과 장치만 볼 수 있습니다.
오늘날 업계의 여러 개발자에게 Docker는 데스크톱과 클라우드 전반에서 컨테이너화된 앱을 개발하고 공유하는 데 허용되는 표준입니다. 컨테이너는 표준화된 소프트웨어 단위입니다. 개발자는 이를 사용하여 환경에서 앱을 분리합니다. 경량 특성으로 인해 여러 도커 컨테이너(일반적으로 호스트당 8개 이상의 컨테이너)를 단일 서버 또는 VM에서 동시에 실행할 수 있습니다.
Docker는 개발자가 가볍고 이식 가능한 소프트웨어 컨테이너를 구축하기 위한 것입니다. 컨테이너 패키지는 간소화된 애플리케이션 개발, 배포 및 테스트를 용이하게 합니다. 그들은 처음에 Linux OS용 Docker를 만들었습니다. 그러나 이제 Linux, Windows, Datacenter, Cloud, Serverless 등 다양한 OS에서 실행됩니다.
목차
진화
오픈 소스 프로젝트인 Docker는 2013년에 시작되었습니다. Docker Inc.는 클라우드 네이티브를 채택하기 위해 이를 추가로 개발했으며, 그 결과 소프트웨어 도메인에서 컨테이너화 및 마이크로서비스에 대한 추세가 나타났습니다. Docker는 2017년에 '엔터프라이즈 에디션'을 출시했습니다.
최신 소프트웨어 개발은 공통 호스트 또는 클러스터에서 애플리케이션을 관리하는 문제에 직면해 있습니다. 작동 또는 유지 관리와 관련하여 간섭 및 상호 운용성을 피하기 위해 애플리케이션을 서로 분리할 필요가 있습니다. 응용 프로그램을 실행하는 데 필요한 패키지, 라이브러리, 바이너리 및 기타 소프트웨어 구성 요소의 연결은 응용 프로그램 개발 관리에 중요한 것으로 간주됩니다.

이 문제를 해결하기 위한 기존의 접근 방식은 가상 머신(VM)을 사용하는 것이었습니다. 컴퓨터 시스템을 에뮬레이트하는 데 사용되는 가상 머신입니다.
인기 읽기: Docker 프로젝트 아이디어 및 주제
혜택
이러한 VM은 응용 프로그램을 동일한 하드웨어에 유지하지만 가상으로 분리합니다. 소프트웨어 구성 요소 간에 발생하는 충돌을 제어하고 하드웨어 리소스를 최소화하는 것을 목표로 합니다. 그러나 시간이 지남에 따라 VM은 고유한 OS를 필요로 하기 때문에 메모리 크기 면에서 부피가 커졌습니다.
계속 증가하는 메모리 요구 사항과 관련하여 구현에는 특수 하드웨어, 소프트웨어 또는 이 둘의 조합이 포함될 수 있으므로 동일한 유지 관리 및 업그레이드가 어려워졌습니다.
다음은 Docker 컨테이너의 이점 중 일부입니다.
- 환경 표준화 – 프로덕션 환경을 공동으로 공유하여 개발, 테스트 또는 유지 관리할 수 있습니다.
- 더 빠르고 일관된 구성 – 이미지 구성을 통해 권한이 없는 사용자가 빠르게 실행할 수 있습니다.
- DevOps의 더 빠른 채택 – 주요 자동화 단계인 배포, 운영 및 최적화를 지원합니다.
- 안전한 재해 복구 – 최소한의 복구 시간으로 DR의 드래그 감소.
필독: 인도의 Docker 급여
작업
모든 컨테이너는 단일 운영 체제 커널에 의해 실행되므로 가상 머신보다 적은 리소스를 사용합니다. 동일한 하드웨어에 조밀하게 패킹된 컨테이너는 운영 체제의 기본 커널을 여러 애플리케이션과 공유하면서도 실행 환경을 서로 격리합니다. 컨테이너는 VM보다 훨씬 적은 리소스를 사용하고 빠릅니다.
이제 Linux 컨텍스트에서 작업을 살펴보겠습니다. Docker는 애플리케이션과 해당 종속성을 가상 컨테이너에 패키징하고 로컬 프레미스, 공용 또는 사설 클라우드와 같은 다양한 구성의 Linux 서버에서 실행할 수 있도록 합니다. Docker는 커널의 공유 리소스를 사용하고 VM 오버헤드를 절약합니다.

컨테이너는 서로 격리되어 있습니다. 또한 특정 소프트웨어, 라이브러리 및 구성 파일 세트를 번들로 제공합니다. 그들은 잘 정의된 채널을 사용하여 서로 통신할 수 있습니다. 따라서 Docker 컨테이너는 컨테이너 및 컨테이너 기반 애플리케이션을 만들기 위한 오픈 소스 소프트웨어 개발 플랫폼으로 간주됩니다.
개발자가 앱 개발 및 실행을 위한 복잡한 인프라 요구 사항에 신경 쓰지 않고 애플리케이션을 생성, 실행 및 조작할 수 있는 플랫폼을 제공하는 클라우드 컴퓨팅 서비스 범주입니다.

Docker 'run' 명령은 로컬 도커 호스트에서 컨테이너를 만들고 시작하는 데 사용됩니다. 한편, 도커 '서비스'는 도커의 클라우드 모드에서 실행되는 동일한 구성의 하나 이상의 컨테이너를 의미한다. 사용자가 컨테이너를 회전시켜 조옮김을 형성하는 Docker 실행과 유사합니다.
함수
컨테이너가 OS에서 애플리케이션을 분리함에 따라 사용자는 깨끗하고 최소한의 OS를 사용하여 다른 모든 것을 둘 이상의 격리된 컨테이너에서 실행할 수 있습니다. 컨테이너에서 추상화된 운영 체제를 사용하면 컨테이너 런타임 환경을 지원하는 모든 서버에서 컨테이너를 이동할 수 있습니다.
구성품
- Docker 엔진: 컨테이너를 호스팅하는 소프트웨어입니다. Docker의 핵심이자 컨테이너 생성 및 실행을 담당하는 기본 클라이언트-서버 엔진입니다.
- Dockerfile: Docker 컨테이너는 Dockerfile로 시작합니다. Docker 이미지(인스턴스)를 빌드하는 데 사용되는 지침의 단순화된 구문으로 작성된 텍스트 파일입니다. 모든 도커 컨테이너는 지정된 Dockerfile로 시작합니다.
- Docker 이미지: Dockerfile이 작성된 후 Docker 빌드는 Dockerfile 지침에 지정된 대로 정적 이미지를 생성하는 데 사용됩니다. Docker 이미지는 기본적으로 컨테이너의 스냅샷인 이식 가능한 파일의 예입니다. 여기에는 소프트웨어 구성 요소에 대한 컨테이너에서 실행하는 사양 집합이 포함되어 있습니다. 컨테이너 이미지는 Docker 컨테이너에서 런타임 시 컨테이너가 되고 이미지는 Docker Engine에서 실행될 때 컨테이너가 됩니다.
- Docker 실행: '실행' 명령은 컨테이너를 시작하는 데 사용됩니다. 모든 컨테이너는 이미지의 특정 사례입니다. 컨테이너는 즉석에서 실행되고 중지 및 다시 시작될 수 있으므로 본질적으로 즉각적입니다. 이미지의 컨테이너 인스턴스를 두 개 이상 동시에 실행할 수 있습니다.
- 도커 레지스트리: 도커 이미지를 위한 리포지토리입니다. 등록된 클라이언트가 이미지를 공유할 수 있는 곳입니다. 개발에 사용할 이미지를 다운로드('풀'이라고 함)하거나 기존 이미지를 업로드('푸시')할 수 있습니다. 또한 주어진 이벤트를 기반으로 알림을 생성할 수 있습니다. 레지스트리 유형은 공개 또는 비공개일 수 있습니다. Docker Hub 및 Docker Cloud는 주요 공개 레지스트리의 예입니다. Docker Hub는 Docker가 이미지를 조회하는 기본 레지스트리입니다.
- Docker 허브: 컨테이너를 공유하고 관리하는 데 사용되는 SaaS 저장소입니다. 오픈 소스 프로젝트에 소스가 있는 공식 Docker 이미지, 소프트웨어 공급업체 및 사용자가 공개 도메인에 게시한 비공식 이미지를 공유합니다.
결론
컨테이너는 운영 체제를 공유하는 반면 VM은 가상 하드웨어를 에뮬레이트하도록 설계되었습니다. Docker 컨테이너는 단일 운영 체제 커널에서 여러 애플리케이션을 실행해야 하는 상황에 적합합니다.
다양한 운영 체제 버전에서 실행해야 하는 애플리케이션이나 서버가 있는 경우 VM이 필요합니다. 오늘날 시나리오의 빠른 기술 발전 동안 경량 리소스인 Docker는 가상 머신에 대한 선호되는 대안입니다.
빅 데이터에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9개 이상의 프로젝트 및 과제, IIIT- B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.