Posts Docker, 도커는 무엇인가 - 1
Post
Cancel

Docker, 도커는 무엇인가 - 1

도커에 대해서 공부한 내용을 정리하려고 합니다. 본 내용은 처음 도커를 공부하시거나 왜 도커를 배워야하는지에 대해 의문점이 있으시다면 한번 보시면 좋을 것 같습니다. 잘못된 내용이나 궁금하신 점은 댓글로 작성해주시면 감사드립니다.

도커란?

도커(Docker)는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트입니다. Go 언어로 작성돼 있으며, 기존에 쓰이던 가상화 방법인 가상머신과 달리 도커 컨테이너는 성능의 손실이 거의 없어 차세대 클라우드 인프라 솔루션으로서 많은 개발자에게 주목받고 있습니다.

1
2
3
4
5
- Docker Compose
- Private Registry
- Docker Machine
- Kitematic
- 등등

가상 머신과 도커 컨테이너

image 그림 : 도커 컨테이너와 가상 머신의 구조

기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었습니다. 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상머신에는 우분투(ubuntu), CentOS 등의 운영체제가 설치되어 사용됩니다. 이러한 각 게스트 운영체제는 다른 게스트 운영체제와 완전히 독립된 공간에 시스템 자원을 할당받아 사용합니다. 이때 가상화 방식을 사용할 수 있는 대표적인 가상화 툴로 VirtualBox, VMware 등이 있습니다.

도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스(namespace), cgroup을 사용해 프로세스 단위의 격리 환경을 만들어 성능손실이 거의 없습니다. 또한 컨테이너 안에는 애플리케이션을 구동하는데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상 머신에 비해 대폭 줄어듭니다.

따라서 컨테이너를 이미지로 만들어 배포하는 시간이 가상 머신에 비해 빠르며, 가상화된 공간을 사용할 때의 성능 손실도 거의 없다는 장점이 있습니다.

도커 왜 시작해야 할까

컨테이너는 OpenVZ, LXC, cri-o 등 몇 가지가 존재하지만, 그 중에서도 도커는 컨테이너 생태계에서 사실상 표준으로 많이 사용되고 있습니다. 따라서 많은 회사들이 서비스 개발 및 운영 환경에 도커 컨테이너를 도입하고 있습니다. 왜 많은 회사, 프로젝트들이 도커를 선택하고 시작했을까요?

  • 애플리케이션의 개발과 배포가 편해집니다.
  • 여러 애플리케이션의 독립성과 확장성이 높아집니다.

도커 엔진의 종류 및 버전

2017년 이전의 도커 엔진은 1.12와 같이 1.x 버전으로 표기되었습니다. 그러나 1.13을 마지막으로, 2017년 3월 부터 도커 EE(Docker Enterprise Edition)도커 CE(Community Edition)으로 구분되어 제공되고 있으며 17.03-EE 또는 17.03-CE와 같이 (출시년도)-(출시 월)-(도커 엔진 종류)의 형태로 변경되었습니다.

도커 EE는 유료로 제공되는 기업용 솔류션이며, 각종 기술 지원 및 실제 서비스 단계에서 필요한 각종 부가 기능들을 도커 엔진과 함께 제공합니다. 도커 CE는 무료로 제공되는 도커 엔진으로서, 별도의 기술 지원 및 서비스를 제공하지는 않지만 도커 엔진 자체의 핵심적인 기능을 무료로 사용할 수 있다는 장점이 있습니다.

참고내용

도커의 기능을 완전하게 사용하려면 리눅스에서 사용하는 것이 가장 바람직하지만 윈도우와 MacOS 에서도 간단한 테스트나 개발 용도로 사용할 수 있습니다. 그러나 리눅스를 사용할 수 있는 환경이라면 리눅스를 사용하는 것이 좋습니다.

출처

This post is licensed under CC BY 4.0 by the author.

Python 클래스(class) & 매소드(method) - 1

Docker, 도커 엔진 - 2

Comments powered by Disqus.