샤인의 IT (막 적는) 메모장

[Docker] What is Docker? 본문

Container/Docker

[Docker] What is Docker?

신샤인 2021. 3. 23. 15:06
반응형

도커란 무엇일까요?

 

Docker doc 소개

도커는 어플리케이션을 개발하고 실행하기 위한 오픈소스 플랫폼으로 인프라로부터 어플리케이션을 분리시켜줄 수 있다고 소개하고 있습니다.

 

앞장에서 말한 것처럼 도커는 Container를 통하여 어플리케이션을 독립적인 환경으로 제공한다는 것을 알 수 있습니다.

 

그럼 도커는 어떻게 발전하게 되었을까요?

 

도커는 없던 기술을 개발해서 만들어낸 플랫폼이 아닙니다.

 

리눅스 커널의 기능들을 좀 더 쉽게 상용화하여 제공하는 플랫폼으로 발전한 것이 도커입니다.

 

도커의 근간은 컨테이너며 리눅스 커널 기능 중 chroot, cgroups, namespace 근간을 두고 있습니다.

 

Chroot

 

Chroot는 특정 사용자, 그룹에 특정 환경을 제공하지만 메인 시스템으로는 접근을 방지하는 기능입니다.

 

예를들어 sshine.com이라는 도메인을 가지는 웹서버에 HTTP 프로토콜을 통해 접속을 요청할 경우

 

/는 Root 디렉토리로 접속을 요청하게 되는데 이를 허용하는 경우 보안에 굉장히 취약해질수 있습니다.

 

실제로 자주 사용하는 Apache나 Nginx의 설정을 찾아보면 chroot 설정이 기본적으로 들어가 있고 특정 디렉토리로 리다이렉션합니다.

 

 

chroot 예시

Cgroups

 

Control Groups의 약자로 프로세스들이 사용하는 리소스를 제한하거나 격리시킬 수 있는 기능입니다.

 

/sys/fs/cgroups 디렉토리에서 확인할 수 있으며 CPU, MEM, Network, Device등을 설정할 수 있습니다.

 

/sys/fs/cgroup 디렉토리 목록

 

Linux Namespace

 

네임스페이스는 오브젝트에 Naming을 부여하여 해당 리소스를 격리시킬 수 있는 기능입니다.

 

IPC, Network, Mount, PID, UTS, User를 네임스페이스로 격리시킬 수 있습니다

 

unshare 명령어를 통하여 사용할 수 있습니다.

 

unshare

 

이처럼 도커는 완전히 새로운 기능을 개발한 것이 아닌

리눅스 커널 기능을 적재적소로 사용하여 만들어낸 창작물로만 이해하시면 될 것 같습니다.

그렇다면 도커는 어떤 구조를 가지고 있을까요?

 

https://docs.docker.com/get-started/overview/

Docker Daemon

 

도커 데몬은 도커 서버의 기능을 수행하며 다른 클라이언트들의 요청에 응답하거나 내부 이미지 및 컨테이너를 관리하는 기능을 수행합니다.

 

Docker Client

 

도커 명령어를 수행하며 도커 데몬에 명령어 처리를 요청합니다.

 

Docker Registry

 

도커 이미지를 저장하는 공간으로 이미지를 다운로드 및 업로드하여 관리합니다.

 

이처럼 도커에 대해서 알아봤습니다.

결국 도커는 리눅스 커널 기능을 적재적소로 조합하여 만들어낸 하나의 플랫폼으로

컨테이너의 대중화에 큰 기여를 했다고 생각합니다.

 

 

Good Day!

 

 

 

반응형

'Container > Docker' 카테고리의 다른 글

[Docker] Dockerfile 작성  (0) 2021.03.26
[Docker] Docker Registry  (0) 2021.03.25
[Docker] 이미지 태깅 및 압축 파일 만들기  (0) 2021.03.24
[Docker] 도커 이미지 이해와 기본 명령어  (0) 2021.03.24
[Docker] 도커 설치  (0) 2021.03.23
Comments