컨테이너 기반의 오픈소스 가상화 플랫폼 (컨테이너 기술을 지원하는 다양한 프로젝트) 중 하나입니다.
이 말은 즉, 컨테이너 기술을 지원하는 기술은 여러가지가 있고, 그 중에 대표로 자리잡은 프로젝트가 도커입니다.
가상화
다양한 언어와 프레임워크를 사용한 서비스들은 제각기 다른 배포 방법을 가지고 있습니다.
하지만 도커를 통해 패키징하여 컨테이너를 만든다면, 어떤 언어, 프레임워크, 런타임을 사용하던 관계없이 동일한 배포 프로세스를 가질 수 있습니다.
도커는 신기술이 아닙니다. 컨테이너라는 기술은 이미 존재했지만, 기술에 대한 러닝커브가 매우 높았습니다.
이러한 러닝커브를 도커가 해결하면서 많은 사람들이 컨테이너 기술을 더욱 쉽게 사용할 수 있습니다.
서버를 돌리기 위한 환경을 구축하는 것(언어, 웹서버, DB, 자동배포 툴 등)은 매우 복잡하고 어려운 일입니다.
버전도 잘 신경써줘야되고 많은 설정값들을 개발환경과 운영환경이 동일할 수 있도록 해야합니다.
이러한 상황에서 서버를 추가하거나 증설하게 되면 똑같이 설정하는 작업이 필요합니다.
기존 서버에 대한 히스토리가 많지 않다면, 그대로 설치하는 것도 쉽지 않은 일이 될 수 있습니다.
기존의 서버 관리처럼 복잡하고 반복적인 작업을 하지 않아도 됩니다.
도커를 사용하면 OS 환경 설정, 언어, 라이브러리, 시스템 도구 등이 설치된 환경 그대로를 이미지로 빌드할 수 있습니다. 개발 환경에서 만들어진 이미지를 그대로 운영 서버에 전달하고 이미지를 기반으로 컨테이너를 생성하고 실행하면 됩니다.
이를 통해 운영 서버 뿐만 아니라 개발 및 테스트 서버 구축과 운영에도 장점을 줄 수 있습니다.
단, 도커의 컨테이너는 삭제되면 모든 데이터를 초기화합니다. 이를 막기 위해서 외부 저장장치에 링크를 하거나, AWS S3 등 별도의 클라우드 스토리지를 사용할 필요가 있습니다.
이미지
컨테이너
Hypervisor
가상 컴퓨터의 단점은 무조건 Hypervisor를 거쳐야 합니다.
또한 물리적 자원을 각각의 게스트 OS들이 분할해서 사용하기 때문에 성능의 한계가 옵니다.
게스트 OS와 관련된 모든 데이터들이 포함되기 때문에 이미지의 크기가 상대적으로 큽니다.
도커 엔진
호스트 OS 위에 도커 엔진이 컨테이너를 관리합니다.
도커 엔진 위에서 환경만 독립적으로 설정하고 실행하는 거라 컴퓨터에 직접 설치한 것과 차이 없는 성능을 보여줍니다.
가상 컴퓨터보다 훨씬 가볍고 빠르게 이용할 수 있습니다. 각각의 컨테이너를 설치하고 실행하고 켜고 끄고 서로 연동할 수 있습니다. 서버에 무언가가 잘못돼서 고쳐야 하거나, 일부를 업그레이드 해야 하거나 할 때는 일일이 수정하지 않고 컨테이너를 교체해서 실행할 수 있습니다.
https://peter-cho.gitbook.io/book/undefined/15-devops/docker
https://www.youtube.com/watch?v=LXJhA3VWXFA
https://www.youtube.com/watch?v=IiNI6XAYtrs
https://velog.io/@oneook/Docker로-React-개발-및-배포하기?utm_source=oneoneone