2014.06.13

리뷰: 도약을 눈앞에 둔 '도커(Docker) 1.0'

Paul Venezia | InfoWorld

앱과 서비스를 개발 단계에서 프로덕션 단계로, 또는 한 서버 환경에서 다른 서버 환경으로 손쉽게 마이그레이션할 방법을 찾는 사람이라면 아마도 이미 도커(Docker)를 알고 있을 것이다. 리눅스 컨테이너 솔루션인 도커는 아직 프로덕션용으로 쓰기엔 설익었다는 시각이 지배적이지만 그 강력한 파급력은 이미 입증된 지 오래다.

도커 팀은 프로덕션용 릴리스를 최종 발표하기 위한 작업을 꾸준히 진행해 도커 1.0에 이르러 마침내 그 목표를 달성한 것으로 보인다.

도커 1.0이 프로덕션 환경에 걸맞은 준비가 된 것은 중요한 여러 개선 사항들 덕분이다. 이전 버전에서는 내부 브리지가 필요했지만 이제는 호스트 네트워크 인터페이스에 직접 연결이 가능하다.

연결된 도커 컨테이너는 호스트 이름으로 서로 찾을 수 있고 호스트 파일은 정확한 호스트를 반영하도록 수정된다. 또한 도커는 시큐리티 인핸스드 리눅스(SELinux)에서 잘 작동하며 뛰어난 모니터링 기능을 지원하고 각 컨테이너에 대해 시간 스탬프가 적용된 로그를 제공하고, 여러 엔드포인트로 레지스트리 미러를 지원해 예비성과 안정성을 높여준다.

이는 모두 중요한 개선 사항들이며, 이를 통해 도커는 여러 사용 사례와 프로덕션 시나리오에 걸쳐 훨씬 더 큰 효용성을 갖추게 됐다. 특히 비용도 들지 않는다. 도커는 아파치 2.0 오픈 소스 라이선스에 따라 무료로 배포된다.

도커 개요
가상 머신과 비슷하지만 훨씬 더 가벼운 도커 컨테이너(Docker container)는 여러 호스트 서버 사이에서 애플리케이션과 서비스를 매끄럽게 이동할 수 있게 해준다. 또한 물리적 서버, 가상 서버 또는 클라우드 인스턴스에 걸쳐 애플리케이션과 서비스의 탄력성과 간편한 확장(스케일링)을 가능하게 해주는 버전 관리 및 이미지 관리 도구를 포함한다.

예를 들어 멤캐시(memcached) 서비스 또는 아파치 웹 서버 전용 도커 컨테이너를 만들 수 있다. 이 컨테이너는 우분투 또는 센트OS(Cent OS)와 같은 표준 리눅스 기반에서 만들 수 있으며, 보통 리눅스 시스템에서 하듯 원하는 서비스를 설치하고 구성할 수 있다. 일단 컨테이너가 구축되면 이 컨테이너를 깃(Git) 버전 제어에 체크인하고 다른 시스템에서 체크아웃하고 즉시 시작해서 실용적인 프로덕션 서비스로 만들 수 있다.

따라서 이 멤캐시 인스턴스를 복제해서 가상 서버, 물리적 서버, 아마존 클라우드 인스턴스 또는 기타 도커를 실행할 수 있는 모든 곳에서 실행할 수 있다. 호스트 간의 서비스 종속성에 대해 신경쓸 필요도 없고 애플리케이션 설치, 하드웨어 에뮬레이션 또는 기타 전통적인 가상화의 골칫거리에 대해 걱정할 필요도 없다. 올바르게 구축한 컨테이너를 원하는 위치에서 시작하기만 하면 된다.

도커의 동작 방식
도커는 리눅스 시스템 이미지를 기반으로 컨테이너를 만든다. 버추오조(Virtuozzo)와 같은 다른 반가상화(paravirtualization) 도구와 마찬가지로 모든 인스턴스는 본질적으로 호스트 시스템의 커널에서 실행되지만, 호스트 환경과 분리된 자체 런타임 환경에 갇힌다.

도커 컨테이너를 시작하거나 만들면 이 컨테이너 내에 활성 프로세스가 실행 중인 경우에만 컨테이너도 활성 상태가 된다.

데몬 프로세스를 시작하면 포어그라운드(foreground)에서 프로세스의 활성 상태가 중단되므로 컨테이너는 즉시 종료된다. 포어그라운드에서 프로세스를 시작하면 컨테이너는 해당 프로세스가 종료될 때까지 정상적으로 실행된다.

동일한 호스트의 구획화된 환경에서 "일반적인" 가상 서버 인스턴스를 설정하는 다른 반가상화 도구와 다른 점이다. 이런 인스턴스는 활성 포어그라운드 프로세스가 없어도 지속된다.

도커는 대부분의 주요 리눅스 배포판과 맥 OS X 및 윈도우에 설치할 수 있다. 다만 맥 OS X과 윈도우의 경우 에뮬레이션된 가상 머신을 호스트로 사용해야만 가능하다.


2014.06.13

리뷰: 도약을 눈앞에 둔 '도커(Docker) 1.0'

Paul Venezia | InfoWorld

앱과 서비스를 개발 단계에서 프로덕션 단계로, 또는 한 서버 환경에서 다른 서버 환경으로 손쉽게 마이그레이션할 방법을 찾는 사람이라면 아마도 이미 도커(Docker)를 알고 있을 것이다. 리눅스 컨테이너 솔루션인 도커는 아직 프로덕션용으로 쓰기엔 설익었다는 시각이 지배적이지만 그 강력한 파급력은 이미 입증된 지 오래다.

도커 팀은 프로덕션용 릴리스를 최종 발표하기 위한 작업을 꾸준히 진행해 도커 1.0에 이르러 마침내 그 목표를 달성한 것으로 보인다.

도커 1.0이 프로덕션 환경에 걸맞은 준비가 된 것은 중요한 여러 개선 사항들 덕분이다. 이전 버전에서는 내부 브리지가 필요했지만 이제는 호스트 네트워크 인터페이스에 직접 연결이 가능하다.

연결된 도커 컨테이너는 호스트 이름으로 서로 찾을 수 있고 호스트 파일은 정확한 호스트를 반영하도록 수정된다. 또한 도커는 시큐리티 인핸스드 리눅스(SELinux)에서 잘 작동하며 뛰어난 모니터링 기능을 지원하고 각 컨테이너에 대해 시간 스탬프가 적용된 로그를 제공하고, 여러 엔드포인트로 레지스트리 미러를 지원해 예비성과 안정성을 높여준다.

이는 모두 중요한 개선 사항들이며, 이를 통해 도커는 여러 사용 사례와 프로덕션 시나리오에 걸쳐 훨씬 더 큰 효용성을 갖추게 됐다. 특히 비용도 들지 않는다. 도커는 아파치 2.0 오픈 소스 라이선스에 따라 무료로 배포된다.

도커 개요
가상 머신과 비슷하지만 훨씬 더 가벼운 도커 컨테이너(Docker container)는 여러 호스트 서버 사이에서 애플리케이션과 서비스를 매끄럽게 이동할 수 있게 해준다. 또한 물리적 서버, 가상 서버 또는 클라우드 인스턴스에 걸쳐 애플리케이션과 서비스의 탄력성과 간편한 확장(스케일링)을 가능하게 해주는 버전 관리 및 이미지 관리 도구를 포함한다.

예를 들어 멤캐시(memcached) 서비스 또는 아파치 웹 서버 전용 도커 컨테이너를 만들 수 있다. 이 컨테이너는 우분투 또는 센트OS(Cent OS)와 같은 표준 리눅스 기반에서 만들 수 있으며, 보통 리눅스 시스템에서 하듯 원하는 서비스를 설치하고 구성할 수 있다. 일단 컨테이너가 구축되면 이 컨테이너를 깃(Git) 버전 제어에 체크인하고 다른 시스템에서 체크아웃하고 즉시 시작해서 실용적인 프로덕션 서비스로 만들 수 있다.

따라서 이 멤캐시 인스턴스를 복제해서 가상 서버, 물리적 서버, 아마존 클라우드 인스턴스 또는 기타 도커를 실행할 수 있는 모든 곳에서 실행할 수 있다. 호스트 간의 서비스 종속성에 대해 신경쓸 필요도 없고 애플리케이션 설치, 하드웨어 에뮬레이션 또는 기타 전통적인 가상화의 골칫거리에 대해 걱정할 필요도 없다. 올바르게 구축한 컨테이너를 원하는 위치에서 시작하기만 하면 된다.

도커의 동작 방식
도커는 리눅스 시스템 이미지를 기반으로 컨테이너를 만든다. 버추오조(Virtuozzo)와 같은 다른 반가상화(paravirtualization) 도구와 마찬가지로 모든 인스턴스는 본질적으로 호스트 시스템의 커널에서 실행되지만, 호스트 환경과 분리된 자체 런타임 환경에 갇힌다.

도커 컨테이너를 시작하거나 만들면 이 컨테이너 내에 활성 프로세스가 실행 중인 경우에만 컨테이너도 활성 상태가 된다.

데몬 프로세스를 시작하면 포어그라운드(foreground)에서 프로세스의 활성 상태가 중단되므로 컨테이너는 즉시 종료된다. 포어그라운드에서 프로세스를 시작하면 컨테이너는 해당 프로세스가 종료될 때까지 정상적으로 실행된다.

동일한 호스트의 구획화된 환경에서 "일반적인" 가상 서버 인스턴스를 설정하는 다른 반가상화 도구와 다른 점이다. 이런 인스턴스는 활성 포어그라운드 프로세스가 없어도 지속된다.

도커는 대부분의 주요 리눅스 배포판과 맥 OS X 및 윈도우에 설치할 수 있다. 다만 맥 OS X과 윈도우의 경우 에뮬레이션된 가상 머신을 호스트로 사용해야만 가능하다.


X