320x100
320x100

기반 지식

ㆍIT 인프라

: 애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS, 미들웨어, 네트워크 

 

ㆍImmutable Infrastructure

: 인프라를 파기하고 새롭게 구축하는 방식의 인프라

: 기존 인프라의 변경이력을 관리할 필요 없이 작동중인 인프라를 관리

 

ㆍInfrastructure as Code

: 코드를 통해 인프라를 구성하고 관리하는 방식

: Bootstrapping (OS 설치 / 가상환경 설정 / 네트워크 구성 설정 / Vagrant)

: Configuration (OS 설정 / 미들웨어 설정 / Chef, Ansible, Puppet, Itamae)

: Orchestration (애플리케이션 배포 / 서버 군집의 관리 / Kubernetes)

 

ㆍ클라우드 

: 네트워크를 통해 인프라, 플랫폼 등을 제공받는 서비스

: PaaS, SaaS, IaaS 등이 있음

 

ㆍCNCF (Cloud Native Computing Foundation)

: 클라우드 네이티브 컴퓨팅을 추진하는 조직

: Kubernetes (컨테이너 오케스트레이션), Prometheus (모니터링 툴), Fluetnd (로그 수집 툴), container (컨테이너 런타임), rkt (컨테이너 런타임), CoreDNS (서비스 디스커버리), gRPC (RPC 프레임워크)등 16개의 프로젝트를 관리

 

ㆍ컨테이너

: 명령어 혹은 프로그램을 실행하기 위한 일종의 가상환경

: 가상머신과 달리 명령어가 실행되지 않으면 실행되지 않음

: 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아 별도의 서버 처럼 가동

: 호스트OS의 리소스를 논리적으로 분리시키고 여러개의 컨테이너가 공유하여 사용 

: 오버헤드가 적어 가볍고 속도가 빠름

 

 

 

 

Docker

: 컨테이너를 생성하고 실행하기 위한 도구

ㆍ기능

: Build (이미지 생성)

: Ship (이미지 공유)

: Run (컨테이너 작동)

 

 

 

Docker의 에디션 

ㆍCommunity Edition (CE)

: Docker에서 제공하는 무료 버전

: 컨테이너에서 작동하는 애플리케이션을 구축 및 테스트, 실행하기 위한 툴 제공

: 멀티호스트 환경에서 환경 구축 기능 제공

 

ㆍEnterprise Edition (EE)

: Docker에서 지원하는 상업용 버전

: Basic (인증이 완료된 컨테이너 및 플러그인 제공),

: Standard (LDAP나 Active Directory와 통합 가능한 Docker Datacenter 제공)

: Advanced (보안기능 제공)

 

 

 

 

Docker를 지원하는 플랫폼

ㆍ서버 OS

: Ubuntu, Debian, CentOS, Fedora

 

ㆍ퍼블릭 클라우드

: MS Azure, AWS

 

ㆍ클라이언트 OS

: Windows10, macOS

 

 

 

 

Docker의 컴포넌트

ㆍDocker Engine 

: 도커 이미지를 생성하고 컨테이너를 가동시키기 위한 도커의 핵심 기능

: 도커 명령어의 실행 및 도커파일에 의한 이미지 빌드

 

ㆍDocker Registry

: 도커 이미지를 공유하기 위한 저장소

: Docker Hub를 구성하는 컴포넌트

 

ㆍDocker Compose

: 여러 개의 컨테이너를 관리하기 위한 툴

 

ㆍDocker Machine

: Virtual Box, AWS EC2, MS Azure과 같은 클라우드 환경에서 도커의 실행 환경을 구축하기 위한 툴

 

ㆍDocker Swarm

: 여러 도커 호스트를 클러스터화 하기 위한 툴

: Manager node (클러스터 관리 및 API 제공)

: Worker node (컨테이너를 실행하는 호스트)

: Windows10, MacOS와 같은 클라이언트 OS에 설치하여 worker node로 이용 

 

 

 

 

도커의 작동구조

ㆍnamespace

: 데이터에 이름을 붙히고 분할하여 충돌 가능성을 줄이고 쉽게 참조할 수 있도록 하는 개념

: 이름과 연결된 실체는 어떤 namespace에 속하는지 고유하게 정해짐

: namespace가 다르면 동일한 이름이라도 다른 실체로 처리

: Linux 커널의 namespace의 경우 Linux 오브젝트에 이름을 붙혀 독립된 환경 구축

: PID / Network / UID / Mount / UTS / IPC 

 

ㆍcgroups

: 리눅스에서 프로세스와 쓰레드를 그룹화하여 관리하는 기술

: 호스트의 자원을 그룹별로 할당하거나 제한을 두는 등 관리

: cpu / cpuacct / cpuset / memory / devices / freezer / net_cls / blkio 등의 cgroups 서브시스템이 존재

 

ㆍNAPT (Network Address Port Translation)

: 하나의 IP주소를 여러 컴퓨터가 공유하는 기술

: Private IP 주소와 Public IP 주소 및 포트번호를 상호 변환 (NAT의 경우 IP만 상호변환)

: 도커에서는 Linux의 iptables를 기반으로 NAPT를 수행

 

 

 

 

Refference

: 완벽한 IT 인프라 구축을 위한 Docker (http://www.yes24.com/Product/Goods/64728692)

: Docker에 대한 기본 지식 (https://2mukee.tistory.com/189)

  

 

 

 

 

 

300x250
728x90