Docker 기본 개념

김민건·2021년 10월 25일
0

기술

목록 보기
5/19
post-thumbnail

#주저리주저리

Docker를 사용해보기도 하고, 나름 개인적인 공부를 진행해봤지만 누군가 나에게 "Docker를 왜 사용해야해?" 라고 물었을 때 명쾌하게 답변을 내리지 못해 생각을 정리할겸 적어본다.

Docker란

Docker란 Go언어로 개발된 컨테이너 기반의 오픈소스 가상화 플랫폼이다

Container란??

Docker에 대한 개념을 확립하기 위해서는 우선적으로 container(컨테이너)의 의미와 이 기술이 나온 이유부터 이해할 필요가 있다.

대부분의 소프트웨어들은 정상적으로 구동하기 위해서는 OS와 Library에 의존성을 지닌다. 이 때문에 하나의 시스템 위에서 소프트웨어들을 동시에 실행하려하면 의존성 관련 문제에 부딪힐 수 있다. 하지만 하나의 서버에 하나의 소프트웨어만을 구동시키기에는 리소스, 비용 낭비가 심하다. 따라서 이러한 개별적인 소프트웨어를 위한 독립적인 환경을 제공해주는 것을 가상화라고 한다.

컨테이너는 소프트웨어의 구동에 필요한 개별적이고 독립된 환경을 제공해주는 가상화 기술을 의미한다. 가상머신(VM)과 사실상 같은 역할을 한다고 할 수 있지만, 각각의 환경들이 별도의 운영체제를 가상화하는지에 그 차이가 있다. 간단하게 Docker의 장단점과 그에 따른 사용 이유에 대해서 살펴보자.
( 여기서 사용 이유는 개발하면서 필자가 느낀 부분들이므로 지극히 개인적인 의견이 반영되어 있다는 것을 유의해주세요! )

장점

  • 실행속도가 빠르다
  • 메모리 사용량이 비교적 적다
  • 디스크 공간을 비교적 덜 차지한다
    ( MB단위 )
  • 독립적인 환경을 제공한다
  • Docker Hub를 통해 도커 이미지의 클라우드 저장소를 제공하여 간편하게 공유하고 설치할 수 있다
    ( 타인, 본인의 이미지를 어디서든지 다운받을 수 있음 )
  • 환경 구축 시점이 Docker Image를 생성하는 시점으로 고정된다

단점

  • 멀티 OS가 불가능하다 ( Host OS에 의존적이다 )

사용 이유

  • 서버 운영 기록을 코드화 시키고 동일한 환경을 안정적으로 배포/복사하기 위해
  • 로컬에서 서버와 동일한 환경을 구축하고 서버 배포에 문제가 없는지 테스트하기 위해
  • 한 서버 내에서 가볍고 독립적인 환경을 지니는 컨테이너들로 구성하여 안정적이고 빠르며 비용이 적게 각 프로세스를 실행하고 관리하기 위해
  • MSA 구조 및 CI/CD 환경 구축 시, 찰떡궁합이다!

마치며

이번에 Docker에 대한 정말 간단한 개념과 특징에 대해 살펴보았다.
다음 시간에는 Docker의 구조를 살펴보고, 이런 장단점이 어떻게 발생했는지 알아보려 한다.

profile
백엔드 꿈나무

0개의 댓글