Docker

WooHyeong·2024년 11월 15일

Spring

목록 보기
27/27
post-thumbnail

Docker란?

도커(Docker)는 컨테이너가 기반 가상화 도구이다.

가상화?

등장배경

값비싼 서버에 쇼핑몰 사이트를 구동하기로 했다.
그러나, 이용자가 적어 서버의 성능에 반의 반도 사용하지 않게 되었다.
서버 유지가 힘들 것 같아서 새로운 프로젝트 반려동물 사료 플랫폼도 구동하려고 했다.
구동하려고 하니 쇼핑몰 사이트에서 사용되는 기술들과 충돌이 일어났다.
결국 새로운 플랫폼을 구동하지 못했다.

새로운 플랫폼을 구동하려 하니 이전 서비스를 포기해야 하고, 이전 프로젝트를 유지하려 하니 새 프로젝트를 포기해야하는 상황이다.

-> 서버의 성능을 나눠서 사용하면 되지 않을까?
이것이 바로 가상화라는 개념이 등장하게 된 배경이다.

개념

  • 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴
  • 어플리케이션과 그에 필요한 System tools 환경설정, 모든 dependencies를 하나로 묶어서 다른 서버, 다른 pc 어떤 곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴

등장 배경


어플리케이션을 구동하는데 많은 것들이 필요하다. 소스파일만 가지고서는 구동하기에 문제가 있다. 외부 라이브러리를 사용한다면 dependency와 환경 변수 설정 등을 다 해줘야 한다.
서버마다 또는 개발자의 pc마다 모든 것들을 설치하고 설정하는 것은 꽤 번거롭고 오류도 많이 발생할 수 있다.

Docker Container

  • 도커 컨테이너 안에는 어플리케이션과 어플리케이션을 구동하기 위해 필요한 모든 것들을 담아놨다.
  • 도커 컨테이너를 사용하면 어플리케이션을 구동하기 위해 필요한 것들을 어떤 PC에서도 동일하게 구동할 수 있다.

Virtual Machine VS Container

Virtual Machine

  • Hypervisor Software를 통해 각각 가상의 머신을 만들 수 있다. 한 운영체제 위에서 동일한 어플리케이션을 각각의 다른 환경에서 구동하기 위해서는 VM을 사용해서 구동해야 했다.
  • VM은 각각의 운영체제를 포함하고 있다.
  • 각각의 환경에서 어플리케이션을 구동하기 위해 VM을 사용하면 운영체제를 포함하고 있어 굉장히 무겁고, 리소스를 많이 잡아먹을 수 있다.
  • 운영체제의 부팅 과정이 필요하여 시간이 오래 걸린다.

Container

VM에서 경량화된 컨셉이 컨테이너

  • 컨테이너는 운영체제를 포함하지 않는다.
  • 컨테이너 Engine(Docker Engine)이 설치된 운영체제를 공유한다.
  • 운영체제에 Container Engine을 설치만 하면 개별적인 컨테이너를 만들어서 각각의 어플리케이션을 고립된 환경에서 구동할 수 있게 해준다.

Docker의 3대 구성 요소


컨테이너를 만들기 위해서는 DockerFile을 통해 Image를 만들어서 Container를 구동한다.

Docker File

  • 컨테이너를 어떻게 만들지에 대한 설명서

Image

Container

Docker를 우리 프로젝트에서 사용하는 이유

Docker 없이도 배포는 가능하지만, Docker는 환경의 일관성, 빠른 배포, 효율적인 자원 활용 및 확장성 등 다양한 이점을 제공합니다. 프로젝트가 복잡해지거나 확장이 필요한 경우 Docker를 사용하는 것이 장기적으로는 효율적입니다.

사용하는 방법

profile
화이링~!

0개의 댓글