Post

Docker Overview

지속가능한 서비스를 위해

서비스가 오랫동안 안정성있게 운영되기 위해서는 지속가능성이 필요합니다. DevOps는 지속가능성을 위해 개발과 운영을 통합하여 릴리즈부터 배포, 인프라 관리까지 소프트웨어를 만드는 모든 과정에서 자동화를 추구합니다. 이러한 자동화를 위해서는 모듈, 시스템으로부터 핵심적인 개념 또는 기능을 간추리는 추상화가 필요합니다.

예를 들어, VMware는 HW를 추상화하여 가상 머신에게 가상화된 하드웨어 자원을 제공합니다. 이를 통해 가상 머신은 실제 하드웨어를 직접 다루지 않고도 여러 개의 OS를 실행할 수 있습니다. Continer는 서비스의 추상화입니다. Docker는 추상화된 서비스인 컨테이너를 통해 애플리케이션의 설정과 종속성을 관리 및 배포하고 일관된 실행 환경을 유지할 수 있도록 합니다.

Docker


도커는 컨테이너를 통해 애플리케이션을 구축/배포/실행 및 관리하는 오픈 소스 플랫폼입니다.

Docker architecture


  • client-server architecture
  • Docker client와 Docker server는 REST API를 사용하여 통신합니다.

도커 구조

Server: Docker daemon
Docker 데몬 혹은 도커 엔진(dockerd)은 Docker API 요청을 처리하며 이미지, 컨테이너, 네트워크, 볼륨과 같은 Docker object를 관리합니다.
Client: Docker CLI
Docker 클라이언트 또는 Docker CLI(docker)은 Docker 사용자가 터미널 또는 명령 프롬프트에서 Docker API를 사용하는 명령을 dockerd로 보내도록 하여 명령을 실행하도록 합니다.
Docker registries
Docker Image를 저장하는 레지스트리입니다. Docker Hub는 대표적인 공개 레지스트리입니다.

How to Use Dockerfile to Create a Docker Image and Docker Container


라이프사이클

Dockerfile
도커 이미지를 빌드하기 위한 텍스트 파일입니다. Dockerfile은 도커 이미지의 소스코드이며 도커 이미지를 구성하는 명령과 지침 내용이 포함되어 있습니다. Dockerfile을 활용하면 자동화된 빌드를 통해 항상 최신 버전을 유지할 수 있습니다. 이는 안전하지 않은 응용 프로그램을 설치하지 않기 때문에 보안성을 지킬 수 있습니다.
Image
이미지는 컨테이너 생성 지침이 포함된 읽기 전용 스냅샷이며 여러 layer로 구성되어 있습니다. 이미지의 layer는 모두 read-only 이며 맨 밑의 layer는 base image입니다. 컨테이너가 실행될 때 이 이미지 겉에 읽기/쓰기 가능한 전용 레이어가 생겨 해당 상위 레이어를 기반으로 변경사항을 적용하는 것으로 이미지는 변경되지 않습니다.
Container
Desktop View 애플리케이션이 구동되기 위해 필요한 코드와 모든 종속성(운영 체제 라이브러리, 툴 등)을 결합하여 표준화된 실행이 가능한 환경입니다.

컨테이너 vs 가상 머신
컨테이너는 가상 머신과 달리, 하이퍼 바이저를 로드하지 않고 호스트 머신의 커널을 공유하기 때문에 오버헤드가 없으며 시작 시간이 단축됩니다. 이에 각 컨테이너는 독립적인 호스트명, IP 주소, 디스크를 가집니다. 각 가상 머신은 독립적인 운영체제, 호스트명, IP 주소, 디스크를 가집니다.

참고 자료


This post is licensed under CC BY 4.0 by the author.