Docker | 컨테이너 기술이란.

🛟 Dive.·2024년 7월 6일
0
post-thumbnail

컨테이너 기술.

  • 컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소를(소스 코드, 구성 요소, 종속성 등) 하나의 런타임 환경으로 패키징한 논리적 공간.

  • 이러한 패키징 기술을 Docker에서는 Dockerfile build를 통해 구현.

애플리케이션과 종목 항목을 하나로 묶어, 실행하게 해주는 운영 시스템을 가상화한 경량의 격리된 프로세스라고 볼 수 있음.

  • mircoVM 이라고도 함.
  • 운영체제 수준의 가상화 제공.
  • 독립성을 갖기 때문에 다른 컨테이너에 영향을 주는 않는 statless 환경 제공.(VM과 같음)

컨테이너 기술은 무엇?

  • 이 기술은 개인 데스크탑 뿐 아니라 기업 내의 온프레미스 서버에서 AWS와 같은 퍼블릭 클라우드까지 언제 어디서든 빠르고 효율적으로 배포 가능. 확장성 또한 가지고 있음.

  • 이를 통해 서버구성, OS 설치, 네트워크, 개발 도구 구성 등의 반복적이고 불편한 작업에 시간을 낭비하지 않고 개발자는 애플리케이션 개발 그 자체에 집중할 수 있음.

컨테이너의 특징.

  • 컨테이너는 우리가 개발한 최소한의 image를 통해 실행되므로 경량.
    - 컨테이너 이미지 생성의 Best pratice 중 하나는 이미지 경량화 다.

  • 일반 서버 환경에서의 애플리케이션 실행과 달리 언제든 프로세스 수준의 속도로 빠르게 실행(run) 할 수 있고, 한번에 여러 개의 컨테이너를 동시에 실행 가능.
    - Docker에서는 Docker compose 기술을 통해 구현.

  • 개인 환경이던 클라우드 환경이던 어떤 OS, 어떤 환경에서도 동작 가능한 이식성을 보유하고 있음.

  • 컨테이너 자체 애플리케이션 환경에 대한 관리만 요구되므로, 지속적 서버관리 비용을 절감 할 수 있음.

  • 개발팀과 운영팀의 업무 분리로 각자의 업무와 세븐화된 관리에 집중할 수 있음. 즉, 컨테이너는 DevOps workflow 구성에 최적. ===> CI/CD 업무.

컨테이너는 어떤 타입으로 생성?

  • 컨테이너 패키징 메커니즘 시스템 / 애플리케이션 / 라우터 컨테이너

  • 시스템(or OS) 컨테이너
    - 호스트 OS 위에 Ubuntu와 같은 배포판 리눅스 image를 통해 배포되는 컨테이너.

    • 또다른 VM의 형태이고, 내부에 다양한 애플리케이션 및 라이브러리 도구를 설치, 실행 가능.
    • 대표적으로 LXC, LXD, OpenVZ, Linux VServer, BSD jails 등이 있음.
  • 애플리케이션 컨테이너(Docker의 주역할.)
    - 단일 애플리케이션 실행을 위해 해당 서비스를 패키징하고 실행하도록 설계된 컨테이너.

    • 3-tier 애플리케이션과 같은 경우 각 tier (frontend-backend-DB)를 개별 컨테이너로 실행하여 연결.
    • 대표적으로 Docker container runtime, Rocket 등이 있음.

Docker는 무엇?

  • 여러 계층의 Application을 container로 분리, 연결하여 실행하는 **MSA(MicroService Architecture) 프로젝트에 유용함.

  • Application의 Infra(runtime)는 Image를 통해 제공하고 Public or Private 하게 공유 가능.

  • Github와 유사한 방식(open share)으로 Docker hub에서 제공 함.

  • 이렇게 제공된 image를 기반으로 Application 서비스를 제공, 이를 통해 컨테이너화(containerization) 할 수 있음.

profile
Data Science. DevOps.

0개의 댓글

관련 채용 정보