Docker 아키텍처 : 왜 중요한가요?



이 블로그는 도커 아키텍처와 다양한 구성 요소에 대해 설명합니다. 인기 이유를 알려주는 도커 기능을 강조합니다.

우리 중 많은 사람들은 Docker가 . 따라서이 놀라운 도구 뒤에는 놀라운 아키텍처가 있어야합니다. 이 블로그에서는 Docker 아키텍처에 대해 알아야 할 모든 것을 다룰 것입니다. 여기에서 논의 할 요점은 다음과 같습니다.

  1. 기존 가상화와 Docker
  2. Docker의 워크 플로우
  3. Docker 아키텍처

기존 가상화 대 Docker

VM (가상 머신)이란 무엇입니까?

VM은 하드웨어 서버를 에뮬레이트하는 가상 서버입니다. 가상 머신은 시스템의 물리적 하드웨어에 의존하여 애플리케이션을 설치하는 것과 똑같은 환경을 에뮬레이션합니다. 사용 사례에 따라 시스템 가상 머신 (전체 OS를 프로세스로 실행하여 가상 머신 대신 실제 머신을 대체 할 수 있음)을 사용하거나 가상 머신에서 컴퓨터 애플리케이션 만 실행할 수있는 가상 머신을 처리 할 수 ​​있습니다. 환경.





이전에는 가상 머신을 만들었는데 각 가상 머신에는 많은 공간을 차지하고 무겁게 만드는 OS가있었습니다.

Docker 란 무엇입니까?

Docker는 컨테이너로 알려진 소프트웨어 개발 솔루션을 제공하는 오픈 소스 프로젝트입니다. Docker를 이해하려면 컨테이너가 무엇인지 알아야합니다. 에 따르면 Docker , 컨테이너는 실행에 필요한 모든 것을 포함하는 소프트웨어의 경량 독립 실행 형 패키지입니다.



컨테이너는 플랫폼 독립적이므로 Docker는 Windows 및 Linux 기반 플랫폼 모두에서 실행될 수 있습니다. 실제로 Docker는 필요한 경우 가상 머신 내에서 실행할 수도 있습니다. Docker의 주요 목적은 분산 아키텍처에서 마이크로 서비스 애플리케이션을 실행할 수 있도록하는 것입니다.

가상 머신과 비교할 때 Docker 플랫폼은 리소스 추상화를 하드웨어 수준에서 운영 체제 수준으로 이동합니다. 이를 통해 컨테이너의 다양한 이점을 실현할 수 있습니다. 애플리케이션 이식성, 인프라 분리 및 자체 포함 된 마이크로 서비스.

즉, 가상 머신은 전체 하드웨어 서버를 추상화하는 반면 컨테이너는 운영 체제 커널을 추상화합니다. 이것은 가상화에 대한 완전히 다른 접근 방식이며 훨씬 더 빠르고 가벼운 인스턴스를 만듭니다..



vm vs docker-Docker 아키텍처-Edureka

Docker의 워크 플로우

먼저 시스템 작동 방식에 대한 기본적인 아이디어를 얻도록 Docker Engine과 그 구성 요소를 살펴 보겠습니다. Docker Engine을 사용하면 다음 구성 요소를 사용하여 애플리케이션을 개발, 조립, 제공 및 실행할 수 있습니다.

  1. Docker 데몬 : Docker 이미지, 컨테이너, 네트워크 및 스토리지 볼륨을 관리하는 지속적인 백그라운드 프로세스입니다. Docker 데몬은 Docker API 요청을 지속적으로 수신하고 처리합니다.

  2. Docker Engine REST API : API는 애플리케이션에서 Docker 데몬과 상호 작용하는 데 사용됩니다. HTTP 클라이언트에서 액세스 할 수 있습니다.

  3. Docker CLI : Docker 데몬과 상호 작용하기위한 명령 줄 인터페이스 클라이언트입니다. 컨테이너 인스턴스 관리 방법을 크게 단순화하고 개발자가 Docker 사용을 좋아하는 주요 이유 중 하나입니다.

    객체의 배열 자바

처음에 Docker 클라이언트는 Docker 컨테이너를 배포 할뿐만 아니라 건물의 무거운 작업을 수행하는 Docker 데몬과 통신합니다. 기본적으로 Docker 클라이언트와 데몬은 모두 동일한 시스템에서 실행될 수 있습니다. Docker 클라이언트를원격 Docker 데몬. 또한 REST API를 사용하여 Docker 클라이언트 및 데몬은 UNIX 소켓 또는 네트워크 인터페이스를 통해 통신합니다.

Docker 아키텍처

Docker의 아키텍처는 클라이언트-서버 모델을 사용하며 Docker의 클라이언트, Docker 호스트, 네트워크 및 저장소 구성 요소, Docker 레지스트리 / 허브로 구성됩니다. 각각에 대해 자세히 살펴 보겠습니다.

Docker의 클라이언트

Docker 사용자는 클라이언트를 통해 Docker와 상호 작용할 수 있습니다. 도커 명령이 실행되면 클라이언트는이를 수행하는 dockerd 데몬으로 보냅니다. Docker API는 Docker 명령에서 사용됩니다. Docker 클라이언트가 둘 이상의 데몬과 통신 할 수 있습니다.

Docker 호스트

Docker 호스트는 애플리케이션을 실행하고 실행할 수있는 완전한 환경을 제공합니다. Docker 데몬, 이미지, 컨테이너, 네트워크 및 스토리지로 구성됩니다. 앞서 언급했듯이 데몬은 모든 컨테이너 관련 작업을 담당하며 CLI 또는REST API. 또한 다른 데몬과 통신하여 서비스를 관리 할 수도 있습니다.

Docker 객체

1. 이미지

이미지는 컨테이너를 빌드 할 수있는 읽기 전용 바이너리 템플릿 일뿐입니다. 또한 컨테이너의 기능과 요구 사항을 설명하는 메타 데이터도 포함됩니다. 이미지는 애플리케이션을 저장하고 배송하는 데 사용됩니다. 이미지를 자체적으로 사용하여 컨테이너를 빌드하거나 사용자 지정하여 추가 요소를 추가하여 현재 구성을 확장 할 수 있습니다.

프라이빗 컨테이너 레지스트리를 사용하여 엔터프라이즈 내의 팀간에 컨테이너 이미지를 공유하거나 Docker Hub와 같은 공용 레지스트리를 사용하여 전 세계와 공유 할 수 있습니다. 이미지는 이전에는 불가능했던 방식으로 개발자 간의 협업을 가능하게하므로 Docker 경험의 핵심 요소입니다.

2. 컨테이너

컨테이너는 애플리케이션을 실행하는 일종의 캡슐화 된 환경입니다. 컨테이너는 이미지 및 네트워크 연결 및 스토리지 옵션을 포함하되 이에 국한되지 않는 컨테이너 시작시 제공되는 추가 구성 옵션으로 정의됩니다. 컨테이너에 이미지를 빌드 할 때 추가 액세스가 정의되지 않는 한 컨테이너는 이미지에 정의 된 리소스에만 액세스 할 수 있습니다.

컨테이너의 현재 상태를 기반으로 새 이미지를 만들 수도 있습니다. 컨테이너는 VM보다 훨씬 작기 때문에 몇 초 만에 회전 할 수 있으며 훨씬 더 나은 서버 밀도를 제공합니다.

3. 네트워크

Docker 네트워킹은 모든 격리 된 컨테이너가 통신하는 통로입니다. Docker에는 주로 5 개의 네트워크 드라이버가 있습니다.

    1. 다리 : 컨테이너의 기본 네트워크 드라이버입니다. 애플리케이션이 독립형 컨테이너, 즉 동일한 Docker 호스트와 통신하는 여러 컨테이너에서 실행중인 경우이 네트워크를 사용합니다.

    2. 주최자 :이 드라이버는 도커 컨테이너와 도커 호스트 간의 네트워크 격리를 제거합니다. 호스트와 컨테이너간에 네트워크 격리가 필요하지 않을 때 사용할 수 있습니다.

    3. 위에 까는 것 :이 네트워크를 통해 스웜 서비스가 서로 통신 할 수 있습니다. 컨테이너가 다른 Docker 호스트에서 실행되기를 원하거나 여러 애플리케이션에서 스웜 서비스를 구성하려는 경우에 사용합니다.

    4. 없음 :이 드라이버는 모든 네트워킹을 비활성화합니다.

    5. 맥 블란 :이 드라이버는 컨테이너에 MAC 주소를 할당하여 물리적 장치처럼 보이게합니다. Mac 주소를 통해 컨테이너 간의 트래픽을 라우팅합니다. 예를 들어 VM 설정을 마이그레이션하는 동안 컨테이너가 물리적 장치처럼 보이도록하려는 경우이 네트워크를 사용합니다.

4. 저장

컨테이너의 쓰기 가능한 계층 내에 데이터를 저장할 수 있지만 저장소 드라이버가 필요합니다. 비 영구적이므로 컨테이너가 실행되지 않을 때마다 사라집니다. 또한이 데이터를 전송하는 것은 쉽지 않습니다. 영구 스토리지와 관련하여 Docker는 네 가지 옵션을 제공합니다.

    1. 데이터 볼륨 : 볼륨 이름을 변경하고 볼륨을 나열하고 볼륨과 연관된 컨테이너를 나열하는 기능과 함께 영구 스토리지를 생성하는 기능을 제공합니다. 데이터 볼륨은 컨테이너 복사시 쓰기 메커니즘 외부의 호스트 파일 시스템에 배치되며 상당히 효율적입니다.

    2. 볼륨 컨테이너 : 전용 컨테이너가 볼륨을 호스팅하고 해당 볼륨을 다른 컨테이너에 마운트하는 대체 접근 방식입니다. 이 경우 볼륨 컨테이너는 애플리케이션 컨테이너와 독립적이므로 둘 이상의 컨테이너에서 공유 할 수 있습니다.

    3. 디렉토리 마운트 : 또 다른 옵션은 호스트의 로컬 디렉토리를 컨테이너에 마운트하는 것입니다. 이전에 언급 한 경우 볼륨은 Docker 볼륨 폴더 내에 있어야하지만 디렉토리 마운트의 경우 호스트 시스템의 모든 디렉토리를 볼륨의 소스로 사용할 수 있습니다.

    4. 스토리지 플러그인 : 스토리지 플러그인은 외부 스토리지 플랫폼에 연결하는 기능을 제공합니다. 이러한 플러그인은 호스트의 스토리지를 스토리지 어레이 또는 어플라이언스와 같은 외부 소스에 매핑합니다. Docker의 플러그인 페이지에서 저장소 플러그인 목록을 볼 수 있습니다.

Docker의 레지스트리

Docker 레지스트리는 이미지를 저장하고 다운로드 할 수있는 위치를 제공하는 서비스입니다. 즉, Docker 레지스트리에는 하나 이상의 Docker 이미지를 호스팅하는 Docker 저장소가 포함되어 있습니다. 공용 레지스트리에는 Docker Hub 및 Docker Cloud라는 두 가지 구성 요소가 포함됩니다. 개인 레지스트리를 사용할 수도 있습니다. 레지스트리 작업시 가장 일반적인 명령은 다음과 같습니다. docker push, docker pull, docker run

데이터 통합 ​​튜토리얼을위한 talend open studio

이제 Docker 아키텍처를 이해 했으므로 다음을 확인하십시오. 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 Edureka DevOps 인증 교육 과정은 학습자가 DevOps가 무엇인지 이해하고 Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack 및 GIT와 같은 다양한 DevOps 프로세스 및 도구에 대한 전문 지식을 습득하여 SDLC의 여러 단계를 자동화하는 데 도움이됩니다.

질문이 있으십니까? 이 'Docker 아키텍처'의 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다.