여니의 프로그래밍 study/도커, 쿠버네티스

[1장] 도커란?

여니's 2024. 1. 21. 13:57

 

참고서적 : 시작하세요! 도커/쿠버네티스

 

1. 도커란?

리눅스 컨테이너에 여러 기능을 추가함으로써

어플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

 

리눅스 컨테이너는 애플리케이션과

실행에 필요한 모든 구성 요소를

격리된 환경에서 실행할 수 있도록 하는 가상화 기술 중 하나임

 

리눅스 컨테이너를 사용하면

각 컴퓨터에 별도로 웹 서버를 설치하지 않고

하나의 이미지를 만들어 각각의 컨테이너로 실행할 수 있다.

 

도커 엔진

: 컨테이너를 생성하고 관리하는 주체


1.1 가상 머신과 도커 컨테이너

기존 가상화 기술은 하이퍼바이저를 이용해서 

여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었음

 

하이퍼바이저는 가상화 기술을 이용하여

하나의 물리적인 컴퓨터에서 여러 개의 가상머신을

동시에 실행할 수 있게 해주는 소프트웨어임

 

이러한 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고

각 가상머신에는 우분투, CentOS 등의 운영체제가 설치되어 사용됨

 

하이바이저에 의해 생성되고 관리되는 운영체제는

게스트 운영체제라고 하며 각 게스트 운영체제는

다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당받아 사용함

ex) VMWare 등

 

그러나 가상화하고 독립된 공간을 생성하는 작업은

반드시 하이퍼바이저를 거치기 때문에

일반 호스트에 비해 성능의 손실이 발생함

 

가상화 하는 과정에서 오버헤드가 발생할 수 있음.

가상 머신은 하이퍼바이저를 통해 호스트 시스템의 실제 하드웨어 리소스에 접근함

직접적인 하드웨어 액세스에 비해 성능 손실 발생 가능성 있음

 

 

이에 비해 도커 컨테이너는

가상화된 공간을 생성하기 위해 

리눅스의 자체 기능을 활용하여 

프로세스 단위의 격리 환경을 만들기 때문에

성능 손실이 거의 존재하지 않음. 

 

컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고

컨테이너 안에는 애플리케이션을 구동하는데 필요한 라이브러리 및 실행 파일만 존재해서

컨테이너를 이미지로 만들었을 때 이미지 용량 또한 가상 머신에 비해 대폭 줄어든다. 

 


 

1.2 도커를 시작해야 하는 이유

쿠버네티스, 메소스와 같은 오픈소스 프로젝트에서

도커를 기주능로 개발되고 있음

 

1) 애플리케이션 개발 및 배포가 쉬워짐

호스트 OS : 서버 부팅 시 실행되는 운영체제

도커 컨테이너는 호스트 OS 위에서 실행되는 격리된 공간임

컨테이너 자체에 특별한 권한을 주지 않는 한

컨테이너 내부에서 수 많은 소프트웨어를 설치하고 파일을 수정해도

호스트 OS에는 영향을 끼치지 않음. 

 

운영 환경에 이를 배포하려면

해당 컨테이너를 '도커 이미지'라고 하는 일종의 패키지로 만들어서

운영 서버에 전달하면 된다. 

 

컨테이너에서 사용되던 패키지를 운영 서버에 새로 설치할 필요가 없고

라이브러리 설치와 같은 의존성을 고려할 필요도 없다. 

 

서비스 개발 시 사용했던 환경을

다른 서버에도 컨테이너로서 똑같이 복제할 수 있어서

개발/운영 환경의 통합이 가능해짐

 

게다가 도커 이미지는 가상 머신의 이미지와 달리

커널을 포함하고 있지 않아서 이미지 크기가 크지 않다. 

 

또한 이미지 내용을 레이어 단위로 구성하며

중복되는 레이어를 재사용할 수 있어서

배포 속도도 매우 빨라진다. 

 

이미니 재 포함되는 커널이란?

하드웨어와 소프트웨어 간의 상호 작용을 관리하고 제어하는 역할을 함

운영체제의 핵심으로 하드웨어와 소프트웨어 간의 인터페이스 역할을 함

시스템의 자원(프로세서, 메모리, 디바이스 등)을 관리하고

프로세스 간의 통신과 작업 스케줄링 등 다양한 운영체제 기능을 수행함

 

 

2) 여러 어플리케이션의 독립성과 확장성 향상

 

모놀리스 애플리케이션

: 소프트웨어의 여러 모듈이 상호 작용하는 로직을

하나의 프로그램 내에서 구통시키는 방식

서비스 기능이 복잡해지면 소프트웨어 자체의 확장성과 유연성이 줄어든다.

 

이러한 방식을 대체하기 위해

떠오른 개념이 마이크로서비스 구조임

 

 

마이크로서비스 구조는 여러 모듈을 독립된 형태로 구성해서

언어에 종속되지 않고 변화에 빠르게 대응이 가능하며

각 모듈의 관리가 쉬워진다. 

 

예를 들어 웹 서비스는 데이터베이스 컨테이너와 웹 서버 컨테이너로 분리할 수 있고

웹 서비스에 부하 발생 시 마이크로 서비스 구조의 웹 서버 컨테이너만을 동적으로 늘려

부하를 분산할 수 있음.

 

또한 웹서버와 데이터베이스의 이미지 버전을 독립적으로 관리해서

유지 보수도 유용해진다. 

 


 

1.3 도커엔진 설치

도커는 다양한 운영체제에서 사용 가능함

도커 사용할 때 쓰는 대표적인 리눅스 운영체제는 CentOS, 우분투 등이 있음

 

1) 도커 버전

도커EE는 유로로 제공되는 기업용 솔루션

도커 CE는 무료로 제공되는 도커 엔진

 

2) 도커 맥 설치

'여니의 프로그래밍 study > 도커, 쿠버네티스' 카테고리의 다른 글

[2장-4] 도커 엔진  (0) 2024.03.13
[2장-3] 도커 엔진  (0) 2024.03.03
[2장-1] 도커 엔진  (0) 2024.02.04