겉바속촉

[DOCKER] 도커_개요 및 기능 본문

IT 일기 (상반기)/DOCKER

[DOCKER] 도커_개요 및 기능

겉바속촉 2020. 12. 30. 13:16
728x90
반응형

 

DOCKER에 대해서

 

공부해보도록 하겠습니다

 

!^^!

 

 

 


 

 

 

 

컨테이너 유형

 

 

1. System Container : 여러 process를 격리 --> ex) LXC, Zme, Jail

                             각각의 컨테이너마다 systemd 독립적으로 제공

                             기존의 컨테이너 방식

 

2. Application Container : main 서비스가 하나! (기본 원칙) 있고 격리 --> ex) Docker

                                  호스트마다 systemd 공유

                                  시스템컨테이너보다 더 경량화된 방식

                                  MSA

 

 

 

 

 

시스템 개발 시

 

 

애플리케이션을 제품 환경에 가동시키려면 다음 요소들이 필요

 

1. 애플리케이션의 실행 모듈 (프로그램 본체)

2. 미들웨어 or 라이브러리군

3. OS/네트워크 등과 같은 인프라 환경 설정

 

 

  • 일반적인 시스템 개발 흐름 : 개발환경 -> 테스트 환경 -> 스테이징 환경 -> 제품환경
                                         아무리 같은 환경으로 하려고 해도 문제 예측이 쉽지 않다
                                         os 버전이나 아주 작은 차이라도 결과가 다른 경우가 생김
                                         그래서 애자일과 같은 방법이 자꾸 나오는 것!!

  • Docer를 사용한 시스템 개발 흐름 : 도커의 컨테이너 기술 --> 서버 가상화 기술
                                                  메인 서비스를 해당 호스트에 전용으로 설치해서 사용

                                                  애플리케이션 파일 set과 os에서 필요한 파일 set 들을
                                                  그냥 이미지로 만들어버리고 컨테이너에 올려 배포하는 것
                                                  어떤 하드웨어에서든지, 어떤 버전이든지 도커엔진만 설치되어있다면
                                                  필요한 이미지(파일 set) 다운받아서 사용!!

  • 도커 이미지 --> 컨테이너 올려서 진행
                                                   
    예전 : yum install mysql .... 기타 등등 패키지 설치에다가 서버 관련된 설정 파일들로 변경해야하고 그리고 systemctl start mysql - enable .... 이런 것들을 다 했어야  했지만  도커는 모두 이미지로 되어 있는 것!!!

 

 

 

 

 

Docker의 기본이 되는 3가지 기능

 

 

1. Build

Docker 이미지를 만드는 기능

 

애플리케이션의 실행에 필요한
프로그램 본체, 라이브러리, 미들웨어, os나 네트워크 설정 등을 하나로 모아서 Docker 이미지로 생성

 

하나의 이미지 <---- 하나의 애플리케이션만 넣어둠

여러 개의 컨테이너를 조합하여 서비스 구축하는 것

 

 

 

2. Ship

Docker 이미지를 공유하는 기능

 

 

도커 공식 레지스트리 ---> Docker Hub

 

도커허브는 리눅스 배포판이 기본 기능을 제공하는 베이스 이미지를 배포

공식 이미지 외 개인이 작성한 것들도 Docke hub에 공개 및 공유 가능

 

 

 

3. Run

Docker 컨테이너를 작동시키는 기능

 

scale out 방식을 사용 --> 같은 기능을 복제해서 사용하는 방식

                             --> 하나의 동일한 이미지를 여러개의 컨테이너에 올릴 수 있기 때문

 

 

 

 


 

 

Docker 에디션

 

  • Docker 릴리스 : 도커는 에디션 따라 정기적으로 릴리스가 발생

Stable --> 매번 릴리즈되는 것이 아니라서 안정적인 것을 원할 때 사용

Edge --> 매번 릴리즈되서 최신판 사용

 

Moby Project -> 안정화를 위해 1년 이상 거치는 오픈소스 프로젝트

                       (주요 컴포넌트는 containerd, LinuxKit, InfraKit)

 

 

 

 

 

 

Docker 컴포넌트

 

  • Docker Engine : 도커의 핵심 기능  ---> 도커 데몬
  • Docker Registry : 이미지 공개 및 공유
  • Docker Compose : 컨테이너 일원 관리  ---> 여러개의 컨테이너 배포를 위한 것
  • Docker Machine : 도커 실행 환경 구축  ---> 여러 대의 호스트 제어를 위해
  • Docker Swarm : 클러스터 관리  ---> 여러개의 도커 host를 묶어 관리 가능함

                          (Kubernetes라는 오픈소스도 이용 가능한데 Swarm보다 공부가 많이 필요하지만                                              안정적인 sol제공해서 대기업에서 많이 사용)

 

 

 

 

컴포넌트들의 전체적인 구성과 역할

 

  1. docker run 하면 컨테이너 생성되고 docker engine은 active host


  2. docker machinedocker engine 장착한 것들을 등록해서 active 설정

    remote로 해당 명령을 요청

    docker pull 하면 docker repositry에서 docker engine으로 이미지 다운


  3. docker swarm이나 K8S는 도커 스케쥴러로 구성할 수 있는 스케쥴링 수행

    도커 머신들을 cluster로 묶어 거대한 super컴퓨터로 만들어 제어 ==> container orchestration solution
728x90
반응형