컨테이너는 표준화된 소프트웨어 유닛입니다.
즉, 코드 집합(패키지)이란 얘기인데 해당 코드를 실행하는데 필요한 종속성과 도구가 포함되어 있다는 것입니다. 즉, 피크닉 상자를 예로 들 수 있는데 피크닉 상자엔 음식과 그것을 담는 그릇들이 들어있다. 이 피크닉 상자를 들고 어디든지 떠날 수 있다는 것이다. 또, 이 피크닉 상자를 누군가와 공유할 수 있고, 내가 갔던 피크닉 장소 어디든지 갈 수 있다.
우리는 종종 다른 어플리케이션 환경을 가지게 됩니다.
예를 들어, nodeJS에서 await이라는 것은 version 14.XX부터 가능합니다. 하지만 원격 시스템 버전에서는 이전의 버전이 사용되고 있을 수 있습니다. 우리 로컬 환경에서는 작동되던 코드가 이전의버전이 사용되고 있는 그곳에서는 작동을 안할 수 있는 환경이 될 수 있습니다. 따라서 그곳도 우리가 개발한 환경과 똑같아야하는 것은 상당한 의미를 가지게 됩니다. 이것이 도커와 컨테이너를 사용해야하는 이유입니다.
Virtual Machine을 쓰면 되는게 솔루션아닌가용??? 호스트 운영체제, 즉, windows, macOS ,Linux 그 위에 virtual machine을 설치하면되는거 아닌가용???? 맞지만 문제점이 있습니다. 중복 복제, 즉 낭비되는 공간이 발생하게 됩니다. 호스트 시스템 위에 추가 시스템이 실행 되고 있기 때문에 성능이 나빠질 수 있으며 이러한 게 많을 경우 성능 저하가 됩니다. 공유할 수 있는 단일 구성 파일이 없기 때문에 정확히 똑같이 설치 해야합니다.