새로운 환경에서 이전에 세팅한 개발 환경을 그대로를 설치 및 사용할 수 있다.
ex) 더 성능 좋은 서버로 옮겨갈 때, 늘어난 접속량 처리를 위해 서버 갯수 늘리기, 프로그램 version 맞추기 등
매번 많고 복잡한 장비들을 새로운 환경에다 매번 설치해야한다는 번거로움이 있기 때문이다.
저장한 사본들은 가져오지 않아도 된다. 왜냐하면 각 요소들이 설치된 모습을 Docker의 Image에 그대로 업로드(저장)가 되어있다. Cloud 개념과 비슷하게 어디서든 내려받아 설치할 수 있다.
Docker Image는 DockerHub란 곳에 저장되어 업로드 돼서 공유하고, 다운받을 수 있다.
Image로 저장된 항목들이 함께 연결되어 동작하도록 한 상태를 명령어나 문서 형태로 저장할 수 있다.
따라서 이 문서만 잘 보관해두면 이 요소들이 언제 어디서나 Dockerhub로 부터 받아 설치될 수 있다.
도커는 이미지(설정, 파일 시스템, 코드)를 컴퓨터에 바로 설치하지 않는다. 각각을 컨테이너라고 부르는 독립된 가상 공간을 만들어내어 복원한다.
ex) 서로 다른 버전의 자바를 돌리는 서비스도 각각의 컨테이너 안에서 방해 받지 않고 동작한다
이로 인해 서로 다른 환경의 애플리케이션이나 서비스를 동시에 실행하거나 관리하기 용이해진다.
같은 물리적 공간에서도 컨테이너로 분리되고, 필요에 따라 연결된 독립된 업무 환경을 구축할 수 있다. 장비들에 문제가 생기더라도, 한번 저장된 개발 환경은 얼마든지 새로 불러낼 수 있다.
VirtualBox(가상 컴퓨팅)은 한 물리적 컴퓨터 안에 각각 OS를 가동하는 가상 컴퓨터들이 물리적 자원을 분리하여 쓴다 => 성능에 한계가 생긴다.
Docker는 OS단에 내려가지 않고, 실행환경만 독립적으로 돌린다. 따라서 컴퓨터에 직접 요소들을 설치한거랑 별 차이가 없는 성능을 낼 수 있다.
Docker가 VirtualBox보다 훨씬 가볍고 빠르게 각각을 설치 및 실행할 수 있다.
ex) 서버에 문제가 생겼을 때 일일히 삭제하며 새로 깔 필요 없이 통째로 컨테이너를 교체하여 실행하면 된다.