도커는 엔지니어와 개발자들을 위해 사용됩니다. 예를 들어 설명해보겠습니다.
A회사는 솔루션 프로그램을 개발해 여러 회사에 납품하고 있습니다. 초창기에는 엔지니어가 솔루션에 3~4개의 소프트웨어를 설치해서 납품했습니다. 그런데 시간이 지날수록 솔루션이 업그레이드되고 지방까지 솔루션을 납품하는 일이 잦아집니다. 엔지니어는 매번 솔루션을 납품할 때마다 8개의 소프트웨어를 설치해야 하고, 납품하는 업체들이 많아지는데 설치 시간은 길어지게 됩니다. 이때 도커를 사용합니다.
도커는 컨테이너라는 독립된 공간에서 여러 개의 자원들을 원하는 대로 묶어 이미지를 만드고, 이 이미지를 배포해 운영합니다. 여기서 이미지는 특정 프로세스를 실행하기 위해 모든 파일을 하나로 묶은 형태를 의미하고, 도커파일을 만든 뒤 빌드하면 생성되는 파일입니다. 따라서 엔지니어가 소프트웨어를 각각 설치하지 않고 매번 설치하는 소프트웨어를 이미지로 만들어 배포하면 손쉽게 설치가 가능합니다.
도커 플랫폼에서는 빌드 및 소스코드를 담고 있는 도커파일을 push합니다. 그리고 해당 레지스트리에 저장되고, 엔지니어와 개발자들은 해당 이미지를 사용할 수 있습니다.
또한 통합 테스트 중 에러가 발생할 경우 에러 발생 이전 시점의 이미지를 가져와서 다시 사용하는 롤백 기능을 제공합니다.
도커 파일을 이용하면 쉽고 빠르게 실행 환경을 구상할 수 있습니다. 도커로 원하는 소프트웨어들을 묶어서 배포하면 여러 소프트웨어를 설치하지 않고 하나의 이밎로 설치가 가능합니다.
도커 파일은 리눅스 명령어와 간단한 도커 명령어로 구성되어 있어 작성이 쉽습니다. 잘 작성된 도커파일 하나가 수많은 사람에게 도움을 줄 수 있습니다.
물리적인 서버는 무겁고 유지 비용도 만만치 않습니다. 도커 컨테이너는 물리적인 서버에 비해 상대적으로 가볍습니다.
도커 파일은 이미지 + 단계별 소스 코드 + 빌드할 내용이 담긴 텍스트 파일로 코드 실행에 필요한 OS, 버전, 각 파일 경로에 설치한 파일 등의 설정만 포함되어 있습니다. 따라서 도커파일의 용량은 일반적으로 크지 않고, 일부는 GB 용량입니다. 이는 하드웨어 용량과 비교할 경우 적은 용량이며, 구동 또한 보다 신속하게 이뤄집니다.