Docker 소개: 아키텍처, 워크플로란 무엇입니까?

게시 됨: 2020-04-27

목차

가상화의 역사

얼마 전까지만 해도 서비스 배포는 느리고 고통스러운 프로세스였습니다. 이 프로세스에는 개발 팀이 코드를 작성한 다음 운영 팀이 금속 기계에 배포하는 과정이 포함되었습니다. 운영 팀은 코드가 작동하도록 하기 위해 언어 컴파일러, 라이브러리 및 패치를 찾아야 했기 때문에 작업을 중단했습니다.

프로세스에 오류나 버그가 있는 경우 처음부터 다시 시작해야 합니다. 개발 팀은 버그나 오류를 수정하고 운영 팀은 코드 배포를 다시 시작합니다.

하이퍼바이저가 개발되자 상황이 조금 나아졌습니다. 그렇다면 하이퍼바이저는 무엇입니까? 이는 특히 사용하지 않을 때 지속적으로 실행되거나 정기적으로 꺼질 수 있는 가상 머신(VM)의 모음입니다. 가상 머신은 오류 수정 및 코드 배포 프로세스를 가속화하여 확실히 도움이 되었지만 여전히 몇 가지 문제가 있었습니다. Docker 컨테이너는 진정한 게임 체인저로 등장했습니다. 가상 머신에 존재하는 문제도 해결했습니다.

읽기: Kubernetes와 비교 Docker: 주요 차이점

도커란?

전 세계 개발자들이 애플리케이션을 실행, 패키징 및 배포하는 데 사용하는 오픈 소스 플랫폼입니다. Docker는 애플리케이션의 첫 번째 단계부터 마지막 ​​단계까지의 캡슐화 프로세스를 매우 쉽고 효율적으로 만듭니다. Docker를 더 잘 이해하려면 컨테이너가 무엇이며 어떻게 작동하는지 이해해야 합니다.

컨테이너는 실행에 필요한 모든 것과 함께 제공되는 소프트웨어 일부의 독립 실행형 경량 실행 패키지일 뿐입니다. 컨테이너는 플랫폼에 의존하지 않습니다. 따라서 Docker는 Windows 및 Linux 기반 시스템과 모두 호환됩니다. 또한 필요한 경우 가상 머신에서 Docker를 실행할 수도 있습니다. Docker가 달성하려는 기본 목표는 개발자가 분산 아키텍처를 사용하여 마이크로 서비스 응용 프로그램을 실행할 수 있도록 하는 것입니다.

하드웨어 추상화를 수행하는 데 사용되는 가상 머신과 달리 Docker는 한 단계 더 올라가서 OS 수준에서 다른 리소스 집합의 추상화를 수행합니다. 이는 인프라 분리 및 애플리케이션 이식성을 비롯한 여러 이점을 제공합니다. 즉, 하드웨어 서버를 추상화하는 데 사용되는 가상 머신과 달리 Docker의 컨테이너 기반 접근 방식은 OS 코어를 추상화하여 작동합니다. 이는 경량 인스턴스를 더 빠르게 생성할 수 있는 가상화에 대한 훌륭한 대안입니다. Docker는 두 가지 버전으로 제공됩니다.

엔터프라이즈 에디션(EE):

이 버전은 IT 팀 및 기업 개발을 위해 특별히 설계되었습니다. 이 버전은 애플리케이션을 개발, 배송 및 실행하는 데 사용됩니다.

커뮤니티 에디션(CE):

이 버전은 컨테이너 기반 앱을 탐색하거나 Docker를 시작하는 개인 및 소규모 팀에서 사용합니다.

읽기: 전체 스택 프로젝트 아이디어 및 주제

도커 워크플로

이 섹션에서는 Docker 엔진과 다양한 구성 요소에 중점을 둘 것입니다. 이것은 Docker 아키텍처로 이동하기 전에 Docker가 작동하는 방식을 더 잘 이해하는 데 도움이 됩니다. Docker Engine은 이 컨테이너 기반 앱을 사용하여 다양한 기능을 수행할 수 있도록 개발할 수 있는 힘입니다. 아래 나열된 구성 요소를 사용하여 애플리케이션을 빌드, 패키지, 배송 및 실행할 수 있습니다.

1. 도커 데몬

이미지, 스토리지 볼륨, 네트워크 및 컨테이너를 관리하는 데 지속적으로 도움이 되는 백그라운드 프로세스입니다. 처리할 Docker API 요청을 항상 찾고 있습니다.

2. 도커 CLI

Docker Daemon과 상호 작용하는 인터페이스 클라이언트입니다. 개발자가 컨테이너 인스턴스 관리 프로세스를 단순화하는 데 도움이 됩니다. 개발자가 다른 유사한 응용 프로그램보다 Docker를 선호하는 주된 이유 중 하나입니다.

3. 도커 엔진 레스트 API

Docker 데몬과 애플리케이션 간의 상호 작용을 용이하게 합니다. 이러한 API에 액세스하려면 일반적으로 HTTP 클라이언트가 필요합니다.

도커 아키텍처

Docker 아키텍처는 클라이언트-서버 기반 아키텍처입니다. 아래에 언급된 세 가지 주요 구성 요소가 있습니다.

  1. 도커 호스트
  2. 도커 클라이언트
  3. 도커 레지스트리
  4. 도커 객체

초기 단계에서 Docker 클라이언트는 Docker 컨테이너를 개발, 실행 및 배포하는 데 필요한 많은 작업을 수행하는 데몬과 상호 작용합니다.

Docker 데몬과 클라이언트는 단일 시스템에서 실행되거나 개발자가 원격 데몬을 사용하여 로컬 Docker 클라이언트와 연결할 수 있습니다. Rest API는 Docker 데몬과 클라이언트 간의 통신을 설정하는 데 사용됩니다. 이것은 네트워크 인터페이스나 UNIX 소켓을 통해 수행할 수 있습니다.

이제 Docker 아키텍처 구성 요소에 대해 자세히 논의해 보겠습니다.

또한 읽어보십시오: 풀 스택 개발자가 되는 이유는 무엇입니까?

1. 도커 호스트

Docker 호스트는 Docker 데몬 실행을 담당합니다. Docker Daemon은 도커 빌드 및 도커 실행을 비롯한 API 요청을 지원합니다. 또한 이미지, 네트워크, 컨테이너 및 기타 Docker 개체를 관리합니다. 데몬은 서로 통신하여 서로 다른 Docker 서비스를 관리할 수 있습니다.

2. 도커 클라이언트

사용자가 Docker와 상호 작용하는 데 사용하는 방법일 뿐입니다. Docker 클라이언트는 docker run 및 Docker 빌드와 같은 요청을 Docker 데몬으로 보냅니다. Docker 클라이언트의 매우 중요한 기능은 여러 데몬과 통신할 수 있다는 것입니다.

3. 도커 레지스트리

레지스트리는 확장 가능하고 상태 비저장인 서버 측 응용 프로그램입니다. Docker 이미지를 저장할 뿐만 아니라 개발자가 이미지를 배포할 수도 있습니다. Docker는 자체 이미지를 만들 수 있는 유연성을 제공하거나 사용할 수 있는 공개 레지스트리가 있습니다. 이러한 레지스트리에는 Docker Cloud 및 Docker Hub 가 포함됩니다.

Docker의 구성은 이미지를 찾기 위해 항상 Docker Hub 및 기타 공개 레지스트리를 사용하도록 되어 있습니다. 그러나 자체 레지스트리를 만들 수 있는 옵션이 있습니다. 따라서 docker run 및 docker pull 명령을 사용하여 자체 레지스트리를 사용하여 필요한 이미지를 가져올 수 있습니다. Docker push 명령은 우리가 생성한 레지스트리에 필요한 이미지를 푸시합니다.

4. 도커 객체

Docker를 사용하면서 여러 객체를 사용하고 생성합니다. 이러한 개체에는 컨테이너, 이미지, 플러그인, 볼륨, 네트워크 등이 포함됩니다.

5. 도커 이미지

Docker 이미지는 컨테이너를 생성하는 데 필요한 지침을 제공하는 읽기 전용 템플릿에 불과합니다. 많은 경우 한 이미지가 다른 이미지와 연결되어 있습니다. 두 이미지를 구별하는 것은 추가된 사용자 정의 레이어입니다. 다르게 말하면 이미지를 컨테이너의 변경 불가능한 스냅샷으로 정의할 수도 있습니다. 이미지는 작고 가볍고 빠릅니다.

6. 도커 컨테이너

Docker 컨테이너를 이해하기 위해 다른 접근 방식을 따르겠습니다. 따라서 이미지를 클래스를 나타내는 데 사용할 수 있다면 컨테이너가 해당 인스턴스가 될 수 있습니다. 즉, 컨테이너는 런타임 개체입니다. Docker CLI 또는 API를 사용하여 컨테이너를 생성, 시작, 이동, 중지 또는 삭제할 수 있습니다. 컨테이너는 스토리지에 연결하고 하나 이상의 네트워크에 연결할 수도 있습니다. 컨테이너의 현재 상태에 따라 새 이미지를 만들 수도 있습니다.

결론

이제 Docker 아키텍처와 해당 구성 요소가 무엇인지 알았으므로 인기도가 높아지는 것을 더 잘 이해할 수 있습니다. 인프라 관리를 단순화하고 인스턴스를 더 빠르고 가볍고 탄력적으로 만들 수 있습니다.

전체 스택 코딩에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9개 이상의 프로젝트 및 과제를 제공합니다. IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

미래의 직업을 위한 준비

업계에서 신뢰할 수 있는 학습 - 업계에서 인정하는 인증.
지금 신청