본문 바로가기
Programming/Raspberry Pi

Raspberry Pi(라즈베리파이) Docker + Redmine + Mysql + Git 세팅하기 [1편: Docker란? (1/7)]

by BACKK0M 2018. 7. 13.
반응형

Docker 란?


Docker(도커)는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.


여기서 나오는 컨테이너는 분리된 공간에서 실행되는 프로세스를 말하는데요. 

('컨테이너'라는 개념이 이제는 어색하지 않은 개념이 되었네요.) 


위의 가상화와 같이 생각해보면 VirtualBox 나 VMWare 와 비슷하다고 생각이 들 수 있을 것 같습니다. 하지만



기존 가상 머신은 Hypervisor 플랫폼을 사용하여 Host OS 위에 Guest OS 전체를 가상화하여 사용하였습니다.  그래서 무겁고 느렸죠...


이를 보완하기 위해 Kernal based Virtual Machine(KVM)과 Xen 이란 기술이 등장하였습니다.

KVM은 CPU 가상화 기술(Hardware Virtual Machine)을 사용하였고 Xen은 반가상화 기술을 사용하였습니다. 


왜 빨라졌을까요?

이유는 간단합니다. Guest OS 전체를 가상화하지 않았기 때문이었죠.

하지만 Guest OS는 완전히 사라진 것이 아니었고, 성능적 측면에선 부족한 면이 있었습니다.


그래서 프로세스를 격리 시키는 방법을 생각해 냅니다. CPU뿐만 아니라 메모리는 필요한 부분에서만 사용하여 성능을 높이고 손실률을 낮추게 되었습니다.


그렇다면 각 프로세스를 실행하기 위한 무언가가 필요할 텐데?


위 그림에 나와있는 것처럼 이미지라는 것이 필요합니다.

이미지란 컨테이너 실행을 위해 필요한 파일 및 설정들이 들어있는 것인데 특이한 점은 이 이미지를 가지고 컨테이너를 실행하여 어떤 상태에 대한 값을 바꾸게 되면 이미지의 내용이 바뀌는 것이 아니라 컨테이너 내부에 기록된다는 것입니다. (즉, 불변!)

그래서 위 그림처럼 하나의 이미지로 여러 컨테이너를 실행할 수 있습니다.


그래서 뭘 할 건데?


포스팅의 제목에 나와있는 것처럼 Docker로 프로젝트 관리를 위한 Redmine 서버를 만들고자 합니다.

라즈베리 파이의 NOOBS가 Host OS가 되고 그 안에 Docker를 설치한 뒤 Mysql과 Redmine에 대한 Container를 생성할 것입니다.


그럼 Git은?

NOOBS(HOST OS)에 설치되어 있는 것을 Redmine 컨테이너와 레포지토리를 공유하여 사용할 것입니다.(뭔가 말이 복잡해 보이네요)


다음 포스팅부터 실습을 통해 세팅을 진행하도록 하겠습니다.


참고 문헌

Docker의 정의

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

반응형