기반 지식
ㆍ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)
'Container > Docker' 카테고리의 다른 글
다시 정리해 보는 Docker - 도커 파일 편 (0) | 2021.10.15 |
---|---|
다시 정리해 보는 Docker - 명령어 편 (컨테이너 / 이미지 / 네트워크 관리) (0) | 2021.10.15 |
컨테이너 끼리 RSA키 주고 받아 컨테이너 간 SSH 통신 수립하기 (0) | 2021.10.03 |
도커 컨테이너 관련 꿀팁 모음 (0) | 2021.10.03 |
도커 네트워크 구조 (0) | 2021.09.21 |