도커란 무엇인가?
1. 도커의 정체?
2. 데이터나 프로그램을 독립된 환경에 격리해야하는 이유?
3. 프로그램의 격리란?
4. 서버의 두 가지 의미
5. 도커와 가상화 기술의 차이
1. 도커의 정체?
- '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어다.
- 컨테이너 기술을 기반으로 한 가상화 플랫폼이다.
- 가상화 : 물리적 자원인 하드웨어를 활용하기 위해 공간 위에 가상 머신을 만드는 것이다.
- 컨테이너 : 컨테이너가 실행되고 있는 호스트 OS의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술이다.
- 이미지를 실행시켜 컨테이너로 만들고, 컨테이너를 관리하고, 컨테이너를 다시 이미지로 만드는 작업을 할 수 있다.
- 다른 라이브러라와 충돌을 바지하기 위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때, 배포 중인 서비스를 받아 실행해볼 때 유용하다.

가상화
- 하나의 하드웨어를 여러 개의 가상 머신으로 분할해 효율적으로 사용할 수 있는 기술이다.
- 분할된 가상 머신은 각각 독립적인 환경으로 구동된다.
- 베이스가 되는 기존의 내 컴퓨터의 환경을 Host OS라고 하고, 가상 머신으로 분할된 각각의 환경을 Guest OS라 한다.
- 가상 머신을 생성하기 위해서는 하이퍼바이저 등을 이용한다.
- 하이퍼바이저 : 호스트 하드웨어에 설치되어 하드웨어와 게스트를 나누는 역할을 한다.
하이퍼바이저
- 일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어다.
- 각각의 게스트는 하이퍼바이저에 의해 관리되고, 시스템 자원을 할당받는다.
- 하이퍼바이저에 의해 생성된 게스트는 호스트나 다른 게스트에 간섭을 받지 않고 분리된 환경에서 구동된다.
- 하드웨어가 여러 개인 것처럼 하나의 서버를 나눠 사용할 수 있고, 컴퓨터 한 대에서도 서로 다른 OS를 동시에 사용할 수 있다.
- 가상 머신에서는 반드시 하이퍼바이저를 거쳐야 하므로 속도가 저하되고, 이 것이 가상 머신의 한계점이다.

컨테이너
- 하이퍼바이저와 달리 가상의 OS를 만들지 않는다.
- 베이스 환경의 Host OS를 공유하면서 필요한 프로세스만 격리하는 방식이다.
- 따라서 커널을 공유하기 때문에 Host OS의 기능을 모두 사용할 수 있다.
- 컨테이너에는 애플리케이션, 파일, 특정 라이브러리 등 종속 항목만 포함하므로 이미지의 용량이 작아진다.
- OS가 아닌 프로세스고, 하이퍼바이저를 거칠 필요가 없어 실행 속도가 빠르다는 장점이 있다.
- 이미지를 실행하면 프로세스(컨테이너)가 된다.
이미지
- 가상 머신, 컨테이너, 프로그램을 실행하는 데 필요한 파일과 라이브러리, 설정 등을 가지고 있는 파일이다.
- 레이어라는 계층 구조로 이루어져 변경 사항이 생기면 새로운 레이어를 추가해 기록한다.
2. 데이터나 프로그램 격리 이유
- 개별 구성 환경의 호환성 때문에 데이터나 프로그램을 독립적인 환경에 격리한다.
- 프로그램 실행을 위해서는 그 프로그램의 실행 환경이나 라이브러리가 필요하다.
- 예로 파이썬의 경우 라이브러리가 파이썬의 버전에 많은 영향을 받는다.
- 두 프로젝트를 동시에 진행하는 경우 각 프로젝트가 다른 버전을 요구할 수 있고 이 때 한 쪽에만 버전을 맞출 수 없기에 독립적으로 격리시킨다.
- 소프트웨어는 여러 프로그램으로 구성되며, 다른 프로그램과 정보를 공유한다.
3. 프로그램의 격리란?
- 여러 프로그램이 한 서버에서 실행되면서 발생하는 문제들은 도커 컨테이너를 이용해 프로그램을 격리하면 해결할 수 있다.
- 도커 컨테이너는 완전히 독립된 환경으로 여러 컨테이너에서 같은 프로그램을 실행할 수 있다.
- 즉, 하나의 이미지로 여러 컨테이너를 생성할 수 있다.
4. 서버의 두 가지 의미
1) 기능적 의미의 서버
- 흔히 말하는 서버다.
- A 서버라는 말은 A라는 기능을 제공한다는 의미로, 웹 기능을 제공하는 웹 서버 같은 것이 있다.
- 서버의 기능은 소프트웨어가 제공한다. A 소프트웨어를 설치하면, A서버가 된다.
2) 물리적 컴퓨터로서의 서버
- 컴퓨터 자체, 실물을 의미한다.
3) 컨테이너를 이용해 여러 서버 기능을 안전하게 함께 실행하기
- 하나의 물리적 컴퓨터로서의 서버에 여러 기능적 의미의 서버를 둘 수 있다.
- 물리 서버 한 대에 여러 개의 웹 서버를 띄우면 그만큼 물리 서버의 수를 줄일 수 있다.
- 이 때 컨테이너 기술을 활용하지 않으면 여러 개의 프로젝트가 서로를 건드릴 수 있다는 문제가 발생한다.
5. 도커와 가상화 기술의 차이
- Guest OS의 유무다. 도커의 경우 Guest OS가 존재하지 않지만, 가상화 기술의 경우 Guest OS가 존재한다.
- 이로 인해 자원의 효율성 측면에서 차이가 난다.
- 도커는 애플리케이션을 구동하는데 필요한 패키지만 있으면 컨테이너를 구동할 수 있다.
- 가상화 기술은 VM이 증가할 때마다 OS를 위한 자원 할당이 필요하다.

출처
'Backend > Docker' 카테고리의 다른 글
| Te Docker (1) - 도커 데스크탑 설치하기 (윈도우) (0) | 2024.01.21 |
|---|---|
| Te Docker (1) - 도커의 장단점 (0) | 2024.01.20 |
| Te Docker (1) - 도커 컨테이너의 생애주기와 데이터 저장 (0) | 2024.01.20 |
| Te Docker (1) - 도커 허브와 이미지, 컨테이너 (0) | 2024.01.20 |
| Te Docker (1) - 도커의 동작 원리 (0) | 2024.01.20 |