infra 부분에서 조금 순서가 바꼈지만..
근본적으로 컨테이너에 대해서 이해하고 넘어가야할 필요가 있다고 생각해서 포스팅한다.
호스트OS 상에서 논리적인 구획을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것.
실행환경을 독립적으로 운용할 수 있도록
기반환경 또는 다른 실행환경과의 간섭을 막고실행의 독립성을 확보해주는 운영체계 수준의 격리 기술
을 말한다. 운영체제 커널은 공유한다.
물리 서버 상에 설치한 호스트 OS의 경우 여러 어플리케이션은 똑같은 시스템 리소스를 사용한다. 이 때 작동하는 여러 어플리케이션은 데이터를 저장하는 디렉토리를 공유하고, 서버에 설정된 동일한 IP 주소로 통신한다.
이에 반해, 컨테이너 기술을 사용하면, OS나 디렉토리, IP주소 등과 같은 시스템 자원을 마치 각 어플리케이션이 점유하고 있는 것처럼 보이게 할 수 있다.
- 가벼움
사용자의 Request Traffic이 증가함에 따라, 가상머신이나 컨테이너를 추가적으로 배포할 때 가상머신의 크기는 최소 GB 단위 이지만, 컨테이너의 경우 Guest OS가 없기에 MB 단위의 크기를 가진다.
- 탄력성
컨테이너는 Linux, Windows, 가상머신 어느 환경에서나 구동이 되므로 개발 및 배포가 쉬워진다. 호스트 OS가 달라도 어디서든 구동시킬 수 있다.
- 유지관리 효율
운영 체제 커널이 하나밖에 없기 때문에 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경사항이 모든 컨테이너에 적용된다.
가상머신은 애플리케이션을 동작시키기 위해 애플리케이션이 사용하는 리소스에 운영체제가 동작하기 위한 리소스가 추가로 필요하다.
그러나 컨테이너는 애플리케이션이 동작하기 위한 리소스만 사용하기 때문에 더 빠르고 동작시킬 수 있다.
https://kk-7790.tistory.com/135
https://captcha.tistory.com/46
https://nearhome.tistory.com/83
https://velog.io/@geunwoobaek/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EB%B0%8F-%EB%8F%84%EC%BB%A4-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC