견적 및 제품문의 : sales@opennaru.com
02-469-5426
분류 전체보기 (127)
오픈나루 소식 (1)
Techie Talk (5)
오픈소스 뉴스 (15)
JBoss EAP (39)
클라우드 (3)
No SQL (12)
UI (1)
Azul Zing (5)
KHAN (25)
BRMS (2)
EAI (2)
Load Test (1)
Java Troubleshooting (3)
Security (1)
Database (1)
docker (10)
memory
memory
href="http://eliteanus.ru/stra..
오픈나루 - Cen..
352,368 Visitors up to today!
Today 31 hit, Yesterday 188 hit
daisy rss
tistory 티스토리 가입하기!
2014.02.11 08:49
오픈소스 라이센스를 검증하는 블랙 덕 소프트웨어에서 매년 뽑는  "오픈 소스 올해의 루키" 중 하나로 선정된 Docker 소개한다.
Docker는 PaaS 공급 업체 DotCloud 가 PaaS의 벡엔드로 사용하는 컨테이너 기반의 가상화 소프트웨어를 오픈소스로 공개한 것이다.
Red Hat 의 RHEL 6.5 버전에도 Linux Containers (LXC) 을 기반으로하는 컨테이너 엔진인 docker 를 포함하게 되었다.
Docker 는 하나의 Linux 시스템에 여러 Linux 시스템 운영을 위한 소프트웨어이다. 시스템의 분리에는 Linux Containers (LXC)을 파일 시스템은 Advanced multi layered unification filesystem (Aufs)를 사용하고 있다. Docker은 Go로 작성되었습니다. 소스 코드 전체는 대략 15,000 줄 정도 된다.

  • Docker 는?
지금 까지 가상화라고 하면 VirtualBox , KVM, VMWare 정도 알고 있었는데 , 완전히 새로운 형태의 가상화 엔진이 나타났다. 이 새로운 Docker 는 한 시스템에서 많은 수의 가상 머신을 시작과 동시에 바로 사용할 수 있는 가볍고 빠른 가상화 기술이다.  기술적으로 이 Docker 를 정리하자면 LXC 와 AUFS를 조합하여 GitHub 와 같은 형태로 사용할 수 있도록 만든 새로운 형태의 PaaS를 위한 경제적인 가상화엔진이라고 할 수 있다.






  • Linux Container (LXC)

Docker는 간단하게 말하자면 Linux Container (LXC)의 랩퍼이다. 하지만 단순히 LXC 만 랩핑하는 것 뿐이 아니라 Docker Union 파일 시스템을 사용하여 컨테이너 작업을 commit 이나 push 와 같은 익숙한 인터페이스로 변경 내용을 관리할 수 있도록 한다.
LXC 는 가상화 기술의 일종으로 컨테이너라는 가상 컴퓨터를 독립적인 호스트 환경으로 사용할 수 있게 한다. 하이퍼바이저형 가상화 기술을 이용하는 Xen Server 등과 는 달리 LXC 는 매우 가볍고 빠르다.

  • AUFS
AUFS는 Union FS의 새로운 구현체로 다른 여러 파일 시스템을 하나의 파일 시스템으로 병합할 수 있다. OS 중에서 LiveCD 라고 하는 리눅스 배포판에 적용되는 파일 시스템이 "AUFS (Another Union File System)" 이다. LiveCD로 만들어진 OS 는 하드디스크에 OS 를 설치하지 않고 CD나 DVD에서 부팅하고 바로 OS 를 사용할 수 있는 장점이 있다. 반면에 문제는 변경된 내용을 저장하지 못한다. 이러한 단점을 보완하기 위해서 사용되고 있는 파일 시스템이 AUFS 이다. AUFS는 광학미디어에 저장할 내용을 메모리에 저장해 두고 추가/변경된 파일을 읽을 경우 메인 메모리에서 저장된 파일을 로드하게된다. 또한 AUFS 데이터는 USB 메모리에 저장이 가능하여, 부팅용 DVD 미디어와 변경된 내용을 저장한 USB 를 함께 사용하여 최신 OS 를 재현할 수도 있다.

Docker는 AUFS에 크게 의존하고 있다. Docker가 새로운 이미지를 만들 때 실제로 새 파일을 통째로 만드는 것은 아니다. 대신 Docker는 기반이되는 이미지에 대한 포인터를 유지하고 이미지를 만든다. 포인터를 만들 뿐이며, 이 시점에서 디스크에 쓰기가 발생하지 않는다. 기반 이미지에서 파일 시스템을 분기 할 때 (예를 들어 새로운 파일을 만들거나 파일에 변경하였을 때) 처음 그 변경 사항을 디스크에 기록한다. 이 기술은 일반적으로 복사 (COW)이라고 한다.

이미지 변경은 커밋 할 때마다, Docker 의 새로운 파일 시스템 레이어로 쌓여 간다. 이 동작을 Docker는 "파일 시스템을 스택한다"라고 부른다.

  • Docker 를 정리 하자면
Docker 는 매우 기대되는 가상화 기술 이지만 아직 걸을 수 있다고 할 수 있을 만큼의 성숙한 기술이라고 하기는 어렵다. 특히 Docker 에서는 컨테이너에서 스토리지 사용에 단점이 있다. 기본적으로 컨테이너에서 커밋 하지 않고 종료하면 변경된 모든 내용이 사라져 버린다. 이것은 응용 프로그램에서 로그를 저장하거나 데이터베이스를 운영하는데 있어서 치명적인 문제가 될 수 있다. Extenal Volume 이라는 기능이 있기 때문에 사용할 수도 있지만 아직 개발 중이므로 운영 환경에서 적용은 어려울 것이다.


다음 포스트에서는 Docker 맛보기로 맥에서  실행 하는 예제를 포스트 할 것이다.


참고 자료

  • 이렇게 배포해야 할까? - Lightweight Linux Container Docker 를 활용하여 어플리케이션 배포하기 (KT 김영찬님 발표자료 ) - http://deview.kr/2013/detail.nhn?topicSeq=45


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Name
Password
Homepage
Secret

티스토리 툴바