본문 바로가기
클라우드노트/도커(Docker)

도커(Docker)를 알아보자

by 테크한스 2021. 11. 27.

이번 시간은 도커를 알아보도록 하겠습니다.

도크는 리눅스 컨테이너 기반으로 하는 오픈소스 가상화플랫폼입니다.

 

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다.

그렇다면 왜 가상화를 사용하는 것일까?

우리가 사용하는 서버나 컴퓨터의 성능이 과거에 비해 상당히 좋아지게 되면서 이것을 효율적으로 사용하기 위해서 가상화기술이 나왔고, 우리가 사용하는 이유일 것입니다.

대표적인 가상화 플랫폼이라면 우리가 알고 있는 VM(Virtual Machine)일 것입니다. VM은 OS가상화라고도 합니다.

 

그런데 도커를 이해하기 위해서는 기반이 되는 기술인 컨테이너에 대해 알아야 합니다.

컨테이너는 여러 가상화 기술 중 하나인 리눅스 컨테이너가 있습니다. 기존 OS를 가상화 시키던 VM과 달리 컨테이너는 프로세스를 격리시켜 동작하는 방식으로 동작합니다. 

 

그려면 VM 같은 방식과 컨테이너 기술을 사용하는 도커(docker)는 어떻게 다를까요?

 

 

위의 그림중 좌측에 있는 VM은 우리가 알다시피 Host OS위에 가상화를 위한 하이퍼바이져(Hypervisor)기술을 이용합니다. 그런데 그위에 다시 Guest OS를 올려서 사용하는 것이 문제입니다. 한개 정도 돌리는 것은 문제가 안되나 기업용 서버에서 다수의 서버가상화가 필요할 경우 VM은 사실상 사용하기가 어렵다고 볼 수 있습니다.

 

반면에 도커는 컨테이너 기반의 가상화기술을 이용해 도커엔진 위에 Application에 필요한 바이너리들만 올라가게 됩니다. 가장 큰 장점은 VM과 달리 Host OS가 사용하는 자원(리소스)을 분리하여 사용할 수가 있는 것입니다.

 

VM같은 OS가상화의 장점은 높은 보안 격리를 할 수 있어서 컨테이너 기반의 가상화보다는 보안레벨에서는 강점이라고 내세울 수는 있지만 결국 도커(docker)의 기술을 사용하는 이유는 VM 대비해서 뛰어난 성능향상, 용이한 Scale Out 등의 유연성과 성능을 무시할 수 없기 때문입니다.

 

도커를 사용하기 위한 기반은 도커이미지를 사용하는 것입니다.

 

도커이미지란 컨테이너를 실행 할 수 있는 실행파일, 설정 값등을 가지고 있는 것이고 생각하면 되며 위의 그림같이 해당 도커이미지를 컨테니어에 담고 실행을 시키면 해당 프로세스가 동작하게 되는 것입니다.

 

그림에서 ubuntu 이미지를 위해 layer A,B,C가 들어가고 nginx 이미지를 만든다고 하면 이미 만들어지 Layer A,B,C로 만들어진 ubuntu 이미지를 기본으로 nginx가 추가가 되는 것입니다. 그렇다면 web application 은 어떻게 만들까요? 이미 만들어진 nginx 이미지에 web application을 올려서 이미지를 만들게 됩니다.

 

이러한 이미지를 만드는 것이 도커파일(docker file)입니다 (일종의 스크립트)

도커 이미지가 만들어 졌으면 그다음은 도커 레지스트리에 저장하고 관리를 해줍니다.

 

도커 레지스트리는 도커허브를 비롯해 많은 글로벌 벤더나 업체에서 해당 서비스를 무료 또는 유료로 제공하고 있습니다. 도커허브는 무료이고 도커레지스트리는 유료의 형태라고 이해해도 될 거 같습니다.

위의 그림은 도커이미지를 Pull 받기 위한 url 입니다. 

 

도커는 점차 확장되어 현재는 대용량의 서버 운영을 하는 경우 K8S(쿠버네티스) 기술을 이용하고 추가적인 모니터링과 로깅기능을 위해서 Istio나 Jaeger 같은 서비스를 추가하며 MSA 형태를 띄며 계속적으로 발전하고 있습니다.

 

K8S(쿠버네티스)나 Istio , Jaeger , MSA 등에 대해서는 추후에 다시 게시물을 올리겠습니다.

 

 

위에 도커(docker)에 대한 영상 링크도 참고하세요

https://youtu.be/WWhFBI6TMEU

 

댓글