Search

개요

대분류
DevOps/Tool
소분류
Docker
설명
Docker 구조, 설명
유형
구조
사용법
주요 레퍼런스
https://github.com/good593/course_devops/tree/main/docker
https://docs.docker.com/get-docker/
최종 편집 일시
2024/10/31 03:26
생성 일시
2024/01/12 05:35
13 more properties

Docker란?

애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼

Docker Container

Docker Image를 담아놓는 곳
호스트 OS상에 논리적인 구획
어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것
컨테이너는 훨씬 가볍고 운영체제 커널을 공유하며, 시작이 훨씬 빠르고 운영체제 전체 부팅보다 메모리를 훨씬 적게 차지한다.

컨테이너 기술 발전 과정

Traditional Deployment

하드웨어 위에 OS 설치 후 App 실행에 필요한 Library를 OS에 설치
다양한 서비스를 한 서버에서 운영해야 하는 문제가 발생 (비용 효율성)
서비스간 라이브러리 충돌이 발생함에 까라 서비스간 환경 격리가 요구됨

Virtualized Deployment

Hypervisor: VM(Virtual Machine)을 관리하는 역할을 함
Guest OS(VM)에 하드웨어 자원을 에뮬레이팅을 하다보니 성능 하락이 발생하며, 가상머신을 띄우기 위한 자원의 오버헤드가 발생
Cold Start

Container Deployment

Docker : 대표적인 Container Engine
chroot, namespace 등을 이용한 격리기술 제공
Host Process에서 실행되는 환경이기에 성능하락과 자원 오버헤드 문제에서 벗어남
Cold Start

Kubernetes Deployment

Kubernetes : 대표적인 Container Orchestration System
여러 서버에서 구성된 환경에서 Container를 어떻게 잘 운영할 수 있는지 목적으로 함

virtual Machine vs Docker Container

virtual Machine
성능 손실 발생: 시스템 자원을 가상화하고 독립된 공강을 생성하는 작업(HyperVisor)을 거침
배포가 느려짐: 실행 파일 이외에 Guest OS 등이 추가됨으로써 용량이 큼
Docker Container
성능 손실 없음: 리눅스 자체 기능을 사용하여 프로세스 단위의 격리 환경을 구축
배포가 빠름: 실행 파일 및 라이브러리만 필요하여 용량이 적음

Docker Image & Container

도커 이미지와 컨테이너는 1:N 관계
1개의 이미지로 N개의 컨테이너를 만들 수 있다.

Docker Image

컨테이너를 실행할 수 있는 실행파일, 설정 값 들을 가지고 있는 것
Image를 컨테이너에 담고 실행을 시킨다면 해당 프로세스가 동작
스택형태로 차곡차곡 쌓임
ubuntu 이미지: Layer A,B,C
nginx 이미지: unbuntu(Layer A,B,C) + nginx Layer
web app 이미지: unbuntu(Layer A,B,C) + nginx Layer+ web app source Layer

Docker Hub & Docker Registry

Docker Hub : 이미지를 저장하고 관리
많은 회사들이 Docker로 소프트웨어를 배포하기 시작했고 공개이미지들을 공유 가능. Docker Hub를 이용하면 손쉽게 image를 pull 받아 컨테이너에 적용 가능. (사실 GitHub와 동일하게 생각해도 무관함)
Docker Registry : Docker Hub처럼 공개된 방식이 아닌 비공개적으로 격리된 저장소를 구축

Docker Archtecture

Docker Client
사용자 = 우리
도커를 설치하면 그것이 Client며, build, pull, run 등의 도커 명령어를 수행
Docker Host
도커가 띄워져있는 서버를 의미
컨테이너와 이미지를 관리하게 된다.
Docker daemon
도커 엔진
Registry
외부(remote) 이미지 저장소