도커 안내서

서비큐라님의 초보를 위한 도커 안내서



Docker 치트 시트




초보를 위한 도커 안내서 - 도커란 무엇인가?   |   서비큐라 기술 블로그(한글)

가장빨리 만나는 Docker   |   Slideshare(한글), pyrasis.com(한글) - 클량 pyrasis님 

도커(Docker) 치트 시트   |   github(한글)

Docker 한글 문서 / 영상 모음집   |   documents.docker.co.kr(한글)

개발자가 처음 Docker 접할때 오는 멘붕 몇가지   |   POP it 김형준님(한글) 

컨테이너 오케스트레이션 기본 가이드 "도커 스웜모드, 퀴베르네시스, 메소스피어"   |   itworld(한글) 



Docker Network 구조

출처: http://bluese05.tistory.com/15 [ㅍㅍㅋㄷ]



Docker Network 구조

  1.  docker0와 container network 구조
  2.  Container network 방식 4가지

  3.  Container 외부 통신 구조

  4.  Container link 구조


[번역]시작하는 이들을 위한 컨테이너, VM, 그리고 도커에 대한 이야기


출처: https://medium.com/@jwyeom63/%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EC%9D%B4%EB%93%A4%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-vm-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%8F%84%EC%BB%A4%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0-3a04c000cb5c


*이 글은 Preethi Kasireddy의 A Beginner-Friendly Introduction to Containers, VMs and Docker를 번역한 글입니다. 모든 저작권과 권리는 Preethi에게 있습니다. 
*This article is a translated version of 
Preethi Kasireddy’s article: A Beginner-Friendly Introduction to Containers, VMs and Docker. All rights and credits back to her.
*최대한 이해하기 쉽도록 곳곳에 의역이 들어간 점 양해 부탁드립니다.
*도움이 되셨다면 Preethi의 원글에 clap 한번씩 부탁드립니다 :)

당신이 프로그래머이거나 IT 관련 일을 한다면, 도커(Docker)에 대해서 들어본 적이 있을 것이다. 애플리케이션을 포장하고, 옮기고, “컨테이너”들 안에서 실행할 수 있게 하는 유용한 툴- 최근 도커가 개발자와 시스템 관리자를 불문하고 관심을 끌어모으고 있는 것을 생각하면 당연한 일이다. 구글이나 VMware, 아마존 같은 거대한 회사들도 관련 서비스를 만들며 이러한 트렌드에 불을 붙이고 있다.

당신이 지금 바로 도커를 사용할 일이 있고 없고를 떠나서, “컨테이너”의 핵심 개념들, 그리고 버추얼 머신(VM)과의 차이에 대해서는 알아 둘 필요가 있다고 생각한다. 인터넷에 도커 사용법에 대한 훌륭한 가이드들은 많이 있지만, 개인적으로 아직 컨테이너란 무엇인가에 대한 초보자들을 위한 설명은 많이 보지 못했다. 이 글이 그 대안 중 하나가 되었으면 하는 바람이다 :)

그렇다면 VM과 컨테이너가 정확히 무엇인지부터 알아보도록 하자.

“컨테이너”와 “VM”은 무엇인가?

컨테이너와 VM은 비슷한 목적을 가지고 있다: 애플리케이션과 그 의존성들(dependencies)을 독립된 단위로 묶어 격리, 어디서든 실행 가능하게 하는 것.

또한, 컨테이너와 VM 모두 물리적 하드웨어의 필요성을 제거하여 컴퓨터의 자원을 에너지 면에서도, 그리고 비용 면에서도 보다 더 효율적으로 사용할 수 있게 해준다.

컨테이너와 VM의 결정적인 차이는 설계의 접근법에 있다. 조금 더 자세히 살펴보도록 하자.

Virtual Machines

VM은 기본적으로 컴퓨터의 에뮬레이션으로, 프로그램을 실제 컴퓨터처럼 실행한다. VM들은 “하이퍼바이저”를 통해 물리적 기계(machine) 위에서 돌아간다. 한편 하이퍼바이저는 호스트 머신이나 베어 메탈(bare metal *역: 소프트웨어가 전혀 담겨있지 않은 하드웨어)” 위에서 실행된다.

용어들이 어려우니, 조금 더 살펴보도록 하자.

하이퍼바이저란 VM이 실행되는 소프트웨어나 펌웨어, 혹은 하드웨어를 뜻한다. 하이퍼바이저들은 호스트 머신이라 불리는 물리적 기계 위에서 돌아가고, 호스트 머신은 VM에 램과 CPU 등의 자원을 제공한다.

이 자원들을 VM들이 분배 받아서 사용하는데, 사용자가 원하는 대로 할당할 수도 있다. 즉, 하나의 VM이 자원을 더 많이 필요로 하는 애플리케이션을 실행시키고 있다면, 같은 호스트 머신에서 돌고 있는 다른 VM들보다 더 많은 자원을 할당할 수도 있다는 뜻이다.

호스트 머신 위에서 하이퍼바이저를 이용하여 돌아가는 VM을 보통 게스트 머신(“guest machine”) 이라고도 부른다. 이 게스트 머신은 보통 그 애플리케이션을 실행하기 위한 모든 것(시스템 바이너리, 라이브러리 등)과 애플리케이션을 포함하며, 가상화된 네트워크 어댑터, 저장소, CPU등의 모든 하드웨어 스택도 포함한다. 즉, 자신 안에 또 하나의 온전한 게스트 운영체제를 가지고 있는 것이다.

내부에서 보면, 게스트 머신은 자신만의 자원을 할당받은, 하나의 독립된 유닛처럼 작동한다. 반면 외부의 시점에서 보면 이것은 호스트 머신의 자원을 다른 VM들과 공유하는 또 하나의 VM임을 알 수 있다.

이처럼 가상 머신은 hosted 하이퍼바이저(hosted hypervisor, *역: 호스트를 가진 하이퍼바이저. 타입 2 하이퍼바이저라고도 하는 듯 합니다), 혹은 bare-metal 하이퍼바이저(*역: 타입 1 하이퍼바이저라고도 불립니다)에 의해서 실행된다. 이 둘에는 중요한 차이가 있다.

첫 번째로, 호스트를 가진 하이퍼바이저는 호스트 머신의 운영체제 위에서 돌아간다. 예를 들어, OSX가 돌아가고 있는 컴퓨터의 VM(VirtualBox나 VMware Workstation 8 등)이 이것의 예시이다. VM은 직접 하드웨어에 접근할 수 없으며, 호스트 OS를 거쳐야 한다(위 예시의 경우에는 맥의 OSX).

Hosted 하이퍼바이저의 이점은 기본 하드웨어가 비교적 덜 중요하다는 것이다. 하이퍼바이저가 아닌 호스트의 OS가 하드웨어 드라이버들을 책임지기 때문에, “하드웨어 호환성”이 더 높다고 볼 수 있다. 다른 한편으로는 하드웨어와 하이퍼바이저 사이에 있는 이 부가적인 단계가 더 많은 리소스 오버헤드를 발생시키며, VM의 퍼포먼스를 떨어뜨릴 수 있다.

Bare metal 하이퍼바이저 환경은 위와 같은 퍼포먼스 이슈를 호스트머신의 하드웨어에 직접 설치, 실행함으로써 해결한다. 직접 하드웨어와 접촉하기 때문에 따로 호스트 OS가 필요없다. 이 경우에는 하이퍼바이저가 호스트 머신의 서버에 OS로서 처음 설치되는 것이 된다.

Hosted 하이퍼바이저와는 달리, bare-metal 하이퍼바이저는 자신만의 디바이스 드라이버를 가지고 입출력, 프로세싱, OS 관련 컴포넌트들과 직접 교류하여 처리한다. 이렇게 해서 더 나은 퍼포먼스, 확장성, 그리고 안정성을 가지게 된다. 대신 하이퍼바이저에는 제한된 숫자의 디바이스 드라이브가 설치 될 수 있으므로, 그만큼 하드웨어 호환성이 제한될 수 있다.

하이퍼바이저에 대해 여기까지 읽고 나면, 여러분은 왜 이 “하이퍼바이저”라는 추가적인 단계가 VM과 호스트 머신 사이에 필요한지가 궁금해졌을 것이다.

이는 하이퍼바이저가 VM들이 각자 자신의 가상 운영체제, 즉 게스트 운영체제를 실행하고 관리할 수 있게끔 돕는 중요한 역할과 더불어, 호스트 머신들이 자원들을 VM들에게 분배할 수 있도록 도와주는 일을 하기 때문이다.

Virtual Machine Diagram

위 그림에서 볼 수 있듯이, VM은 가상 하드웨어, 커널(OS 등), 그리고 유저 공간(space)를 포함한다.

컨테이너

하드웨어의 가상화를 제공하는 VM과는 달리, 컨테이너는 유저 공간(user spcae)의 추상화를 통해 운영체제 레벨의 가상화를 제공한다. 이게 무슨 뜻인지는 컨테이너라는 용어를 좀 더 분석해보면 알 수 있다.

비슷한 목적을 가지고 있는 만큼, 컨테이너는 VM과 흡사해 보인다. 컨테이너도 VM처럼 프로세싱을 위한 별도의 공간(private space), 루트 권한, 사설 네트워크, IP 주소, 커스텀 라우트 / iptable 규칙, 파일 시스템 마운트 등의 기능을 갖추고 있다.

하지만 컨테이너는 호스트 시스템의 커널을 다른 컨테이너들과 공유한다는 점에서 크게 차이가 난다.

Container Diagram

이 그림에서 볼 수 있듯이, 컨테이너는 유저 공간만을 포함하고, VM에는 포함되는 커널이나 버추얼 하드웨어가 포함되지 않는다. 여러개의 컨테이너가 하나의 호스트 머신에서 돌아갈 수 있도록 각 컨테이너는 자신만의 격리된 유저 공간을 가지고 있다. 즉, 운영체제 단계의 아키텍처를 모든 컨테이너가 공유하고 있는 것이다. 처음부터 새로 생성되는 부분은 bins와 libs 뿐이며, 이것이 컨테이너가 한결 가벼워질 수 있는 이유이다.

도커는 그럼 무슨 역할을 하는가?

도커는 리눅스 컨테이너를 기반으로 하는 오픈소스 프로젝트다. 네임스페이스, 컨트롤 그룹과 같은 리눅스 커널 기능을 이용해서 운영체제 위에 컨테이너들을 생성하는 것이다.

컨테이너는 새로운 개념이 아니다. 구글은 자신들만의 컨테이너 개념을 몇 년째 이용해 왔다. Solaris Zones, BSD jails, LXC를 비롯한 다른 리눅스 컨테이너 기술들도 이미 오랫동안 존재해 왔다.

그렇다면 왜 갑자기 도커가 이목을 끌기 시작한 것일까?

  1. 간편한 사용법: 도커는 개발자, 시스템 관리자, 아키텍트 등 누구든지 컨테이너의 이점을 이용해서 손쉽게 이동성 있는 애플리케이션을 생성, 테스트 할 수 있도록 만들어졌다. 누구든 애플리케이션을 자신의 랩탑에서 간단히 패키징하고, 공용 클라우드, 개인용 클라우드, 혹은 bear metal에서 보존된 상태의 애플리케이션을 실행해 볼 수 있도록 해주는 것이다. “한번의 빌드로 어디에서든 실행하자”라는 마법의 주문인 것이다.
  2. 속도: 도커는 매우 가볍고 빠르다. 컨테이너는 커널에서 돌아가는 샌드박스화된 환경일 뿐이어서, 더 적은 자원을 소비한다. 매번 하나의 완전한 가상 운영체제를 부팅해야하는 VM과는 달리, 도커 컨테이너는 몇 초면 실행시킬 수 있다.
  3. 도커 허브(Hub): 도커 허브는 “도커 이미지들의 앱스토어” 같은 일종의 도커 생태계로, 유저들이 자유롭게 사용할 수 있다. 도커 허브에는 커뮤니티에 의해 생성되어 바로 사용 가능한 수만개의 이미지들이 있고, 아주 쉽게 필요한 이미지를 찾을 수 있을 뿐만 아니라 약간의 수정 혹은 수정 없이 바로 사용할 수 있다.
  4. 모듈성(modularity)과 확장성(scalability): 도커는 어플리케이션의 기능들을 각각의 컨테이너들로 쉽게 분리할 수 있도록 해준다. 예를 들어, 여러분이 Postgres 데이터베이스를 하나의 컨테이너에서 돌리고 다른 하나에서는 Redis 서버를, 그리고 또 하나에서는 Node.js앱을 실행시키고 있다고 가정해보자. 도커를 이용하면 이 컨테이너들을 연결하여 애플리케이션을 만들 수 있다. 각각의 컴포넌트에 대해서 따로 업데이트를 하거나 스케일링을 하기 쉬워지는 것이다.

마지막으로, 도커 고래가 싫다 할 사람이 어디 있겠는가? ;)

Source: https://www.docker.com/docker-birthday

도커 기본 개념들

도커에 대한 큰 그림은 살펴보았으니, 도커의 기반이 되는 부분들을 하나하나 살펴보도록 하자.

도커 엔진

도커가 실행되는 레이어. 컨테이너, 이미지, 빌드 등을 관리하는 경량 런타임이자 도구로서, 리눅스 시스템에서 돌아가고 다음과 같이 구성되어 있다.

  1. 호스트에서 돌아가는 도커 데몬(daemon)
  2. 도커 데몬과 통신하여 명령어를 실행하는 도커 클라이언트
  3. 도커 데몬과 원격으로 교류하는 REST API

도커 클라이언트

도커 클라이언트는 도커의 엔드 유저(end-user *역: 마지막 단계의 사용자)인 여러분이 사용하는 부분이다. 도커의 UI라고 보면 된다. 예를 들어, 이렇게 실행하면

여러분은 도커 클라이언트에게 명령어를 전달하고, 도커 클라이언트는 받은 명령을 도커 데몬에게로 전달한다.

도커 데몬

도커 데몬은 빌드, 실행, 배포(distribute) 등을 비롯하여 사용자가 도커 클라이언트에게 보낸 명령어를 실행한다. 도커 데몬은 호스트 머신에서 돌아가지만, 유저들이 도커 데몬과 직접적으로 접하는 경우는 없다. 도커 클라이언트도 호스트 머신에서 실행되기는 하지만, 필수적으로 그렇지는 않다. 도커 클라이언트는 다른 머신에 있는 동안에도 호스트 머신에서 돌아가는 도커 데몬과 소통하는 것이 가능하다.

도커파일(Dockerfile)

도커파일은 도커 이미지를 생성할 지시 사항들을 작성하는 파일이다. 예시로는 다음과 같은 항목들이 있을 수 있다.

  • RUN apt-get y install some-package: 패키지 설치
  • EXPOSE 8000: 포트 노출
  • ENV ANT_HOME /usr/local/apache-ant: 환경변수 전달

일단 도커파일을 설정하고 나면, 도커 빌드 커맨드를 통해 이미지를 생성할 수 있다. 다음은 도커파일의 예시이다.


샘플 도커파일

도커 이미지

이미지들은 Docker file의 지시사항을 기준으로 생성하는 read-only 템플릿이다. 이미지는 패키지화된 애플리케이션과 의존성들과 더불어 실행시에 어떤 프로세스를 실행할지를 정의한다.

도커 이미지는 도커파일을 통해서 생성된다. 도커파일 안의 각 지시 항목은 이미지에 새로운 “레이어”로서 이미지에 추가된다. 각 레이어는 이미지 파일 시스템을 구성하고, 새로 추가 되거나 기존 레이어를 교체한다. 도커의 가벼우면서도 강력한 구조의 핵심에는 이 레이어 방식이 있다. 도커는 이것을 실현하기 위해 Union File System을 이용한다.

Union File Systems

도커는 Union File System을 이용해서 이미지를 생성한다. Union File System은 스택으로 쌓을 수 있는 파일 시스템이라고 볼 수 있다. 서로 다른 파일 시스템(브랜치(branch)라고도 알려져있다)의 파일과 디렉토리가 서로 겹쳐져서 하나의 파일 시스템을 구성하게 된다는 뜻이다.

이렇게 중첩되어 있는 브랜치들 중에서 같은 경로를 가지고 있는 디렉토리들의 내용은 하나의 합쳐진 디렉토리로 인식된다. 즉, 각각의 레이어에 따라 별도의 버전을 따로 만들지 않아도 되는 것이다.

그 대신 동일한 자원으로 향하는 포인터를 배정받고, 특정 레이어가 수정된다면 그 때 로컬 카피를 생성, 수정함으로서 원본은 그대로 유지한다.

이렇게 해서 파일시스템이 실제로는 수정될 수 없는데도 writable인것(*역: 수정 가능한 것) 처럼 보여줄 수 있는 것이다. (한마디로 “copy-on-write”(*역: 수정이 일어나면 카피를 생성하는)시스템이다)

레이어드 시스템에는 두가지의 이점이 있다

  1. duplication-free(*역:이중화 회피) : 레이어들로 이루어져 있다는 것은 새로운 컨테이너를 시동할때마다 전체 파일을 모두 복사하지 않아도 된다는 뜻과 같다. 즉, 도커 컨테이너들의 인스턴스화를 적은 비용으로 매우 빠르게 할 수 있도록 해 준다.
  2. Layer segregation(*역: 레이어 분리) : 하나의 이미지를 변경하면 도커가 그 수정사항을 해당 레이어에만 반영하도록 하기 때문에 변경사항이 더 빠르게 반영된다.

Volumes

볼륨은 컨테이너의 ‘데이터’ 부분으로, 컨테이너 생성시 초기화된다. 볼륨은 컨테이너의 데이터를 유지하고 공유할 수 있도록 한다. 데이터 볼륨은 기본 Union File System과는 별도로, 일반 디렉토리/파일들로 호스트의 파일 시스템에 존재한다. 즉, 컨테이너를 파괴, 수정, 재생성 하더라도 데이터 볼륨은 그대로 유지된다. 볼륨을 수정하고 싶을 때는 직접 수정해야한다 (데이터 볼륨은 여러 대의 컨테이너가 공유, 재사용 할 수 있도 있다).

도커 컨테이너

도커 컨테이너는, 이미 위에서 설명한대로 애플리케이션과 해당 애플리케이션이 실행되기 위해 필요로 하는 모든 것들을 하나로 묶은 것이다. 이는 운영체제, 애플리케이션 코드. 런타임, 시스템도구, 시스템 라이브러리 등을 모두 포함한다. 도커 컨테이너는 도커 이미지로부터 만들어지는데, 이미지들은 read-only이므로 도커는 read-write 파일 시스템을 이 read-only 파일 시스템 위에 얹어서 컨테이너를 생성한다.

Source: Docker

또한, 도커는 컨테이너가 로컬호스트와 통신할 수 있도록 네트워크 인터페이스도 생성하고, IP 주소를 컨테이너에 붙인 후, 개발자가 이미지 정의 단계에서 지정한 프로세스에 따라 애플리케이션을 실행한다.

컨테이너를 성공적으로 생성했다면, 이제 부가적인 수정 없이 어느 환경에서든 애플리케이션을 실행할 수 있다.

컨테이너 조금 더 알아보기

휴! 정말 많은 것들을 살펴보았다. 나는 항상 컨테이너가 어떻게 설계된 것인지, 특히 추상적 인프라 경계도 없이 어떻게 구현된 것인지 궁금했다. 많은 문서를 보고 나서야 이해를 하게 되었고, 여러분들에게 설명을 시도해 보려고 한다 :)

“컨테이너”는 사실상 추상적 개념으로, 몇 가지 기능의 집합체가 컨테이너처럼 작동하는 것을 상상할 수 있게끔 만들어진 개념이다. 어떤 기능들이 여기에 포함되는지 빠르게 살펴보자

1) 네임스페이스(Namespaces)

네임스페이스는 컨테이너들이 배경 리눅스 시스템에 대해 인식/접근할 수 있는 것에 제한을 건다. 컨테이너를 실행시키면, 도커가 해당 컨테이너가 사용할 네임스페이스를 생성한다.

도커가 사용하는 네임스페이스에는 몇가지 종류가 있다. 다음은 몇몇 예시이다:

a. NET: 네트워크 스택에 대해 해당 컨테이너가 볼 수 있는 것들을 지정한다. (네트워크 디바이스, IP 주소, 라우팅 테이블, /proc/net 디렉토리, 포트 번호 등)

b. PID: Process ID: PID는 Process ID의 줄임말이다. 어떤 프로세스가 현재 시스템에서 실행되고 있는지 확인하기 위해 ps aux 명령어를 실행시켜본 적이 있다면, PID라는 항목을 본 적이 있을 것이다. PID 네임스페이스는 컨테이너가 보고 교류할 수 있는 프로세스 항목들을 지정한다. 이는 “모든 프로세스들의 조상” 인 PID 1도 포함한다.

c. MNT: 컨테이너에게 시스템의 mount들(*역: 기존의 파일시스템에 부착된 추가 파일 시스템)에 대한 접근 범위를 지정한다. 즉, 서로 다른 마운트 네임스페이스는 파일시스템 계층에 대하여 다른 시야를 갖는다.

d. UTS: UTS는 UNIX Timesharing System의 줄임말이다. 프로세스가 시스템 식별자(system identifier)들을 인식하게 해주는 역할을 하는데, 즉 컨테이너가 호스트 시스템이나 다른 컨테이너들로부터 독립된 호스트명과 NIS 도메인명을 가질 수 있도록 한다.

e. IPC: InterProcess Communication이 줄임말이다. IPC 네임스페이스는 각각의 컨테이너에서 돌아가는 프로세스들의 IPC 리소스들을 격리시켜주는 역할을 한다.

f. USER: 이 네임스페이스는 각각의 컨테이너의 유저들을 서로에게서 분리시키는 역할을 한다. 컨테이너들이 uid(user ID)와 gid(group ID)에 대해 서로 다른 영역을 볼 수 있게 해준다. 결과적으로, 프로세스의 uid와 gid는 유저 네임스의 안과 밖이 서로 다를 수 있다. 이는 하나의 프로세스가 컨테이너 내부의 루트 권한을 희생하지 않고 컨테이너 외부에는 권한이 없는 유저를 가질 수 있도록 해 준다.

도커는 이 네임스페이스들을 사용해서 컨테이너를 격리하고, 새롭게 생성할 수 있도록 해준다. 다음 소개할 기능은 컨트롤 그룹이다.

2) 컨트롤 그룹

컨트롤 그룹(cgroup이라고도 한다)은 각 프로세스들이 어떻게 자원(CPU, 메모리, 디스크 입출력, 네트워크 등)을 사용할 것인지 정하는 리눅스 커널 기능이다. cgroup은 도커 컨테이너가 필요한 자원만 사용하도록 제어한다. 다르게 말하면 필요한 경우에는 컨테이너가 사용할 수 있는 자원의 한도도 지정한다. cgroup은 하나의 컨테이너가 과도하게 많은 자원을 사용하여 시스템이 중단되는 경우도 미리 방지한다.

마지막으로, union file system이 도커가 사용하는 또 다른 기능이다.

3) Isolated Union File System

위의 도커 이미지 부분에서 언급했던 Union File System을 참조하면 된다 :)

이 세가지가 도커 컨테이너를 구성하는 전부이다 (물론 진짜 어려운 부분은 여러 컴포넌트 사이의 상효 작용 등을 어떻게 구현하는가 등의 부분이기는 하다).

도커의 미래: 도커와 VM의 공존

도커가 분명 많은 주목을 받고 있기는 하지만, VM을 위협하는 존재가 될 것 같지는 않다. 컨테이너는 계속해서 더 많은 곳에서 사용되겠지만, VM이 더 필요한 케이스도 많이 있다.

예를 들어, 여러 대의 서버에 여러 개의 애플리케이션을 돌려야 한다면, VM을 쓰는 편이 나을 것이다. 한편 한개의 애플리케이션을 기반으로 한 여러 개의 카피들을 실행해야 할 경우에는 도커가 더 훌륭한 선택지일 것이다.

또한, 컨테이너들이 애플리케이션을 여러개의 기능 위주의 조각들로 나눌 수 있게 해준다는 것은 관리해야 할 부분이 많아진다는 뜻이기도 하다.

보안 문제 역시 도커 컨테이너를 사용할 때 우려되는 부분 중에 하나이다. 컨테이너들은 같은 커널을 공유함으로, 컨테이너 사이에 장벽이 약한 편이다. 또, VM이 호스트 하이퍼바이저에게 hypercall만을 보낼 수 있는 반면, 도커 컨테이너는 호스트 커널에 syscall만을 할 수 있어서 공격에 노출되는 부분이 더 넓어지게 된다. 보안이 굉장히 중요한 경우에는 추상화된 하드웨어로써 완전히 격리되는 VM을 선택하여 서로 영향을 줄 확률을 낮추는 것이 적합할 수 있다.

물론, 보안과 관리 문제들은 컨테이너들이 프로덕션 단계를 여러번 거치고 유저들의 관찰이 쌓이면서 더 개선될 것이다. 컨테이너냐 VM이냐에 대한 이슈는 당장은 매일같이 이 도구들을 사용하는 데브옵스들에게 맡겨두어도 좋을 듯 하다.

마치며

여러분들이 이제는 언젠가 프로젝트에서 필요할지도 모르는 도커에 대한 지식들을 갖추게 되었기를 바란다.

언제나 그랬듯이, 내가 무언가 실수를 했거나 도움이 될 수 있는 방법이 있다면 댓글로 남겨주면 감사하겠다 :)


번역을 마치며

저에게는 낯선 개념이지만 반드시 한번은 짚고 넘어가야 할 개념이라 생각하고 번역해 보았습니다^^; 용어도 쉽지 않고 개념도 녹록치 않아 평소보다 시간도 노력도 많이 들어갔지만 많은 분들께 도움이 되었으면 좋겠네요.
혹 오타나 문제가 발견되었다면 댓글로 남겨주시면 수정하겠습니다.

부족한 번역 읽어주셔서 감사합니다. 도움이 되신 분들은 원글에 한번씩 clap 부탁드립니다 :)


Announcement: Amazon EC2 Container Service is Now Generally Available



Amazon EC2 Container Service (ECS) is a highly scalable, high performance container management service that supports Docker containers and allows you to easily run applications on a managed cluster of Amazon EC2 instances. Amazon ECS eliminates the need for you to install, operate, and scale your own cluster management infrastructure. With simple API calls, you can launch and stop container-enabled applications, query the complete state of your cluster, and access many familiar features like Elastic Load Balancing, EBS volumes, security groups, and IAM roles.

New Features:

You can now use the Amazon ECS Service scheduler to manage long-running applications and services. The Service scheduler helps you maintain application availability and allows you to scale your containers up or down to meet your application's capacity requirements. The Service scheduler allows you to distribute traffic across your containers using Elastic Load Balancing. Amazon ECS will automatically register and deregister your containers from the associated load balancer. The Service scheduler will also automatically recover your containers that become unhealthy or stop running to ensure you have the desired number of healthy containers supporting your application. You can use the Service scheduler to easily scale up and down the number of containers supporting your application, and you can update your application by changing its definition or using a new image. The scheduler will automatically start new containers using the new definition and stop containers running the previous version.

Amazon ECS allows you to mount volumes to store and share information between containers and use images from private Docker repositories. You can also record all your EC2 Container Service API calls to AWS CloudTrail.

Amazon ECS is now generally available to all AWS customers in the US East (N. Virginia), US West (Oregon), EU (Ireland), and Asia Pacific (Tokyo) AWS regions. Read our documentation to learn how to use the Amazon EC2 Container Service Management Console, AWS CLI or SDKs to get started.

For more information about Amazon EC2 Container Service, please visit our product page.


EC2 Container Service – Long-Running Applications, Load Balancing, and More

EC2 Container Service – Long-Running Applications, Load Balancing, and More

Ecs_splash_2EC2 Container Service 는 Docker 컨테이너를 지원하는 확장 가능한 컨테이너 관리 서비스에서 Amazon Elastic Compute Cloud (EC2) 인스턴스 클러스터에서 응용 프로그램을 실행시킬 쉽게 할 수 있습니다. 우리는 AWS re : Invent 에서 미리보기를 시작 지금까지 많은 훌륭한 피드백을 받고 왔습니다.

Amazon ECS는 많은 고객에게 Docker를 사용하여 응용 프로그램이나 서비스를 캡슐화하고, 하나 일반적으로 여러 응용 프로그램을 EC2 인스턴스들의 클러스터에서 실행하는 데 클러스터 관리에 고민 싶지 않아 라는 말을 받아 만들어졌습니다. 안정 스케일 있고, 이미 이용하고있는 EC2의 고급 기능의 편리함도 누릴 수 같은 서비스가 고객 요구되고있었습니다.

또한 EC2 인스턴스와 컨테이너의 상태를 포함하는 클러스터 관리는 힘들 것 얻고, 특히 환경이 많아지면 그렇지 경향이라는 이야기도 들었습니다. 예를 들어 어떤 인스턴스를 사용할 수 필요한 용량을 가지고 있는가에 대한 상태 정보를 정확하게 적시에 액세스해야, 그것은 수 처음으로 컨테이너의 위치 결정이 가능합니다. 상태 추적은 인스턴스 및 컨테이너의 수가 수천 또는 수만 증가하면 계속적으로 어려워진 것하고 중요도가 더 더해갑니다.

Amazon ECS는 이러한 모든 요구 이상을 충족 있도록 디자인되어 있습니다. 고객 자신에서 클러스터 관리 기반을 설치하거나 운용하거나 스케일 할 필요가 없습니다. 간단한 API 호출뿐만 컨테이너 된 응용 프로그램을 시작하거나 중지 할 수 있으며, 클러스터의 상태도 알 수 있습니다. Amazon EC2와 다른 AWS 서비스를 함께 사용할 수 있으며,Elastic Load Balancing , EBS 볼륨 , EC2 보안 그룹 이나 IAM 역할 등 유명한 기능의 이점을 살릴 수 있습니다.

또한, 컨테이너의 스케줄링에 몇 가지 선택이 다양한 종류의 어플리케이션을 실행하는 것이나, 컨테이너 나 응용 프로그램이나 서비스의 배치와 활용을 관리 할 수​​ 있습니다.

오늘 일반적 가능하게 도쿄 지역에서도 이용이 가능하게

Amazon ECS가 일반 이용 가능하게 된 것에 대해 언급 할 수 매우 기쁘게 생각합니다. 따라 움직이는 유지 응용 프로그램 지원, 새로운 멋진 Amazon ECS 콘솔, 그리고 CloudTrail과의 연계라는 새로운 몇 가지 강력한 기능도 추가했다. 또한 Amazon ECS가 Asia Pacific (도쿄) 지역에서도 사용할 수 있습니다.

그러면 새로운 기능을 하나씩 살펴 보자.

긴 러닝 어플리케이션

지금까지 Amazon ECS는 클러스터의 Docker 컨테이너 일정에 2 개의 수단을 제공했습니다. 하나는 일괄 작업과 같이 한 번 실행하는 것 같은 것이 끝나면 종료합니다. 다른 하나는 Amazon ECS의 API에서 클러스터 상태 정보를 취득하여 타사 및 사용자 정의 스케줄러에 전달할 수 있습니다.

오늘의 릴리스부터 롱 러닝 애플리케이션과 서비스를 관리하기 위해 새로 Amazon ECS 서비스 스케줄러를 사용할 수 있습니다. 서비스 스케줄러는 애플리케이션 가용성 관리를 도와 주시고 용량의 요구에 맞는 것처럼 컨테이너를 시작하거나 중지하고 확장 할 수 있습니다. 다음이 제공하는 기능 목록입니다 :

  • 로드 밸런싱 - 서비스 스케줄러에 의해 Elastic Load Balancing을 사용한 컨테이​​너를 걸친 트래픽 분산이 가능합니다. Amazon ECS는 관련로드 밸런서에 자동으로 등록 · 해제합니다.
  • 사활 관리 - 서비스 스케줄러는 정상 없게되었다 (ELB의 건강 체크가 실패) 컨테이너를 자동으로 부활하거나 중지합니다. 이를 통해 응용 프로그램을 실행시키기 위해 필요한 지정된 수의 정상적인 컨테이너가 유지되는 것을 보장 해줍니다.

  • 스케일 업과 스케일 다운 - 서비스를 실행하는 컨테이너의 수를 변경하여 응용 프로그램을 확장 시키거나 스케일 다운시킬 수 있습니다.

  • 업데이트 관리 - 응용 프로그램의 정의를 바꾸거나 새로운 이미지를 사용하여 응용 프로그램의 업데이트도 할 수 있습니다. 스케줄러는 새로운 정의에 자동으로 컨테이너 그룹을 시작하고 이전 버전이 움직이고있는 컨테이너를 중지합니다. ELB가 사용되고있는 경우에는 ELB의 연결을 드레인시켜 기다려줍니다.

이러한 새로운 기능을 사용하여 기본적인 서비스 검색을 구현​​할 수 있습니다. 클러스터에서 움직이고있는 서비스를 나열 할 수 있고, ELB를 서비스 엔드 포인트로 사용할 수 있습니다.

Gilt의 말

온라인 소매를 전개하는 Gilt는 고객에게 오늘의 톱 브랜드와 체험에 대한 내부 정보를 제공합니다. 공동 설립자 인 Phong Nguyen 은 이런 말을주었습니다 :

Phong_nguyen_gilt_1"우리는 Docker 얼리 어댑터이었습니다 .Docker을 사용함으로써 빠른 개발이 수 마이크로 서비스 아키텍처의 종단 간 지속적인 전달을 개선하고 단순화 할 수있었습니다. 우리의 모든 서비스가 Docker 화되어 있기 때문에 배치를 가속화 서비스를 자동화하고 더 효율을 잘 할 수있는 플랫폼을 갖는 것이 중요합니다. 새로운 서비스 스케줄러와 ELB의 연계를 통해 Amazon ECS이 우리의 서비스에 매우 좋은 플랫폼이며, AWS와 우리의 Docker 플랫폼의 파트너십이 매우 기대됩니다. "

Amazon ECS 콘솔

새로운 Amazon ECS 콘솔에서 클러스터를 설치하거나 이동하는 프로세스를 단순화합니다. 여기에 간단한 PHP 응용 프로그램을 배포하는 서비스를 만드는 절차를 소개합니다. 응용 프로그램은 링크 된 컨테이너에서 전달되는 내용 (메시지 및 시간)를 표시합니다.

우선 콘솔을 열고 사용자 지정 작업 정의 (1 개의 EC2 인스턴스에서 함께 운영하고 컨테이너의 집합)을 만드는 쪽을 선택합니다.

그리고 자신의 작업 정의를 만듭니다. 시각적으로 1 컨테이너 씩 만들어 나갈 수 있습니다.

또는 기존의 JSON 정의를 붙여 넣을 수 있습니다 (이것은 문서의 Docker 기본 섹션 에서 그대로오고있다)

Create a service를 클릭하고 다음 단계에서는 모든 기본값을 사용합니다.

이제 서비스가 정의되어 그것을 움직이기위한 클러스터를 만들 수 있습니다 (이 예에서는 3 개의 t2.micro 인스턴스를 사용합니다). Select / Create Roles 버튼을 사용하여 필요한 IAM 역할을 한 번의 클릭으로 설치합니다.

옵션을 검토하고 의도대로임을 확인한 후 Amazon ECS는 표준 클러스터 EC2 인스턴스를 시작합니다. 진행은 콘솔에서 볼 수 있습니다.

몇 분 안에 모든 것이 시작하므로 이들을 보면 수 있습니다. 소개 클러스터 목록 (지금은 1 만)를 살펴 보자.

더 가까이에서 클러스터를보기 위해 확대 봅니다.

거기에서 서비스를 확인하실 수 있습니다.

필요한 경우 변경할 수 있습니다.

물론 이러한 모든 작업이나 정보 취득은 ECS API 와 Command-Line Interface (CLI)를 통해 할 수 있습니다.

CloudTrail 제휴

ECS API 호출을 AWS CloudTrail 에서 기록되게되었습니다.

또 다른 지역

오늘부터 Amazon ECS는 Asia Pacific (도쿄) 지역에서 사용할 수 있습니다. 다른 방법은 US East (Northern Virginia), US West (Oregon) Europe (Ireland) 지역에서 사용할 수 있습니다.

오늘부터 사용할 수 있습니다

만약 컨테이너 기반의 계산기 나 Amazon ECS가 처음이라면, What is Amazon EC2 Container Service 를 읽는 데서 시작 좋다고 생각합니다.

- Jeff; (번역 : 이와 나가)


[News] 넷플릭스 오픈소스 기술 쓸 땐 컨테이너로

요즘 컨퍼런스 어딜가든 도커 얘기가 빠지지 않는다. 관련 뉴스들을 스크랩해 보았다.

블로터 뉴스 원문 : http://www.bloter.net/archives/213597


2014.11.23

넷플릭스 오픈소스 기술 쓸 땐 컨테이너로


대형 IT 기업들이 오픈소스 개발에 한창 힘을 쏟고 있다. 넷플릭스도 오픈소스 개발에 적극적이다. 지난주에는 도커 기술인 ‘제로투도커’를 오픈소스를 내놓았다. 넷플릭스가 제공한 오픈소스 기술을 쉽게 이용할 수 있게 돕는 기술이다.

netflix_zerotodocker_02

넷플릭스는 많은 사용자들에게 스트리밍 서비스를 제공하는 업체다. 따라서 확장성 있는 인프라 플랫폼을 만드는 데 큰 투자를 하고 있다. 지금까지 49개의 오픈소스를 공개했다. AWS용 관리 콘솔, 애플리케이션 모니터링용 라이브러리, 보안 기술, 백업·복구 기술 등이다.

제로투도커는 컨테이너 이미지 기술이다. 넷플릭스 오픈소스 기술은 설치하고 배포하는 과정이 복잡했는데, 컨테이너 기술로 쉽고 빨리 설치할 수 있게 됐다. 넷플릭스는 “제로투도커로 명령어 한 줄을 입력해서 넷플릭스가 제공하는 모든 오픈소스 기술들을 통합해 단 몇 분만에 이용할 수 있을 것”이라며 “각각의 오픈소스를 격리시켜 원하는 설정이나 시스템을 유지한 채 자원을 관리할 수 있게 도와준다”라고 설명했다.

최근 도커는 컨테이너 이미지와 도커 파일을 공유할 수 있는 ‘도커허브’를 출시했다. 넷플릭스는 여기에 기존에 제공하던 오픈소스 기술들의 이미지를 올려놓고, 제로투도커를 지원하고 있다. 예를 들어 ‘아스가르드’, ‘유레카’, ‘시크리티몽키’등을 컨테이너 이미지 형태로 도커허브에 올려놓았다. 넷플릭스는 “가용성이나 보안상의 문제로 핵심 제품에 바로 사용할 수 있는 수준은 아니다”라면서도 “넷플릭스 오픈소스를 쉽게 접해볼 수 있도록 도와줄 것”이라고 기대했다.

netflix_zerotodocker_03

▲도커 파일 저장소, 도커허브. 넥플릭스는 기존 오픈소스 기술을 도커허브에 올려놓고 제로투도커와 활용할 수 있도록 지원하고 있다.

■ 제로투도커 깃허브 페이지

[News] AWS표 컨테이너 서비스 마침내 나왔다

요즘 컨퍼런스 어딜가든 도커 얘기가 빠지지 않는다. 관련 뉴스들을 스크랩해 보았다.

블로터 뉴스 원문 : http://www.bloter.net/archives/212766


2014.11.14

AWS표 컨테이너 서비스 마침내 나왔다


“준비되셨습니까?”

의미심장한 미소를 짓은 채, 보너 보겔스 아마존 최고기술경영자(CTO)는 아마존웹서비스(AWS) 리인벤트(re:Invent) 행사에서 11월13일 새로운 서비스 하나를 소개했다. 이름하여 ‘아마존 EC2 컨테이너 서비스’. 행사에선 개발자들의 환호와 박수가 이어졌다. 드디어, AWS도 도커 기술을 내놓았다. 지난 7월부터 구글,MS가 도커와 함께 컨테이너 기술을 개발하는 동안, AWS는 별다른 반응을 보이지 않았다. 결국 입을 꾹 다문 채 컨테이너 기술을 연구하고 있던 셈이다. 현재는 프리뷰 버전이 공개됐다.  13일 리인벤트 행사에서 EC2 컨테이너 기술 데모를 직접 보여줬다. 여기에 도커 최고경영자(CEO)까지 직접 나와 리인벤트 참여자 1만3500명에게 AWS기술과 도커가 어떻게 활용될 수 있는지 직접 설명했다.

미국 현지시각 13일 리인벤트 행사에 두번째 키노트가 있는 날. 보너 보겔스 CTO가 9시 정각 등장했다. 보너 보겔스 등장은 전날 발표자였던 앤디 재시 AWS 시니어 부사장과는 사뭇 달랐다. 앤디 재시 부사장은 양복을 입고 나왔지만, 보너 보겔스 CTO는 티셔츠에 자켓을 걸쳤다. 개발자들은 앤디 재시 부사장보다 훨씬 더 크게 보너 보겔스를 맞이했다. 보너 보겔스 CTO는 그러한 환호를 즐기듯 유쾌하게 등장했다. 그는 어제 새로 발표한 AWS 제품을 복습하듯 다시 언급했다. ‘키 매니지먼트 서비스’, ‘오로라’ 서비스 등의 보안, DB 기술 등의 장점을 강조했다.

AWS_reInvent_2014_13th_key_07

▲ 보너 보겔스 아마존 최고기술경영자(CTO)

그리고 고객사의 발표가 이어졌다. 스플렁크, 옴니폰, 더웨더채널같은 비교적 큰 기업이 나와 유창한 발표를 했다. 그 다음 2013년 5월 설립된 스타트업 프리스틴 공동설립자가 무대에 나왔다. 프리스틴은 구글 글래스와 헬스케어를 결합한 기술을 개발하는 곳이다. 갑자기 왜 이런 작은 기업 사례를 소개할까라고 의문을 갖던 시점에 다음 슬라이드를 보고 그 이유를 알아챘다. 파란 고래 그림 위에 여러 상자가 올려있는 그림. 도커의 아이콘이다. 프리스틴 공동창립자는 해당 서비스를 도커와 AWS 기반 위에 개발했다고 발표했다. 그리고 두 기술은 매우 잘 어울린다고 강조했다. 보너 보겔스 CTO는 일부러 그렇게 뜸을 들였던 셈이다. 기조연설이 시작한지 50분정도가 지났을 때, 오늘의 가장 주인공이라 부를 수 있는 ‘아마존 EC2 컨테이너 서비스’를 발표했다.

AWS_reInvent_2014_13th_key_04

프리스틴 공동설립자의 발표가 끝나고, 보너 보겔스 CTO는 컨테이너 기술과 그 인기를 소개했다. 컨테이너 기술은 리눅스 설치와 실행에 필요한 정보와 자료를 마치 박스에 담듯이 모아놓는 기술을 말한다. 이를 통해 설치과정이 간소화되면서 애플리케이션을 쉽게 배포할 수 있다. 도커는 이러한 컨테이너를 생성하고 배포하는 걸 자동화 시켜주는 오픈소스다.

도커는 이미 올해부터 개발자들에게 꾸준한 사랑을 받았다. 하지만 이를 AWS EC2에서 사용하려면 개발자 스스로 소프트웨어를 만들거나 오픈소스를 이용해야만 했다. AWS는 도커를 활용한 사례를 알린 적은 있지만 제품은 출시한 바 없다. 따라서 과거 AWS 고객은 자체 소프트웨어를 통해 컨테이너 자원을 할당하고, 각 컨테이너들의 순서를 정하거나 모니터링했다. 이는 꽤 복잡한 과정이어서 개발자들은 도커를 쉽게 활용하지 못했다. EC2 컨테이너 서비스는 이러한 문제를 API로 해결했다. API로 쉽게 컨테이너를 시작 및 관리할 수 있기 때문이다. AWS는 데모를 통해 단 몇 초 만에 수천개의 컨테이너를 만들고, 중지하고, 관리할 수 있다고 설명했다. 또한 규모에 상관없이 컨테이너를 관리할 수 있으며, 스케쥴링도 유연하게 할 수 있다고 강조했다.

AWS_reInvent_2014_13th_key_08

AWS_reInvent_2014_13th_key_06

데모가 끝나고, 도커를 누구보다 잘 아는 벤 고럽 도커 CEO가 리인벤트 무대에 깜짝 등장했다. 벤 고럽 CEO는 과거와 현재의 개발 방식이 달라진 점을 강조하며, 애플리케이션을 배포에 대한 중요성을 설명했다. 예를 들어, 과거와 달리 현재 개발환경은 개발과정이 반복되며, 여러 컴포넌트로 애플리케이션을 구성하고, 또한 여러 서버에 애플리케이션이 설치되고 있다. 벤 고럽 CEO는 “컨테이너 기술은 애플리케이션 배포를 자동화해주기 때문에 최근 개발 환경에 어울린다”라고 설명했다.

AWS_reInvent_2014_13th_key_03

▲벤 고럽 도커 최고경영자(CEO)

AWS_reInvent_2014_13th_key_05

EC2 컨테이너 서비스는 도커 허브를 사용한다. 이를 통해 도커 컨테이너 기반 애플리케이션은 다른 사람들과 공유될 수 있다. AWS는 보도자료를 통해 “EC2 컨테이너 서비스 API를 도커 오픈소스에 통합하는 방법을 모색 중이다”라며 앞으로 AWS가 도커 오픈소스에 일부 기여할 것을 암시했다.

매트 갈만 아마존 EC2 부사장은 같은날 보도자료를 통해 “많은 고객이 도커 컨테이너를 현재 EC2 인스턴스에서 이용하고 관리하고 싶어했다”라며 “EC2 컨테이너 서비스로 어플리케이션을 안전하고 확장성 있게 운영할 수 있을 것”이라고 기대했다.

AWS가 도커 진영에 합류하면서, 도커에 대한 관심은 더욱 높아질 것으로 보인다. 과거 도커는 안정성과 그 활용도를 검증하지 못했다. 이번 AWS 컨테이너 기술로 좀 더 많은 개발자들이 컨테이너 기술에 쉽게 접할 수 있을 것으로 보인다.

[News] 조이엔트, 컨테이너 기술 오픈소스로

요즘 컨퍼런스 어딜가든 도커 얘기가 빠지지 않는다. 관련 뉴스들을 스크랩해 보았다.

블로터 뉴스 원문 : http://www.bloter.net/archives/212213


2014.11.07

조이엔트, 컨테이너 기술 오픈소스로

조이엔트가 컨테이너 기술 시장에 도전장을 내밀었다. 컨테이너 기술을 이루는 핵심 제품 2개를 오픈소스로 공개해 배포했다. 주로 도커가 주름잡고 있던 컨테이너 기술 시장에 새로운 경쟁자들이 속속 들어서는 것으로 보인다.

조이엔트는 2004년에 설립된 회사로 IaaS(Infra as a Service)와 PaaS(Platform as a Service) 클라우드 서비스를 주로 제공하고 있다. 특히 루비온레일즈, 노드JS과 같은 오픈소스를 지원하는 서비스들을 대거 출시한 바 있다.

조이엔트는 11월6일 공식블로그를 통해 “조이엔트는 2006년부터 운영체제(OS) 가상화 기술에 큰 투자를 하고 있다”라며 “이를 운영체제 컨테이너 기술로 변화시켰다”라고 설명했다.

Joyent_container_01

조이엔트는 컨테이너 기술을 위해 핵심 구성요소 2개를 오픈소스로 공개했다. 하나는 ‘SDC (SmartDataCenter)’로, 컨테이너 기반 통합(Orchestration) 소프트웨어다. 퍼블릭 클라우드를 운영할 때 사용할 수 있는 핵심SW다. 또 다른 하나는 ‘맨타 오프젝트 스토리지 플랫폼’이다. 이는 ZFS(Zettabyte File System) 기반인 게 특징이다. ZFS는 기존보다 더 많은 대용량 데이터를 처리할 수 있는 파일 시스템이다. 조이엔트는 두 기술을 활용하면, 인프라 확장성을 높이면서 큰 데이터를 처리하는데 용이할 것으로 기대하고 있다.

브라이언 캔트릴(Bryan Cantrill) 조이엔트 소프트웨어 엔지니어는 “컨테이너 기술은 이제 다루기 어려운 기술이 아니라 차세대 컴퓨팅을 이끌 근본적인 기술이 되었다”라며 “이번에 두 기술을 오픈소스로 공개하면서 컨테이너 기술이 더 확대될 것”이라고 기대했다.
Joyent_container_02

올해 들어 컨테이너 기술에 대한 관심은 증가하는 추세다. 컨테이너 기술은 애플리케이션 배포를 자동화는 기술로, 인프라 자원을 더 빠르고 효율적으로 관리하도록 돕는다. 서로 떨어져 있던 자원들을 컨테이너 박스에 묶어 서로 충돌하는 요소를 없애주며, 설치과정을 쉽게 만들어주는 게 특징이다. 이번 주 초에는 구글이 ‘구글 컨테이너 엔진’을 발표했고, 리눅스 소프트웨어 제공업체 캐노니컬도 보안성을 강화한 컨테이너 기술 ‘리눅스 컨테이너 데몬’을 출시한바 있다. 또한 마이크로소프트(MS)도 적극 관심을 보이고 있어, 윈도우용 컨테이너 기술을 따로 개발하고 있다.


[News] 구글, 클라우드에 도커 컨테이너 기술 지원

요즘 컨퍼런스 어딜가든 도커 얘기가 빠지지 않는다. 관련 뉴스들을 스크랩해 보았다.

블로터 뉴스 원문 : http://www.bloter.net/archives/211976


2014.11.05

구글, 클라우드에 도커 컨테이너 기술 지원


구글이 더 빠른 클라우드를 만들기 위한 노력에 한창이다. 11월4일 ‘구글 클라우드 플랫폼 라이브’에서 구글 클라우드에 대한 새로운 기술과 가격을 발표했다. 컨테이너 기술, 네트워크, 모바일 기술이 눈에 띄었다.

올해 9월 구글 컴퓨트 엔진팀 수장은 새로 바뀌었다. 브라이언 스티븐스 부사장이다. 그는 구글 이전에 레드햇에서 12년 동안 근무한 인물로, 레드햇 최고기술경영자(CTO)를 맡은 바 있다. 레드햇에 근무했을 당시에 도커와 오픈스택 기술을 적극적으로 개발했는데, 그의 경력이 이번 구글 클라우드 전략에서도 빛이 났다. 구글은 11월4일 ‘구글 컨테이너 엔진’을 발표했다. 오픈소스 ‘쿠베르네테스’를 활용한 기술로, 도커 컨테이너 기술을 구글 클라우드 플랫폼에서 쉽게 사용할 수 있도록 도와준다. 아직 알파버전이지만, 구글 컴퓨트 엔진을 사용하는 고객이라면 누구나 사용해볼 수 있다.

Google_Container_Engine_01

구글은 11월4일 블로그에 “구글 컨테이너 엔진은 애플리케이션은 작은 단위로 쪼개고 좀 더 빠르고 쉽게 관리할 수 있게 도와줄 것”이라며 “애자일 운영을 할 수 있다”라고 장점을 설명했다. 구글은 다른 클라우드 기업보다 더 빠르게 컨테이너 기술을 도입하고 주력 무기로 삼고 있는데, 이번에도 빠르게 도커 기술을 통합하는 것으로 보인다.

Google_Container_Engine_02

▲출처: 구글 블로그(링크바로가기)

네트워크 기술도 대폭 지원한다. 이를 위한 ‘구글 클라우드 인터커넥트’라는 프로젝트도 공개했다. 구글 클라우드 고객은 앞으로 구글이 제공하는 70여개 인터넷 접속거점(PoP, Point Of Presence)을 바로 이용할 수 있다. 이를 통해 좀 더 빠른 구글 클라우드 서비스를 이용할 수 있다. 구글은 7개 IX(Internet exchange) 업체들과 협력을 맺었다. 이 IX 업체들과 협력으로 구글 클라우드 고객은 이전보다 더 많은 데이터를 빠르게 전송하고 처리할 수 있게 됐다.

마지막으로, VPN(가상사설망) 기술을 2015년 안에 제공할 예정이다. VPN은 여럿이 함께 쓰는 인터넷 망에 암호화 기술을 적용해 안전하게 데이터를 보내는 기술이다. <기가옴>은 11월4일보도에 VPN를 “하이브리드 클라우드 전략을 위한 핵심요소”로 평가하기도 했다. 회사 내부에 있는 서버 데이터를 퍼블릭 클라우드로 옮겨가는 과정에선 많은 데이터가 오가기 마련인데, 이때 VPN으로 비용을 절감하고 보안성을 높일 수 있기 때문이다. 경쟁사인 아마존웹서비스(AWS)는 ‘다이렉트 커넥트’, 마이크로소프트는 ‘익스프레스루트’, IBM은 ‘다이렉트 링크’라는 네트워킹 기술로 기업 하이브리드 클라우드 전략을 돕고 있다.

구글은 얼마 전 인수했던 파이어베이스 기술을 직접 시연하며 “실시간 통신 기반의 모바일 앱 개발에 좋다”라고 설명했다. 파이어베이스는 백엔드 데이터를 여러 모바일 기기에서 빠르게 동기화하고 처리해주는 기술을 제공한다. 기존 인프라 뿐만 아니라 모바일 개발환경을 지원하면서, 구글은 PaaS 경쟁력을 높일 심산이다.

가격 경쟁 대열에도 적극 합류하는 모습이다. 구글은 “데이터 복사 비용이 47%, 빅쿼리 스토리지는 23%, 퍼시스턴트 디스크 스냅샷은 79% 인하했다”라고 밝혔다. 또한 “플래시 스토리지는 48%, 클라우드 SQL 스토리지는 25% 가격이 내려간다”라고 설명했다.

[News] MS·도커, 윈도우 서버용 컨테이너 기술

요즘 컨퍼런스 어딜가든 도커 얘기가 빠지지 않는다. 관련 뉴스들을 스크랩해 보았다.

블로터 뉴스 원문 : http://www.bloter.net/archives/209868


2014.10.16

MS·도커, 윈도우 서버용 컨테이너 기술


리눅스 컨테이너 기술 ‘도커‘를 앞으로 윈도우 서버 기반에서도 사용할 수 있다. 마이크로소프트(MS)는 도커와 협력해 윈도우용 컨테이너 기술을 따로 개발하기로 결정했다. MS는 새로 출시할 윈도우 서버에 도커 기술을 넣고 기술력과 속도를 높일 예정이다. 클라우드 서비스 ‘애저’에도 도커 기술을 더 많이 지원해 경쟁력을 높일 심산이다.

DockerWithWindowsSrv_01

▲출처 : MS 애저 블로그

윈도우 서버의 경쟁 기술인 리눅스 진영에서는 지난 해부터 도커에 대한 관심이 뜨거웠다. 구글, 레드햇, VM웨어도 도커 기술을 지원하고 있다. MS도 이러한 분위기를 인식하고 윈도우 서버 운영체체(OS)에서 이용할 수 있는 도커 기술을 만들려는 것으로 보인다. MS는 이미 구글이 이끄는 ‘쿠베르네테스’ 프로젝트에 동참해 도커 기술력을 높이고, 이를 오픈소스로 공개하고 있다. 지난 6월부터 MS 클라우드 서비스 ‘애저’에도 도커를 지원했다.

솔로몬 하이크스 도커 최고기술운영자(CTO)는 “곧 윈도우 구성 요소와 도커를 함께 사용할 수 있을 것”이라며 “리눅스 기반에서 작동했던 모든 기능과 기술을 윈도우 서버에서도 똑같이 지원할 것”이라고 설명했다.

도커는 리눅스 컨터네이너 가상화 기술로, 애플리케이션 컨테이너를 자동 생성하도록 돕는다. 리눅스 커널 위에 도커엔진을 얹고, 이를 통해 운영체제, 애플리케이션, 스토리지 같은 자원을 분리해준다. MS는 윈도우 도커 기술을 위해 기존 리눅스 컨테이너 가상화(LXC) 대신 윈도우 서버 컨테이너 기술을 제공한다. 그 위에 도커 엔진을 올리고 윈도우 서버가 돌아갈 수 있도록 지원한다. 여기에 ‘도커 리모트 API’를 활용한다. 이렇게 되면 도커 클라이언트를 통해 컨테이너를 생성하고 배포할 수 있을 것으로 보인다.

DockerWithWindowsSrv_02

▲출처 : MS 애저 블로그

MS는 애저를 위해 ‘도커 오픈 오케스트레이션 API’도 지원한다. 개발자는 해당 API로 도커 애플리케이션을 애저에 쉽게 설치할 수 있다.

DockerWithWindowsSrv_03

▲출처 : MS 애저 블로그

MS는 10월15일 ‘MS 오픈 테크놀로지 블로그‘를 통해 “도커 컨테이너 기술로 소프트웨어 애플리케이션을 더 쉽게 만들 수 있을 것”라며 “각 서비스를 분리해서 관리하기도 편할 것”이라고 설명했다. 또한 “테스트 환경를 일관성 있게 유지하며 통합하는데도 용이할 것”이라며 “웹앱, 데이터베이스, 서비스 뒷단 기술을 확장하는 데도 사용할 수 있다”라고 활용사례를 밝혔다.

앨 힐와 IDC 프로그램 디렉터는 <컴퓨터월드>에 “MS는 똑똑한 결정을 한 셈”이라며 “MS는 윈도우 개발자가 도커 때문에 리눅스로 떠나지 않기를 바라고 있다”이라고 설명했다. 또한 그는 “MS가 오픈소스 진영과 점점 더 가까워지려 노력하고 있다”라고 평가했다.