초보자를 위한 Docker 아키텍처 및 구성 요소

Docker 아키텍처와 필수 구성 요소에 대해 알아봅시다.

Docker에 대한 기본적인 이해가 있다고 가정합니다. 그렇지 않은 경우 이 이전 기사를 참조할 수 있습니다.

DevOps에서 Docker의 중요성을 이해하고 있다고 믿습니다. 이제 이 환상적인 도구 뒤에는 훌륭하고 잘 생각한 아키텍처가 있어야 합니다. 그렇지 않아?

그러나 그것에 대해 이야기하기 전에 이전 및 현재 가상화 시스템을 보여 드리겠습니다.

기존 가상화와 차세대 가상화

이전에는 가상 머신을 생성했는데 각 VM에는 많은 공간을 차지하고 무거워지는 OS가 있었습니다.

이제 도커 컨테이너의 경우 단일 OS가 있고 컨테이너 간에 리소스가 공유됩니다. 따라서 가볍고 몇 초 만에 부팅됩니다.

도커 아키텍처

다음은 Docker 아키텍처의 간단한 다이어그램입니다.

도커 아키텍처의 구성 요소를 설명하겠습니다.

도커 엔진

전체 Docker 시스템의 핵심 부분입니다. Docker 엔진은 클라이언트-서버 아키텍처를 따르는 애플리케이션입니다. 호스트 시스템에 설치됩니다. Docker 엔진에는 세 가지 구성 요소가 있습니다.

  • 서버: dockerd라는 도커 데몬입니다. 도커 이미지를 생성하고 관리할 수 있습니다. 컨테이너, 네트워크 등
  • Rest API: docker daemon에 무엇을 할지 지시하는 데 사용됩니다.
  • CLI(명령줄 인터페이스): 도커 명령을 입력하는 데 사용되는 클라이언트입니다.

도커 클라이언트

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

도커 레지스트리

Docker 이미지가 저장되는 위치입니다. 공용 도커 레지스트리 또는 개인 도커 레지스트리가 될 수 있습니다. Docker Hub는 저장소의 공용 레지스트리인 Docker 이미지의 기본 위치입니다. 자신의 개인 레지스트리를 만들고 실행할 수도 있습니다.

docker pull 또는 docker run 명령을 실행하면 구성된 레지스트리에서 필요한 docker 이미지를 가져옵니다. docker push 명령을 실행하면 docker 이미지가 구성된 레지스트리에 저장됩니다.

  iPhone의 텍스트 옆에 있는 Little Moon은 무엇인가요?

도커 객체

Docker로 작업할 때 이미지, 컨테이너, 볼륨, 네트워크를 사용합니다. 이것들은 모두 Docker 객체입니다.

이미지

도커 이미지는 도커 컨테이너 생성 지침이 있는 읽기 전용 템플릿입니다. Docker 허브에서 Docker 이미지를 가져와 그대로 사용하거나 기본 이미지에 추가 지침을 추가하고 수정된 새 Docker 이미지를 생성할 수 있습니다. dockerfile을 사용하여 고유한 도커 이미지를 만들 수도 있습니다. 컨테이너를 만들고 실행하기 위한 모든 지침이 포함된 dockerfile을 만듭니다. 사용자 정의 도커 이미지를 생성합니다.

Docker 이미지에는 읽기 전용인 기본 계층이 있으며 최상위 계층은 쓸 수 있습니다. dockerfile을 편집하여 다시 빌드하면 수정된 부분만 최상위 레이어에서 다시 빌드됩니다.

컨테이너

도커 이미지를 실행하면 도커 컨테이너가 생성됩니다. 모든 애플리케이션과 해당 환경은 이 컨테이너 내에서 실행됩니다. Docker API 또는 CLI를 사용하여 Docker 컨테이너를 시작, 중지, 삭제할 수 있습니다.

다음은 우분투 도커 컨테이너를 실행하는 샘플 명령입니다.

docker run -i -t ubuntu /bin/bash

볼륨

Docker에서 생성되고 Docker 컨테이너에서 사용되는 영구 데이터는 볼륨에 저장됩니다. docker CLI 또는 Docker API를 통해 docker에 의해 완전히 관리됩니다. 볼륨은 Windows 및 Linux 컨테이너 모두에서 작동합니다. 컨테이너의 쓰기 가능한 계층에 데이터를 유지하는 것보다 항상 볼륨을 사용하는 것이 좋습니다. 볼륨의 콘텐츠는 컨테이너의 수명 주기 외부에 있으므로 볼륨을 사용해도 컨테이너의 크기가 증가하지 않습니다.

-v 또는 –mount 플래그를 사용하여 볼륨이 있는 컨테이너를 시작할 수 있습니다. 이 샘플 명령에서는 koreantech.org 컨테이너와 함께 geekvolume 볼륨을 사용하고 있습니다.

docker run -d --name koreantech.org  -v geekvolume:/app nginx:latest

네트워크

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

  • Bridge: 컨테이너의 기본 네트워크 드라이버입니다. 애플리케이션이 독립 실행형 컨테이너, 즉 동일한 도커 호스트와 통신하는 여러 컨테이너에서 실행될 때 이 네트워크를 사용합니다.
  • 호스트: 이 드라이버는 도커 컨테이너와 도커 호스트 간의 네트워크 격리를 제거합니다. 호스트와 컨테이너 간의 네트워크 격리가 필요하지 않을 때 사용됩니다.
  • 오버레이: 이 네트워크를 통해 Swarm 서비스가 서로 통신할 수 있습니다. 컨테이너가 다른 Docker 호스트에서 실행 중이거나 Swarm 서비스가 여러 애플리케이션에 의해 형성될 때 사용됩니다.
  • 없음: 이 드라이버는 모든 네트워킹을 비활성화합니다.
  • macvlan: 이 드라이버는 컨테이너에 MAC 주소를 할당하여 컨테이너를 물리적 장치처럼 보이게 합니다. 트래픽은 mac 주소를 통해 컨테이너 간에 라우팅됩니다. 이 네트워크는 예를 들어 VM 설정을 마이그레이션하는 동안 컨테이너를 물리적 장치처럼 보이게 하려는 경우에 사용됩니다.
  •   iPhone, iPad 및 Mac에서 AirPod를 자동으로 전환하는 방법

    결론

    이것이 Docker 아키텍처와 필수 구성 요소에 대한 아이디어를 제공하기를 바랍니다. Docker를 탐색하여 자세히 알아보고 실습 교육에 관심이 있는 경우 이 항목을 확인하십시오. 도커 마스터리 코스.

    기사를 재미있게 읽었습니까? 세상과 함께 나누는 건 어떨까요?