본문으로 이동

Unit 1. Docker

미디어위키

Docker는 2013년 3월 Docker, Inc(구 dotCloud)에서 출시한 오픈 소스 컨테이너 프로젝트입니다. 현재 전 세계적으로 큰 인기를 끌고 있으며 컨테이너 분야에서 사실상 표준으로 자리잡았습니다.

2010년을 넘어서면서 서버 시장은 급속히 클라우드 환경으로 옮겨갔습니다. 이렇게 되다 보니 물리적인 서버를 구입하기 보다는 사용 요금만 내고 가상 서버를 빌려 쓰게 되었습니다. 특히 물리적인 서버를 구축하려면 서버 구입과 설치에 상당한 시간이 걸립니다. 하지만 클라우드 환경에서는 1대가 되었든 1,000대가 되었든 클릭 몇 번 만으로 가상 서버를 만들어낼 수 있게 되었습니다.

이렇게 생성된 가상 서버에 각종 소프트웨어를 설치하고 설정을 해야 하는데, 서버가 한 두 대라면 쉽게 설정을 할 수 있지만 서버 개수가 많아지면 사람이 하기가 어려워집니다. 따라서 클라우드 환경에서 설치와 배포가 큰 어려움으로 다가왔습니다.

리눅스/유닉스 환경에서 오랫동안 사용해왔던 셸 스크립트로 설치 및 설정 자동화를 구현해도 되지만 이것도 한계가 있습니다. 셸 스크립트로는 중앙 관리 기능이나 복잡한 기능은 구현하기 힘듭니다. 그리고 리눅스 환경은 설치해야 할 응용프로그램이 많고, 설정도 복잡합니다. 특히 사소한 설정 하나가 운영체제와 서비스의 안정성에 큰 영향을 미칩니다.

이런 상황에서 Immutable Infrastructure라는 패러다임이 나왔습니다. Immutable Infrastructure는 호스트 OS와 서비스 운영 환경(서버 프로그램, 소스 코드, 컴파일된 바이너리)을 분리하고, 한 번 설정한 운영 환경은 변경하지 않는다(Immutable)는 개념입니다. 즉 서비스 운영 환경을 이미지로 생성한 뒤 서버에 배포하여 실행합니다. 이때 서비스가 업데이트되면 운영 환경 자체를 변경하지 않고, 이미지를 새로 생성하여 배포하는 것입니다. 클라우드 플랫폼에서 서버를 쓰고 버리는 것처럼, Immutable Infrastructure도 서비스 운영 환경 이미지를 한 번 쓰고 버립니다.

그림 1-1 Immutable Infrastructure
그림 1-1 Immutable Infrastructure