도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문 - 01.도커의 기초

백근영·2020년 1월 28일
5
post-thumbnail

01. 도커란 무엇인가

도커란?

컨테이너형 가상화 기술을 구현하기 위한 상주 애플리케이션과 이 애플리케이션을 조작하기 위한 CLI로 구성되는 프로덕트.
컨테이너를 기반으로 한 애플리케이션 배포에 특화된 기술이다.

호스트 운영체제형 가상화 vs 컨테이너형 가상화

  • 호스트 운영체제형 가상화
    운영체제 위에서 가상황 소프트웨어를 사용해 하드웨어를 에뮬레이션 하는 방식으로 게스트 OS를 만드는 가상화 방식
  • 컨테이너형 가상화
    호스트 운영체제의 리소스를 공유해서 만들어지는 가상 운영체제. 위 가상화 방법에 비해 가볍고 빠르다.

02. 도커를 사용하는 의의

도커를 사용하는 의의

  • 변화하지 않는 실행환경으로 멱등성 확보
  • 코드를 통한 실행 환경 구축 및 애플리케이션 구성
  • 실행 환경과 애플리케이션의 이리체화로 이식성 향상
  • 시스템을 구성하는 애플리케이션 및 미들웨어의 관리 용이성

Infrastructure as Code & Immutable Infrastructure

  • Infrastructure as Code
    수작업이 개입할 여지를 줄이고, 코드 중심으로 바꿈으로써 쉽게 같은 구성의 서버 여러 대를 구축함.
  • Immutable Infrastructure
    프로비저닝 도구를 이용한 Infra as Code의 구현도 서버 환경과 관련된 문제를 완벽히 해결하지는 못함.
    불편 인프라는 어떤 시점의 서버 상태를 저장해 복제할 수 있도록 하자는 개념.
  • ... and docker
    도커의 사용은 위 두 개념을 간단하고 낮은 비용으로 실현할 수 있음.
    dockerfile 및 docker-compose의 활용으로 infra as code를 구현할 수 있고, 도커는 이미지로 서버 구성을 관리할 수 있기 때문에 immutable infra도 구현할 수 있음.

컨테이너 = 애플리케이션 + 인프라

컨테이너 이전의 전통적인 애플리케이션 배포 방식은 호스트 운영체제 위에 애플리케이션을 구동하는 방식이었음.
-> 개발환경과 배포환경이 완벽히 같음을 보장할 수 없으며, 따라서 개발 환경에서는 발생하지 않았던 오류가 배포 환경에서 발생함.
컨테이너는 애플리케이션과 인프라를 함께 관리하기 때문에 컨테이너 기반 개발을 통해 개발 환경과 배포 환경의 차이를 최소화할 수 있음.

profile
서울대학교 컴퓨터공학부 github.com/BaekGeunYoung

1개의 댓글

comment-user-thumbnail
2020년 3월 15일

정리 감사합니다~

답글 달기