도커(Docker)

정의 : 리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램

목적 : 특정한 소프트웨어를 개발한 이후에 배포하고자 할 때 해당 프로그램이 어디에선가 손쉽게 구동이 되도록 하기 위한 환경설정을 하기 위함

동작방식 : 컨테이너에 이미지를 담아 구동시키는 방식

‘나는 어떤 소프트웨어를 컨테이너에 담아서 구동시킬 것이다’ 라는 명령어를 담은 도커 파일(Docker File)을 빌드하면 도커 이미지(Docker Image)가 생성된다. 그 이미지를 실행한 Container도커(Docker Engine)에 올린다.

패러다임 :

도커는 변경 불가능한(Immutable) 인프라를 주요 패러다임으로 상정하고 있다.

따라서 서버를 구축한 이후에는 변경이나 업데이트를 할 수 없도록 하였다.

대신에 서버를 업데이트 해야 할 때는 새로운 도커 이미지 자체를 업데이트하고 기존의 컨테이너는 삭제하고 새로운 컨테이너를 올리기만 하면 된다.

상태가 없어야 한다.(Stateless) & 확장 가능한 형태여야한다.(Scalable)

도커로 돌아가는 소프트웨어 자체는 어떠한 데이터도 가지고 있으면 안 된다.(임시 파일 정도만)

사용자 계정 정보와 같은 실질적인 데이터들은 외부 스토리지로 빼놓아야 한다. - 최근 자주 언급되는 MSA와 닮아있다.

그 외 :

2013년에 발표 되었다.