2015.05.27

FAQ : 컨테이너의 이해를 돕는 10가지 질문

Paul Rubens | CIO
도커(docker)는 지난 2년간 폭발적으로 성장하면서 그 어느 때보다도 IT 업계에 생기를 불어넣고 있다. 도커가 제공하는 애플리케이션 컨테이너 기술은 몇 년 전 가상화 기술이 했던 것처럼 IT 운영 방식을 바꿔놓을 것이라고 이야기한다.

여기 도커에 관해 가장 많이 제기되는 질문 10개와 그 답을 준비했다.

컨테이너는 무엇이며 왜 컨테이너가 필요한가?

컨테이너는 소프트웨어가 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 이동되었을 때 어떻게 안정적으로 운영하느냐의 문제를 해결하는 솔루션이다. 개발자의 노트북에서 테스트 환경으로, 스테이징 환경에서 프로덕션으로, 그리고 어쩌면 데이터센터 내의 물리적 기기에서 프라이빗 혹은 퍼블릭 클라우드 내의 가상 머신으로 적용될 수 있다.

도커를 만든 솔로몬 하익스는 지원 소프트웨어 환경이 동일하지 않을 때 문제가 발생한다고 이야기한다. “파이썬 2.7을 활용해 테스트를 한다면 프로덕션에 있어서는 파이썬 3를 구동하게 될 것이고, 그러면 이상한 일들이 발생하게 될 것이다. 아니면 특정 SSL 라이브러리 버전을 기반으로 한 후 다른 버전이 설치돼 버린다. 테스트는 데비안에서 돌리고 생산은 레드햇에서 진행되면 온갖 이상한 문제들이 발생하게 된다.”

또한, 차이를 만들어 내는 원인이 서로 다른 소프트웨어만 있는 게 아니라며, “네트워크 기술이 다를 수 있고, 보안 정책과 스토리지가 다를 수도 있지만, 소프트웨어는 그 기반 위에서 구동되어야 한다”고 덧붙였다.

컨테이너가 이 문제를 어떻게 해결할까?
간단히 설명하자면 컨테이너는 애플리케이션과 애플리케이션을 구동하는데 필요한 모든 종속물, 라이브러리, 기타 바이너리와 구성 파일 등을 하나의 패키지로 묶은 전체 런타임 환경으로 구성되어 있다. 애플리케이션 플랫폼과 그 종속물을 컨테이너화함으로써 운영체제 배포판의 차이점과 기반의 인프라 차이점 문제가 해결된다.

마치 가상화처럼 들리는데, 차이점이 무엇인가?
가상화 기술을 사용하면 이동되는 패키지가 가상머신이 되며, 여기에는 전체 운영체제와 애플리케이션이 모두 포함된다. 세 개의 가상머신을 구동하는 물리 서버는 하이퍼바이저와 그 위에서 구동되는 세 개의 별도 운영체제를 가지게 된다.

반면 단일 운영체제를 구동하는 도커는 세 개의 컨테이너에 담긴 애플리케이션을 구동하는 서버과 각각의 컨테이너가 운영체제 커널을 다른 컨테이너와 공유한다. 운영체제의 공유 부분은 읽기 전용인 반면, 각각의 컨테이너에는 기록을 위한 자체적 마운트(예를 들어 컨테이너에 접속하는 방법)가 있다. 이는 컨테이너가 가상머신보다 훨씬 가볍고 더 적은 자원을 사용한다는 의미다.

실제로 그 부분이 어떻게 차이가 나나?
컨테이너는 규모로 보면 몇십 MB에 불과하지만 가상머신 자체 운영체제는 GB 단위로 넘어간다.

그 때문에 서버 한 대로 가상머신보다 훨씬 많은 컨테이너를 호스팅할 수 있다. 또한 가상 머신은 운영체제를 부팅하고 애플리케이션 구동을 시작하는데 몇 분이 넘게 걸릴 수 있지만, 컨테이너화된 애플리케이션은 거의 즉각적으로 시작할 수 있다.

컨테이너가 운영체제 상에서 공유될 경우 얼마나 안전한가?
컨테이너가 가상머신만큼 안전하지 않다는 게 전반적인 인식이다. 만약 커널에 취약점이 존재한다면 이를 공유하는 컨테이너에 침투가 가능하기 때문이다. 이 점은 하이퍼바이저에 있어서도 적용되는 문제지만, 하이퍼바이저는 파일 시스템, 네트워킹, 애플리케이션 프로세스 제어 등을 수행하는 전형적인 리눅스 커널보다 훨씬 적은 기능성을 제공하기 때문에, 공격면 역시 훨씬 적다.

한마디로 컨테이너는 일반적인 하드웨어 가상화와 같은 수준의 격리를 제공한다고 볼 수 없다.

도커와 컨테이너의 차이점은 무엇인가?
도커는 가장 성공적으로 보급된 컨테이너였기 때문에 컨테이너 기술과 동의어가 되었다. 하지만 컨테이너 기술은 새로운 게 아니다. 거의 10년 전부터 LXC의 형태로 리눅스에 내장돼 있고, 비슷한 운영 체제 수준 가상화 역시 FreeBSD 제일스, AIX 워크로드 파티션(AIX Workload Partitions)와 솔라리스 컨테이너(Solaris Containers)에 의해 제공된다.

그리고 현재는 리눅스에 도커만 있는 상황도 아니다. rkt는 코어OS(CoreOS)에 의해 제작된 앱 컨테이너를 구동하는 명령행 툴로 도커의 대안으로 떠오르고 있다. rkt는 도커 컨테이너를 처리할 수 있을 뿐 아니라 앱 컨테이너 이미지(App Container Image) 사양도 준수한다.

코어OS의 CEO 알렉스 폴비는 rkt를 출범한 이유 중 하나가 도커가 너무 커져서 그 단순성을 잃어버렸기 때문이라고 지적한다. 포버는 “도커는 이제 클라우드 서버, 클러스터링용 시스템 등 다양한 기능을 위한 툴을 구축하고 있다. 이미지 구축, 이미지 구동, 업로드, 다운로드, 그리고 점진적으로 오버레이 네트워킹까지 모두 주로 사용자의 서버상에서 루트로 구동되는 하나의 일원화된 바이너리다”라고 설명했다.

코어OS의 대표적인 지지자인 켈시 하이타워는 앱 컨테이너 이미지가 만든 사람들에 의해 서명되었기 때문에 도커 이미지보다 더 안전하게 만들어진 것이라고 덧붙인다. 하이타워는 “사용자들은 마치 애플이 앱스토어에서 하는 것과 같은 그런 서명을 원한다고 생각한다”며, “rkt를 사용할 때 앱 컨테이너 이미지를 끌어내면 실행하기 전에 그 개발자를 신뢰할지 결정할 수 있다. rkt 역시 도커 이미지를 구동하지만, 도커가 항상 서명되어 있지는 않다”고 지적했다.

도커와 rkt는 어떤 운영체제에서 구동되어야 할까?
LXC(와 LXC를 대체하는 도커의 자체 컨테이너 기술인 리브컨테이너)는 리눅스 기반이기 때문에, 3.8 이후의 현대적 커널을 가진 모든 리눅스 배포판은 x64 하드웨어 상에서 도커와 rkt를 실행할 수 있다.

대부분의 리눅스 배포판은 컨테이너 구동용으로 사용할 경우 불필요하게 기능이 많다. 특별히 컨테이너 구동만을 위해 설계된 수많은 리눅스 배포판이 나온 시점에서 이는 놀라운 일도 아니다. 그 몇몇 예로 코어OS, 레드햇의 프로젝트 아토믹(Project Atomic), 캐노니컬의 스내피 우분투(Snappy Ubuntu), 그리고 VM웨어의 프로젝트 포톤(Project Photon) 등이 있다.

상용 리눅스 컨테이너 솔루션은 존재하나?
그렇다. 다음과 같은 상용 리눅스 컨테이너 솔루션들이 있다.

- 기업용 도커 구독 : 도커 허브 엔터프라이즈, 도커 엔진 그리고 상용 지원 구독을 포함한 번들 솔루션
- 코어OS 텍토닉 : 워크 플로우 관리 콘솔과 대시보드, 공유 리눅스 컨테이너 구축을 위한 통합 레지스트리, 그리고 배치와 업데이트 출시 맞춤설정을 위한 추가 툴과 구글의 큐버네이츠 컨테이너 관리 플랫폼을 포함한 코어OS 소프트웨어로 구성

윈도우를 사용하는 기업은 어떻게 해야 하나?
마이크로소프트는 윈도우 서버에 도커 컨테이너 기술과 윈도우 서버상에서 구동될 윈도우 서버 컨테이너의 도입할 예정이라고 발표했다.

컨테이너를 구동할 목적으로 특별히 설계된 나노 서버(Nano Server)라고 불리는 “씬” 버전의 윈도우 서버 역시 도입될 예정이다. 윈도우 서버 2008의 윈도우 서비스 코어와 비슷한 개념으로, 전형적인 윈도우 서버 설치 규모의 단 5% 정도 밖에 되지 않을 것이다.

컨테이너가 점차적으로 서버 가상화를 대체하게 될까?
가상머신이 컨테이너보다 더 보안이 낫다는 점에서 단기적으로 그럴 가능성은 희박하다.

대규모의 컨테이너를 지휘할 수 있는 관리 툴 역시 가상화 인프라를 관리하는데 사용될 수 있는 VM웨어 v센터나 마이크로소프트의 시스템 센터만큼이나 종합적이지 못한 상태다.

가상화와 컨테이너는 경쟁적 기술이 아니라 보완적 기술이 될 가능성이 높다. 컨테이너는 격리 수준과 보안성을 높이기 위해 경량 가상머신 안에서 구동될 수 있고, 하드웨어 컨테이너를 지원하는데 필요한 가상화가 네트워크, 서버, 스토리지를 관리하기 훨씬 쉽게 만들어주기 때문이다.

하이타워는 “대부분의 사람들은 하드웨어 관리에 열의가 없기 때문에, VM웨어에 맡겨두고 소프트웨어 상으로 관리한다”며, “컨테이너는 아무것도 변화시키지 않는다. 사용자가 컨테이너를 사용할 수 있고, 만약 하드웨어를 관리하고 싶지 않다면 가상화를 사용해도 된다”고 강조했다. editor@itworld.co.kr 


2015.05.27

FAQ : 컨테이너의 이해를 돕는 10가지 질문

Paul Rubens | CIO
도커(docker)는 지난 2년간 폭발적으로 성장하면서 그 어느 때보다도 IT 업계에 생기를 불어넣고 있다. 도커가 제공하는 애플리케이션 컨테이너 기술은 몇 년 전 가상화 기술이 했던 것처럼 IT 운영 방식을 바꿔놓을 것이라고 이야기한다.

여기 도커에 관해 가장 많이 제기되는 질문 10개와 그 답을 준비했다.

컨테이너는 무엇이며 왜 컨테이너가 필요한가?

컨테이너는 소프트웨어가 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 이동되었을 때 어떻게 안정적으로 운영하느냐의 문제를 해결하는 솔루션이다. 개발자의 노트북에서 테스트 환경으로, 스테이징 환경에서 프로덕션으로, 그리고 어쩌면 데이터센터 내의 물리적 기기에서 프라이빗 혹은 퍼블릭 클라우드 내의 가상 머신으로 적용될 수 있다.

도커를 만든 솔로몬 하익스는 지원 소프트웨어 환경이 동일하지 않을 때 문제가 발생한다고 이야기한다. “파이썬 2.7을 활용해 테스트를 한다면 프로덕션에 있어서는 파이썬 3를 구동하게 될 것이고, 그러면 이상한 일들이 발생하게 될 것이다. 아니면 특정 SSL 라이브러리 버전을 기반으로 한 후 다른 버전이 설치돼 버린다. 테스트는 데비안에서 돌리고 생산은 레드햇에서 진행되면 온갖 이상한 문제들이 발생하게 된다.”

또한, 차이를 만들어 내는 원인이 서로 다른 소프트웨어만 있는 게 아니라며, “네트워크 기술이 다를 수 있고, 보안 정책과 스토리지가 다를 수도 있지만, 소프트웨어는 그 기반 위에서 구동되어야 한다”고 덧붙였다.

컨테이너가 이 문제를 어떻게 해결할까?
간단히 설명하자면 컨테이너는 애플리케이션과 애플리케이션을 구동하는데 필요한 모든 종속물, 라이브러리, 기타 바이너리와 구성 파일 등을 하나의 패키지로 묶은 전체 런타임 환경으로 구성되어 있다. 애플리케이션 플랫폼과 그 종속물을 컨테이너화함으로써 운영체제 배포판의 차이점과 기반의 인프라 차이점 문제가 해결된다.

마치 가상화처럼 들리는데, 차이점이 무엇인가?
가상화 기술을 사용하면 이동되는 패키지가 가상머신이 되며, 여기에는 전체 운영체제와 애플리케이션이 모두 포함된다. 세 개의 가상머신을 구동하는 물리 서버는 하이퍼바이저와 그 위에서 구동되는 세 개의 별도 운영체제를 가지게 된다.

반면 단일 운영체제를 구동하는 도커는 세 개의 컨테이너에 담긴 애플리케이션을 구동하는 서버과 각각의 컨테이너가 운영체제 커널을 다른 컨테이너와 공유한다. 운영체제의 공유 부분은 읽기 전용인 반면, 각각의 컨테이너에는 기록을 위한 자체적 마운트(예를 들어 컨테이너에 접속하는 방법)가 있다. 이는 컨테이너가 가상머신보다 훨씬 가볍고 더 적은 자원을 사용한다는 의미다.

실제로 그 부분이 어떻게 차이가 나나?
컨테이너는 규모로 보면 몇십 MB에 불과하지만 가상머신 자체 운영체제는 GB 단위로 넘어간다.

그 때문에 서버 한 대로 가상머신보다 훨씬 많은 컨테이너를 호스팅할 수 있다. 또한 가상 머신은 운영체제를 부팅하고 애플리케이션 구동을 시작하는데 몇 분이 넘게 걸릴 수 있지만, 컨테이너화된 애플리케이션은 거의 즉각적으로 시작할 수 있다.

컨테이너가 운영체제 상에서 공유될 경우 얼마나 안전한가?
컨테이너가 가상머신만큼 안전하지 않다는 게 전반적인 인식이다. 만약 커널에 취약점이 존재한다면 이를 공유하는 컨테이너에 침투가 가능하기 때문이다. 이 점은 하이퍼바이저에 있어서도 적용되는 문제지만, 하이퍼바이저는 파일 시스템, 네트워킹, 애플리케이션 프로세스 제어 등을 수행하는 전형적인 리눅스 커널보다 훨씬 적은 기능성을 제공하기 때문에, 공격면 역시 훨씬 적다.

한마디로 컨테이너는 일반적인 하드웨어 가상화와 같은 수준의 격리를 제공한다고 볼 수 없다.

도커와 컨테이너의 차이점은 무엇인가?
도커는 가장 성공적으로 보급된 컨테이너였기 때문에 컨테이너 기술과 동의어가 되었다. 하지만 컨테이너 기술은 새로운 게 아니다. 거의 10년 전부터 LXC의 형태로 리눅스에 내장돼 있고, 비슷한 운영 체제 수준 가상화 역시 FreeBSD 제일스, AIX 워크로드 파티션(AIX Workload Partitions)와 솔라리스 컨테이너(Solaris Containers)에 의해 제공된다.

그리고 현재는 리눅스에 도커만 있는 상황도 아니다. rkt는 코어OS(CoreOS)에 의해 제작된 앱 컨테이너를 구동하는 명령행 툴로 도커의 대안으로 떠오르고 있다. rkt는 도커 컨테이너를 처리할 수 있을 뿐 아니라 앱 컨테이너 이미지(App Container Image) 사양도 준수한다.

코어OS의 CEO 알렉스 폴비는 rkt를 출범한 이유 중 하나가 도커가 너무 커져서 그 단순성을 잃어버렸기 때문이라고 지적한다. 포버는 “도커는 이제 클라우드 서버, 클러스터링용 시스템 등 다양한 기능을 위한 툴을 구축하고 있다. 이미지 구축, 이미지 구동, 업로드, 다운로드, 그리고 점진적으로 오버레이 네트워킹까지 모두 주로 사용자의 서버상에서 루트로 구동되는 하나의 일원화된 바이너리다”라고 설명했다.

코어OS의 대표적인 지지자인 켈시 하이타워는 앱 컨테이너 이미지가 만든 사람들에 의해 서명되었기 때문에 도커 이미지보다 더 안전하게 만들어진 것이라고 덧붙인다. 하이타워는 “사용자들은 마치 애플이 앱스토어에서 하는 것과 같은 그런 서명을 원한다고 생각한다”며, “rkt를 사용할 때 앱 컨테이너 이미지를 끌어내면 실행하기 전에 그 개발자를 신뢰할지 결정할 수 있다. rkt 역시 도커 이미지를 구동하지만, 도커가 항상 서명되어 있지는 않다”고 지적했다.

도커와 rkt는 어떤 운영체제에서 구동되어야 할까?
LXC(와 LXC를 대체하는 도커의 자체 컨테이너 기술인 리브컨테이너)는 리눅스 기반이기 때문에, 3.8 이후의 현대적 커널을 가진 모든 리눅스 배포판은 x64 하드웨어 상에서 도커와 rkt를 실행할 수 있다.

대부분의 리눅스 배포판은 컨테이너 구동용으로 사용할 경우 불필요하게 기능이 많다. 특별히 컨테이너 구동만을 위해 설계된 수많은 리눅스 배포판이 나온 시점에서 이는 놀라운 일도 아니다. 그 몇몇 예로 코어OS, 레드햇의 프로젝트 아토믹(Project Atomic), 캐노니컬의 스내피 우분투(Snappy Ubuntu), 그리고 VM웨어의 프로젝트 포톤(Project Photon) 등이 있다.

상용 리눅스 컨테이너 솔루션은 존재하나?
그렇다. 다음과 같은 상용 리눅스 컨테이너 솔루션들이 있다.

- 기업용 도커 구독 : 도커 허브 엔터프라이즈, 도커 엔진 그리고 상용 지원 구독을 포함한 번들 솔루션
- 코어OS 텍토닉 : 워크 플로우 관리 콘솔과 대시보드, 공유 리눅스 컨테이너 구축을 위한 통합 레지스트리, 그리고 배치와 업데이트 출시 맞춤설정을 위한 추가 툴과 구글의 큐버네이츠 컨테이너 관리 플랫폼을 포함한 코어OS 소프트웨어로 구성

윈도우를 사용하는 기업은 어떻게 해야 하나?
마이크로소프트는 윈도우 서버에 도커 컨테이너 기술과 윈도우 서버상에서 구동될 윈도우 서버 컨테이너의 도입할 예정이라고 발표했다.

컨테이너를 구동할 목적으로 특별히 설계된 나노 서버(Nano Server)라고 불리는 “씬” 버전의 윈도우 서버 역시 도입될 예정이다. 윈도우 서버 2008의 윈도우 서비스 코어와 비슷한 개념으로, 전형적인 윈도우 서버 설치 규모의 단 5% 정도 밖에 되지 않을 것이다.

컨테이너가 점차적으로 서버 가상화를 대체하게 될까?
가상머신이 컨테이너보다 더 보안이 낫다는 점에서 단기적으로 그럴 가능성은 희박하다.

대규모의 컨테이너를 지휘할 수 있는 관리 툴 역시 가상화 인프라를 관리하는데 사용될 수 있는 VM웨어 v센터나 마이크로소프트의 시스템 센터만큼이나 종합적이지 못한 상태다.

가상화와 컨테이너는 경쟁적 기술이 아니라 보완적 기술이 될 가능성이 높다. 컨테이너는 격리 수준과 보안성을 높이기 위해 경량 가상머신 안에서 구동될 수 있고, 하드웨어 컨테이너를 지원하는데 필요한 가상화가 네트워크, 서버, 스토리지를 관리하기 훨씬 쉽게 만들어주기 때문이다.

하이타워는 “대부분의 사람들은 하드웨어 관리에 열의가 없기 때문에, VM웨어에 맡겨두고 소프트웨어 상으로 관리한다”며, “컨테이너는 아무것도 변화시키지 않는다. 사용자가 컨테이너를 사용할 수 있고, 만약 하드웨어를 관리하고 싶지 않다면 가상화를 사용해도 된다”고 강조했다. editor@itworld.co.kr 


X