도커의 기능을 더욱 강화해주는 오픈소스 도구 10가지
OSS
게시글 작성 시각 2014-11-04 13:44:41
2014년 11월 03일 (월)
ⓒ ITWorld, Serdar Yegulalp | Australian Reseller News
소프트웨어 프로젝트의 성공 여부를 가늠하는 기준은 그 프로젝트를 중심으로 형성된 생태계를 보면 알 수 있다. 핵심 기술을 중심으로 여러 프로젝트가 구축되면서 그 기술에 강력함과 유용성을 부여한다. 좋은 예가 도커다. 도커는 소프트웨어 컨테이너화 시스템으로, IT 부서에서 프로덕션의 표준 단위로 가상 머신이 아닌 애플리케이션에 집중할 수 있도록 해준다.
도커는 이전부터 많은 퍼스트/서드파티 개발자들의 관심을 모았지만 도커에 속하지 않으면서 도커를 확장하고 보완하거나 강화하는 프로젝트들도 풍부하다. 여기서는 현재 가장 주목할 만한 프로젝트를 살펴본다. 이 중에서 일부는 장기적으로 도커의 일부분이 될 가능성도 있다.
큐버네티스(Kubernetes)
서드파티 도커 프로젝트를 논하는 자리에서 큐버네티스를 빼놓을 수 없다. 큐버네티스는 구글이 컴퓨터 클러스터에 컨테이너를 배포하기 위해 개발한 오픈소스 도커 관리 도구다. 클러스터 전반에 골고루 컨테이너가 배포되도록 하여 도커 노드의 워크로드 관리를 돕는 것 외에, 개방된 네트워크 포트 없이, 또는 다른 복잡한 작업을 할 필요 없이 컨테이너가 서로 통신할 수 있는 방편도 제공한다. 이러한 유용한 기능들, 그리고 큐버네티스가 도커와 같은 언어인 고(Go)를 사용해 작성되었다는 사실은 언젠가 큐버네티스가 도커의 일부로 편입될 가능성을 높여주는 요소다.
서드파티 도커 프로젝트를 논하는 자리에서 큐버네티스를 빼놓을 수 없다. 큐버네티스는 구글이 컴퓨터 클러스터에 컨테이너를 배포하기 위해 개발한 오픈소스 도커 관리 도구다. 클러스터 전반에 골고루 컨테이너가 배포되도록 하여 도커 노드의 워크로드 관리를 돕는 것 외에, 개방된 네트워크 포트 없이, 또는 다른 복잡한 작업을 할 필요 없이 컨테이너가 서로 통신할 수 있는 방편도 제공한다. 이러한 유용한 기능들, 그리고 큐버네티스가 도커와 같은 언어인 고(Go)를 사용해 작성되었다는 사실은 언젠가 큐버네티스가 도커의 일부로 편입될 가능성을 높여주는 요소다.
도커시(Dockersh)
사용자에게 셸 액세스 권한을 부여하고 싶지만 보안 문제가 걱정되는 경우를 위해 도커시는 평균 이상의 보안 수준에서 셸 세션을 제공하는 역할을 한다.
도커시는 여러 사용자가 지정된 하나의 박스에 연결할 수 있도록 허용한다. 이때 각 사용자는 별도의 도커 컨테이너에서 생성된 셸을 실행한다. 사용자는 홈 디렉터리를 보고 이 디렉터리에 영구 변경 작업을 수행할 수 있지만 자기 자신의 프로세스만 보고 자신의 네트워킹 스택만 사용할 수 있다. 도커시를 만든 사람들은 도커시의 잠재적인 보안 결함을 우려해서 제한 없는 공공 액세스에는 도커시를 사용하지 않을 것을 권장한다(적어도 도커에서 이 부분이 강화하기 전까지는). 그러나 개념 자체만으로도 주목할 가치는 충분하다.
사용자에게 셸 액세스 권한을 부여하고 싶지만 보안 문제가 걱정되는 경우를 위해 도커시는 평균 이상의 보안 수준에서 셸 세션을 제공하는 역할을 한다.
도커시는 여러 사용자가 지정된 하나의 박스에 연결할 수 있도록 허용한다. 이때 각 사용자는 별도의 도커 컨테이너에서 생성된 셸을 실행한다. 사용자는 홈 디렉터리를 보고 이 디렉터리에 영구 변경 작업을 수행할 수 있지만 자기 자신의 프로세스만 보고 자신의 네트워킹 스택만 사용할 수 있다. 도커시를 만든 사람들은 도커시의 잠재적인 보안 결함을 우려해서 제한 없는 공공 액세스에는 도커시를 사용하지 않을 것을 권장한다(적어도 도커에서 이 부분이 강화하기 전까지는). 그러나 개념 자체만으로도 주목할 가치는 충분하다.
도커UI(DockerUI)
대부분의 개발자와 관리자는 명령줄을 통해 도커 컨테이너를 만들고 실행하지만 도커의 원격 API를 사용하면 RESTful API를 통해 동일한 명령을 실행할 수 있다. 여기에 도커UI가 사용된다. 이 웹 프론트 엔진은 일반적으로 웹 브라우저의 명령줄을 통해 관리되는 많은 작업을 처리할 수 있게 해준다. 특정 호스트의 모든 컨테이너를 하나의 연결을 통해 조작할 수 있으며 프로젝트 자체에 거의 아무런 종속성도 없다. 현재 개발 중인 단계지만 MIT 라이선스가 적용되므로 상당히 자유롭게 재사용할 수 있다. 다만 내장된 보안이나 인증이 없으므로 공개적으로 노출된 도커UI 연결의 경우 암호를 사용한 보호 수단을 구축하고 그 뒤에 배치해야 한다.
대부분의 개발자와 관리자는 명령줄을 통해 도커 컨테이너를 만들고 실행하지만 도커의 원격 API를 사용하면 RESTful API를 통해 동일한 명령을 실행할 수 있다. 여기에 도커UI가 사용된다. 이 웹 프론트 엔진은 일반적으로 웹 브라우저의 명령줄을 통해 관리되는 많은 작업을 처리할 수 있게 해준다. 특정 호스트의 모든 컨테이너를 하나의 연결을 통해 조작할 수 있으며 프로젝트 자체에 거의 아무런 종속성도 없다. 현재 개발 중인 단계지만 MIT 라이선스가 적용되므로 상당히 자유롭게 재사용할 수 있다. 다만 내장된 보안이나 인증이 없으므로 공개적으로 노출된 도커UI 연결의 경우 암호를 사용한 보호 수단을 구축하고 그 뒤에 배치해야 한다.
쉽야드(Shipyard)
쉽야드는 시타델(Citadel) 클러스터 관리 툴 키트를 사용해 여러 호스트에 걸친 도커 컨테이너 클러스터의 관리를 용이하게 해준다. 웹 UI를 통해 컨테이너가 얼만큼의 CPU 또는 메모리를 사용 중인지, 어떤 컨테이너가 실행 중인지를 한눈에 파악하고 모든 클러스터의 이벤트 로그를 검사할 수 있다. 전체 API와 CLI가 포함되며, 특수하게 만들어진 도커 이미지(익스텐션 이미지라고 함)를 사용해서 쉽야드의 기능을 확장할 수 있다. 기능 확장은 아직 완성 단계는 아니지만 로드 밸런싱/라우팅 이미지는 인터록(Interlock) 프로젝트를 통해 사용할 수 있다.
쉽야드는 시타델(Citadel) 클러스터 관리 툴 키트를 사용해 여러 호스트에 걸친 도커 컨테이너 클러스터의 관리를 용이하게 해준다. 웹 UI를 통해 컨테이너가 얼만큼의 CPU 또는 메모리를 사용 중인지, 어떤 컨테이너가 실행 중인지를 한눈에 파악하고 모든 클러스터의 이벤트 로그를 검사할 수 있다. 전체 API와 CLI가 포함되며, 특수하게 만들어진 도커 이미지(익스텐션 이미지라고 함)를 사용해서 쉽야드의 기능을 확장할 수 있다. 기능 확장은 아직 완성 단계는 아니지만 로드 밸런싱/라우팅 이미지는 인터록(Interlock) 프로젝트를 통해 사용할 수 있다.
카이트매틱(Kitematic)
카이트매틱은 도커를 OS X 기반 프로그래머를 위한 데스크톱 환경 개발자 도구로서 유용하게 만들기 위한 여러 프로젝트 중 하나다. 도커 이미지 다운로드, 실행, 관리 프로세스를 하나의 간편한 작업으로 처리해준다. 비교하자면 VM웨어 워크스테이션과 같은 애플리케이션에서 VM을 사용하는 것만큼 쉽다. 비슷한 다른 프로젝트로는 DVM, 도커 OS X, OS X 인스톨러가 있지만 카이트매틱이 가장 완성도가 높다. 한 가지 큰 단점은 제거 과정이 다소 복잡하다는 것이다.
카이트매틱은 도커를 OS X 기반 프로그래머를 위한 데스크톱 환경 개발자 도구로서 유용하게 만들기 위한 여러 프로젝트 중 하나다. 도커 이미지 다운로드, 실행, 관리 프로세스를 하나의 간편한 작업으로 처리해준다. 비교하자면 VM웨어 워크스테이션과 같은 애플리케이션에서 VM을 사용하는 것만큼 쉽다. 비슷한 다른 프로젝트로는 DVM, 도커 OS X, OS X 인스톨러가 있지만 카이트매틱이 가장 완성도가 높다. 한 가지 큰 단점은 제거 과정이 다소 복잡하다는 것이다.
로그스파우트(Logspout)
도커는 아직 도커 컨테이너 내에서 실행되는 프로그램에 의해 생성되는 로그를 관리하기 위한 수단을 제공하지 않는다. 14MB의 용량에 비지박스(BusyBox)를 코어로 사용하는 도커 컨테이너인 로그스파우트는 컨테이너 앱 로그를 하나의 중앙 위치(예를 들어 하나의 JSON 개체, 또는 HTTP API를 통해 사용 가능한 스트리밍되는 엔드포인트)로 라우팅할 수 있게 해준다. 현재 컨테이너에서 stdout 및 stderr 출력만 가능하다는 제한이 있지만 향후 도커가 연결 고리만 제공한다면 더 포괄적인 로깅을 제공할 계획이다. 앞으로의 진행 상황을 주목할 만한 프로젝트다.
도커는 아직 도커 컨테이너 내에서 실행되는 프로그램에 의해 생성되는 로그를 관리하기 위한 수단을 제공하지 않는다. 14MB의 용량에 비지박스(BusyBox)를 코어로 사용하는 도커 컨테이너인 로그스파우트는 컨테이너 앱 로그를 하나의 중앙 위치(예를 들어 하나의 JSON 개체, 또는 HTTP API를 통해 사용 가능한 스트리밍되는 엔드포인트)로 라우팅할 수 있게 해준다. 현재 컨테이너에서 stdout 및 stderr 출력만 가능하다는 제한이 있지만 향후 도커가 연결 고리만 제공한다면 더 포괄적인 로깅을 제공할 계획이다. 앞으로의 진행 상황을 주목할 만한 프로젝트다.
오토독(Autodock)
도커 자동화 도구는 흔하다. 어쨌든 도커의 목적이 자동화를 더 쉽게 하자는 것이기 때문이다. 그러나 오토독은 여러 가지 차별화된 요소로 그 중에서도 돋보인다. 오토독은 솔트(Salt) 및 솔트스택(SaltStack)을 주 자동화 기술로 사용하는 환경에서 작동하며, 지정된 도커 클러스터에서 어떤 서버의 부하가 가장 낮은지 판단하여 최대한 빠르게 새 컨테이너를 가동하도록 만들어졌다. 한 가지 불만 사항은 이 도구를 사용하기 위해 필요한 요소가 너무 많다는 것이다(솔트스택, 고랭(Golang), Etcd, 파이썬).
도커 자동화 도구는 흔하다. 어쨌든 도커의 목적이 자동화를 더 쉽게 하자는 것이기 때문이다. 그러나 오토독은 여러 가지 차별화된 요소로 그 중에서도 돋보인다. 오토독은 솔트(Salt) 및 솔트스택(SaltStack)을 주 자동화 기술로 사용하는 환경에서 작동하며, 지정된 도커 클러스터에서 어떤 서버의 부하가 가장 낮은지 판단하여 최대한 빠르게 새 컨테이너를 가동하도록 만들어졌다. 한 가지 불만 사항은 이 도구를 사용하기 위해 필요한 요소가 너무 많다는 것이다(솔트스택, 고랭(Golang), Etcd, 파이썬).
DIND(Docker-in-Docker)
도커-인-도커는 이름이 모든 것을 말해준다. 즉, 도커 컨테이너 내에서 도커를 실행할 수 있도록 한다. 이 기능은 도커 0.6에서 컨테이너를 위한 고급 권한 모드가 추가되면서 가능해졌다. 영화 “인셉션”이 연상되는 사람?
이 도구는 도커 자체를 도커 컨테이너에 서비스로 제공하고자 할 때, 예를 들어 자동화 도구 또는 방법을 실험하고 싶은 경우 유용하다. 참고로 도커의 “안쪽(도커 내의 도커)” 인스턴스는 docker.io에서 빌드될 때 가져오는 최신 도커 바이너리다. 또한 이와 같은 방식으로 실행되는 인스턴스는 고급 권한 모드에서 실행된다는 것도 알아두어야 한다. 따라서 도커화되지 않은 외부 환경에 노출할 경우 주의를 기울여야 한다.
도커-인-도커는 이름이 모든 것을 말해준다. 즉, 도커 컨테이너 내에서 도커를 실행할 수 있도록 한다. 이 기능은 도커 0.6에서 컨테이너를 위한 고급 권한 모드가 추가되면서 가능해졌다. 영화 “인셉션”이 연상되는 사람?
이 도구는 도커 자체를 도커 컨테이너에 서비스로 제공하고자 할 때, 예를 들어 자동화 도구 또는 방법을 실험하고 싶은 경우 유용하다. 참고로 도커의 “안쪽(도커 내의 도커)” 인스턴스는 docker.io에서 빌드될 때 가져오는 최신 도커 바이너리다. 또한 이와 같은 방식으로 실행되는 인스턴스는 고급 권한 모드에서 실행된다는 것도 알아두어야 한다. 따라서 도커화되지 않은 외부 환경에 노출할 경우 주의를 기울여야 한다.
히로쿠-도커(Heroku-Docker)
히로쿠는 한때 폭넓은 언어 지원을 갖춘 뛰어난 PaaS였지만(지금도 어느 정도는 맞는 말임), 도커는 어디서나 PaaS와 같은 작업을 가능하게 해준다. 기존 히로쿠 프로젝트를 처음부터 새로 빌드하지 않고 도커로 마이그레이션하고자 한다면 히로쿠-도커만 있으면 된다. 간단하고 작은 이 프로젝트는 기존 히로쿠 앱을 가져다가 명령줄에서 몇 마디 명령만으로 도커 이미지로 변환해준다.
히로쿠는 한때 폭넓은 언어 지원을 갖춘 뛰어난 PaaS였지만(지금도 어느 정도는 맞는 말임), 도커는 어디서나 PaaS와 같은 작업을 가능하게 해준다. 기존 히로쿠 프로젝트를 처음부터 새로 빌드하지 않고 도커로 마이그레이션하고자 한다면 히로쿠-도커만 있으면 된다. 간단하고 작은 이 프로젝트는 기존 히로쿠 앱을 가져다가 명령줄에서 몇 마디 명령만으로 도커 이미지로 변환해준다.
도커 노드 테스터(Docker Node Tester)
새로운 IT 기술을 위한 테스트 메커니즘으로 또 다른 새로운 최신 IT 기술을 사용하는 경우? 도커 노드 테스터가 자주 사용된다. DNT가 제공하는 테스트 베드에서는 Node.js 프로젝트가 도커 컨테이너 내의 여러 Node.js 버전에서 실행된 다음 결과를 표로 보여준다. 또한 노드의 최신 실험 버전을 대상으로 한 자동 테스트도 가능하다. 유의해야 할 점은 소스에서 다양한 노드 버전이 빌드된다는 것이다. 즉, 전체 노드 소스 트리의 로컬 사본이 만들어지므로 충분한 공간을 미리 확보해야 한다.
새로운 IT 기술을 위한 테스트 메커니즘으로 또 다른 새로운 최신 IT 기술을 사용하는 경우? 도커 노드 테스터가 자주 사용된다. DNT가 제공하는 테스트 베드에서는 Node.js 프로젝트가 도커 컨테이너 내의 여러 Node.js 버전에서 실행된 다음 결과를 표로 보여준다. 또한 노드의 최신 실험 버전을 대상으로 한 자동 테스트도 가능하다. 유의해야 할 점은 소스에서 다양한 노드 버전이 빌드된다는 것이다. 즉, 전체 노드 소스 트리의 로컬 사본이 만들어지므로 충분한 공간을 미리 확보해야 한다.
※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지
번호 | 제목 | 조회수 | 작성 |
---|---|---|---|
공지 | [Open UP 활용가이드] 공개SW 활용 및 개발, 창업, 교육 "Open UP을 활용하세요" | 367470 | 2020-10-27 |
공지 | [Open UP 소개] 공개SW 개발·공유·활용 원스톱 지원 Open UP이 함께합니다 | 357250 | 2020-10-27 |
3615 | 그루터, 호튼웍스와 빅데이터 기술협력 | 3409 | 2014-11-11 |
3614 | 노블리스 오블리제? 오픈소스가 된 보안 툴 10개 | 3421 | 2014-11-11 |
3613 | 페이스북, 오픈소스 HTTP 라이브러리 ‘프록시젠’ 공개 | 3876 | 2014-11-11 |
3612 | 오픈소스 개발자가 말하는 프로젝트 성공비법 | 3599 | 2014-11-11 |
3611 | 오픈소스, SW 개발 트렌트를 바꾼다 | 3529 | 2014-11-11 |
3610 | 정부통합전산센터 `공개SW 유지관리` 단독 발주 | 3186 | 2014-11-11 |
3609 | 도커의 기능을 더욱 강화해주는 오픈소스 도구 10가지 | 3509 | 2014-11-04 |
3608 | 안드로이드 창시자 앤디 루빈, 구글 떠난다 | 3238 | 2014-11-04 |
3607 | "애플 제치고 1위" 아마존, 태블릿 만족도 조사에서 약진 | 3521 | 2014-11-03 |
3606 | 2020년까지 중국내 윈도우 PC를 모두 리눅스로 교체? | 3538 | 2014-11-03 |
0개 댓글