먼저, 역사를 보자면 컴퓨터 안에서 컴퓨터를 만들어내기 위한 시도들을 하였다.(ex.패러럴즈)
컴퓨터 성능이 급격히 좋아지면서 pc에서도 흔히 사용, 그와 비슷하게 서버 성능도 더욱 더 좋아짐
그러다 보니 대부분의 시간을 서버가 놀고 있었다. 서버에 가장 머신을 여러 개 띄워서 일을 더 시키자!
그리고 it기술이 보편화되면서 서버도 많아졌다. 많아 졌으니 서버 자체를 가상 머신에 집어 넣어서 구동하자라는 생각을 하며 가상머신에 각종 서버 프로그램,db등을 설치하여 애플리케이션이나 웹 사이트를 실행
미리 구축한 가상 머신 이미지를 여러 서버에 복사하여 실행 이미지 하나로 서버를 계속 만들어낼 수 있음
가상화 기술을 이용하여 서버를 임대해주는 서비스가 클라우드 서비스'
컴퓨터를 통째로 만들어내다 보니 각종 성능 손실이 발생 현저히 속도가 느려진다.
도커는 리눅스 컨테이너를 사용!
1. 초기에는 LXC(리눅스 컨테이너)를 기반으로 구현
2. 버전 0.9부터는 LXC를 대신하는 libcontainer를 개발하여 사용
3. 실행 옵션으로 선택 가능
도커는 게스트OS를 설치하지 않는다!
1. 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 설치
2. 이미지 용량이 크게 줄어든다.
3. 호스트와 OS자원(시스템 콜)을 공유
이미지 버전 관리도 제공하고 중앙 저장소에 이미지를 올리고 받을 수 있음.(push/pull)
gitHub와 비슷한 형태로 도커 이미지를 공유하는 Docker Hub 제공(github처럼 유료 저장소도 제공)
다양한 API를 제공하여 원하는 만큼 자동화 가능 개발과 서버 운영에 매우 유용하다!
도커 이미지 : 이미지는 서비스 운영에 필요한 서버 프로그램, 소스코드, 컴파일된 실행 파일을 묶은 형태
저장소에 올리고 받는건 이미지(push/pull)
컨테이너는 이미지를 실행한 상태!
이미지로 여러 개의 컨테이너를 만들 수 있다
운영체제로 치면 이미지는 실행파일이고 컨테이너는 프로세스
지금까지는 물리 서버를 직접 운영했음
서버 구입과 설치에 돈이 많이 들고 시간이 오래 걸림
하지만 가상화가 발전하면서 클라우드 환경으로 변화
가상 서버를 임대하여 사용한 만큼만 요금을 지불
클릭 몇 번 만으로 가상 서버를 생성
이제는 자동으로 서버를 추가하고 삭제까지 가능하다.. 서버 대수가 많아지면서 사람이 일일이 세팅하기 힘들어짐