Docker란, 소프트웨어를 신속하게 구축하고, 테스트, 배포를 할 수 있도록 하는 플랫폼이다. 컨테이너라는 단위로 애플리케이션 실행에 필요한 라이브러리 등을 패키징하고 이를 독립적으로 실행할 수 있도록 한다. 이런 컨테이너는 애플리케이션 실행에 필요한 파일을 포함하기 때문에 호스트에 설치를 필요하지 않는다. (OS에 구애받지 않음)

또한, 이러한 컨테이너를 쉽게 공유하기 쉽고 생명 주기 관리도 가능하다는 장점이 있다. 이러한 특징을 통해 빠르게 애플리케이션을 제공하고, 배포 뿐만 아니라 확장에도 도움이 된다. 정리하면 아래와 같다.

Docker 인프라에 대해서

Docker는 Immutable Infrastructure Paradigm(불변 인프라) 이라는 개념을 기반으로 한다고 한다. 이번에 설명하면서 용어 정리를 하자면, 인프라 종류 중 Mutable Infrastructure, Immutable Infrastructure 각각 가변 인프라, 불변 인프라 라고 칭하고 설명하겠다.

가변 인프라(기존에 주로 쓰이는 방식)는 서버가 수행되는 중에 개발자나 관리자가 SSH로 접속해서 해당 어플리케이션, 또는 패키징을 수동으로 업그레이드 또는 다운그레이드 하는 방식으로 진행 되었다. 이런 경우 기존 서버 환경의 수정이 일어나는 변경 가능한 인프라인 것이다.

하지만, 불변 인프라는 이와 반대로 서버가 배포된 후 수정되지 않는 것이다. 그렇다면, 배포 후 기능 개선, 추가 등 수정 사항은 어떻게 할까?

이 경우 해당 서버에 코드를 개선하는 것이 아니라 다른 서버에 기능 개선, 수정 등을 추가한 것으로 구성해 두고, 이후에 이전 서버를 대체하기 위해 미리 준비 해둔다. 미리 준비한, 프로비저닝 된 서버는 유효성이 검증되면 이전 서버를 폐기하고 사용하게 된다.