Docker 아키텍처 개요 및 Docker 구성 요소 [초보자용]

게시 됨: 2020-12-31

최근에 컨테이너의 세계를 접했다면 컨테이너화 이점을 제공하기 위해 함께 작동하는 기본 요소를 이해하는 것이 나쁘지 않을 것입니다. 그러나 그 전에 여러분이 던질 수 있는 질문이 있습니다. 컨테이너는 어떤 문제를 해결합니까?

일반적인 개발 수명 주기에서 애플리케이션을 빌드한 후 개발자는 테스트 목적으로 이를 테스터에게 보냅니다. 그러나 개발 환경과 테스트 환경이 다르기 때문에 코드가 작동하지 않습니다.

이제 이에 대한 두 가지 솔루션이 주로 있습니다. 가상 머신을 사용하거나 Docker와 같은 컨테이너화된 환경을 사용하는 것입니다. 예전에는 조직에서 여러 애플리케이션을 실행하기 위해 VM을 배포했습니다.

그렇다면 VM에 대한 컨테이너화를 도입한 이유는 무엇입니까? 이 기사에서는 이러한 모든 질문에 대한 자세한 설명을 제공합니다.

이 환상적인 도구 뒤에는 똑같이 잘 생각한 아키텍처가 있어야 합니다. Docker 아키텍처 구성 요소에 대해 알아보기 전에 Docker 컨테이너와 이 컨테이너가 VM보다 우수한 점을 이해합시다.

목차

도커 컨테이너

Docker는 컨테이너라고 하는 느슨하게 격리되고 포함된 환경에서 애플리케이션을 생성, 패키징 및 실행할 수 있는 기능을 제공하는 오픈 소스 프로젝트입니다.

Docker 플랫폼에서 제공하는 모든 격리 및 보안을 통해 특정 호스트에서 많은 컨테이너를 동시에 실행할 수 있습니다.

Docker 컨테이너가 널리 채택되는 이유는 다음과 같습니다.

  • 이를 통해 개발자는 로컬에서 코드를 작성하고 컨테이너를 사용하여 팀과 작업을 공유할 수 있습니다.
  • 그들은 컨테이너인 테스트 환경에 애플리케이션을 푸시하고 자동화된 테스트를 실행할 수 있습니다.
  • 버그가 발견되면 개발 환경 내에서 수정한 다음 다시 배포할 수 있습니다.
  • 수정 사항을 얻는 것은 업데이트된 이미지를 프로덕션 환경에 푸시하는 것만큼 간단합니다.

주제에 대해 자세히 알아보기 전에 기존 가상화 방식과 차세대 컨테이너화 방식을 구별해야 합니다.

가상 머신 대 Docker 컨테이너

DevOps 사례에 컨테이너화를 사용하기 전에는 가상 머신이 가장 중요했습니다. 우리는 각 애플리케이션에 대한 VM을 생성하곤 했습니다.

VM이 거의 모든 요구 사항을 충족했지만 VM 사용의 단점은 번거롭고 기본 호스트 시스템에서 필요한 모든 메모리와 하드웨어 리소스를 할당한다는 것이었습니다.

그러나 컨테이너는 OS 수준 가상화를 제공하고 일반적으로 더 적은 메모리를 필요로 하기 때문에 컨테이너화에서는 쉽게 피할 수 있습니다. 따라서 인기를 얻었고 결국 DevOps 커뮤니티에서 채택했습니다.

이미지 소스

위의 다이어그램은 VM과 컨테이너의 아키텍처가 어떻게 다른지, 컨테이너가 이제 일상적인 개발 프로세스에서 VM을 능가하는 이유를 설명합니다. VM과 달리 컨테이너는 컨테이너 엔진 위에 위치하여 OS 수준 가상화를 제공하므로 많은 리소스를 절약할 수 있습니다.

도커 엔진

Docker의 다양한 아키텍처 구성 요소를 논의하기 전에 Docker의 워크플로를 이해하는 것이 중요합니다. Docker 시스템이 작동하는 방식에 대한 아이디어를 제공하는 Docker 엔진과 해당 여러 부분을 살펴보겠습니다. Docker 엔진은 기본적으로 세 가지 주요 구성 요소가 있는 일반적인 클라이언트-서버 애플리케이션입니다.

서버(데몬)

Docker 데몬은 백그라운드에서 실행되고 모든 Docker 개체를 관리하는 연속 프로세스입니다. 클라이언트가 제출한 Docker API 요청을 수신하고 지속적으로 처리합니다.

나머지 API

Docker 클라이언트가 Docker 데몬과 상호 작용하는 데 사용하는 인터페이스입니다. 클라이언트는 API를 통해 데몬과 통신할 수 있으며 지침을 제공할 수 있습니다.

고객

Docker 클라이언트는 데몬과 상호 작용할 수 있는 명령줄 인터페이스(CLI)입니다. 컨테이너 관리의 전체 프로세스를 단순화합니다.

이미지 소스

Docker 클라이언트(CLI와 같은 HTTP 클라이언트일 수 있음)는 컨테이너를 생성, 실행 및 공유하는 무거운 작업을 수행하는 데몬과 통신합니다. 클라이언트와 데몬은 동일한 시스템에서 실행되거나 클라이언트를 원격 데몬에 연결할 수 있습니다. 클라이언트와 데몬은 소켓 또는 네트워크 인터페이스를 통해 Rest API를 사용하여 서로 통신합니다. Docker 클라이언트는 사용자가 컨테이너, 이미지, 볼륨 등과 같은 Docker 개체를 관리하는 데 도움이 됩니다. Docker 프로젝트에 대해 자세히 알아보기

세계 최고의 대학 에서 소프트웨어 개발 과정 에 등록하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

건축 구성요소

앞에서 설명한 것처럼 Docker는 클라이언트가 Rest API를 통해 데몬과 통신하는 클라이언트-서버 아키텍처를 사용합니다. Docker 아키텍처는 아래에서 설명하는 여러 구성 요소로 구성됩니다.

이미지 소스

악마

클라이언트가 시작한 API 요청을 수신 대기하고 컨테이너, 이미지, 볼륨 및 네트워크를 포함한 Docker 개체를 관리합니다. 또한 다른 데몬과 통신하여 Docker 서비스, 특히 대규모 Docker 네트워크를 관리할 수도 있습니다.

고객

Docker 사용자는 Docker 클라이언트를 사용하여 데몬과 통신할 수 있습니다. 사용자는 CLI와 같은 클라이언트를 사용하여 "Docker run ..."과 같은 명령을 실행한 다음 이러한 명령을 Docker(데몬)에 전달하여 궁극적으로 수행합니다. Docker 클라이언트는 여러 데몬과 통신합니다.

레지스트리

Docker 이미지를 저장하며 공개 또는 비공개일 수 있습니다. Docker는 기본적으로 Docker Hub에서 이미지를 찾도록 구성되어 있습니다. 클라이언트가 pull 또는 run 명령을 실행하면 이미지가 리포지토리에서 가져옵니다.

도커 객체

Docker로 작업할 때 컨테이너, 이미지, 볼륨, 네트워크 등과 같은 여러 개체와 상호 작용합니다.

이러한 개체 중 일부는

이미지

읽기 전용 템플릿이며 컨테이너 생성 지침이 포함되어 있습니다. 또한 컨테이너 기능을 설명하는 메타데이터도 포함합니다. 사용자는 Docker 레지스트리에서 이미지를 가져오고 그 위에 쓰기 가능한 이미지 레이어를 생성하여 애플리케이션의 요구 사항에 맞는 맞춤형 이미지를 생성할 수 있습니다. 일부 인기 있는 아이디어로는 Ubuntu, Nginx, MySQL 등이 있습니다. 이러한 아이디어는 팀 간에 공유할 수 있어 애플리케이션에서 공동 작업하는 데 도움이 됩니다.

컨테이너

컨테이너는 애플리케이션에 대해 격리된 환경을 제공하는 이미지의 인스턴스입니다. 그들은 빌드에 사용된 이미지에 의해 정의된 리소스에만 액세스할 수 있습니다.

회로망

Docker Networks를 사용하면 동일한 네트워크에 있는 격리된 컨테이너가 리소스를 통신하고 공유할 수 있습니다. Docker에서 제공하는 일부 네트워크에는 브리지, 호스트, 오버레이, Macvlan 등이 있습니다.

저장

Docker를 사용하면 드라이버를 사용하여 쓰기 가능한 컨테이너 계층 내에 데이터를 저장할 수 있습니다. Docker는 영구 저장소에 대해 Docker 볼륨, 볼륨 컨테이너, 디렉터리 마운트 및 저장소 플러그인의 네 가지 옵션을 허용합니다.

가장 널리 사용되는 스토리지 옵션은 볼륨입니다. 호스트 파일 시스템에 배치되며 여러 컨테이너가 이러한 볼륨 내에서 데이터를 공유하고 쓸 수 있도록 합니다.

결론

Docker는 기본 최첨단 기술 세트를 사용하여 사용자에게 효율적인 컨테이너화 서비스를 제공합니다. 의심할 여지 없이 최근 몇 년 동안 Docker는 개발자 커뮤니티에서 주목을 받기 시작했으며 앞으로도 계속 그럴 것입니다.

자원 효율성, 확장성 등 컨테이너가 제공하는 다양한 이점으로 인해 덱의 상위권에 있는 위치를 올바르게 확보합니다.

이 기사에서는 Docker 워크플로, 아키텍처 및 기본 기술과 같은 Docker의 가장 필수적인 개념, 컨테이너, 이미지, 레지스트리, 네트워크 등과 같은 여러 Docker 개체에 대해 논의했습니다.

이제 Docker Containers의 아름다운 세계에 깊이 빠져들 수 있습니다. 이제 다양한 Docker 리소스가 함께 작동하여 애플리케이션을 원활하게 빌드, 배포 및 공유할 수 있는 다양한 기능을 제공하는 방법을 더 잘 이해해야 합니다.

upGrad로 Docker 아키텍처 배우기

upGrad와 함께 빠른 속도로 애플리케이션 구축 여정을 시작하십시오.

upGrad 교육 Pvt. Ltd.는 DevOps에서 소프트웨어 개발 전문화에 대한 독점 과정을 제공하여 지망자들이 거대 IT 기업에 흡수될 준비가 되도록 합니다.

코스 하이라이트

upGrad의 빅 데이터 소프트웨어 개발 전문 PG 프로그램은 12개월로 나누어 신중하게 설계된 온라인 과정입니다.

이 커리큘럼에서 여러분은

  • 데이터 과학 및 기계 학습 콘텐츠에 독점적으로 액세스
  • 라이브 프로젝트 및 과제 작업
  • 360도 경력 지원 받기
  • 10가지 프로그래밍 언어 및 도구 배우기
  • 전담 학생 멘토링 받기

upGrad로 DevOps 애플리케이션 개발을 준비하십시오.

왜 기다려

오늘 신청하십시오!

미래의 직업을 위한 준비

지금 소프트웨어 공학 석사 지원