컨테이너라고 불리는 하나의 작은 소프트웨어 유닛안에
어플리케이션과 그 작동을 위한 시스템 툴, 의존성등을 하나로 묶어서
다른 서버, 다른 pc 그 어떤 곳에도 쉽게 배포하고, 안정적으로 구동하도록
도와줍니다!
테크놀로지가 발전함에 따라서
어플리케이션을 구동하는데 꽤나
많은 것들이 필요해졌습니다.
node.js를 예로 들어보면 우리의 source 파일만 서버에 배포하는 것으로는
어플리케이션을 구동할 수 없습니다ㅜㅜ
실행하는 서버에도 어플리케이션에서 활용한 npm 과 node 같은 프로그램
Dependencies, configs 설정 등
다양한 세팅을 해주어야 하기 때문이지요
docker 컨테이너 안에는 어플리케이션 코드 뿐만 아니라
활용한 백엔드 프로그램, npm , 환경설정, 다양한 리소스들이
포함되어 있습니다!!
한마디로 어플리케이션을 구동하는 데 필요한 모오오오~~~~든 것들을
이 컨테이너 안에 담아 놓았다고 볼 수 있습니다.
도커는 Docker 파일과 그 파일의 내용으로 작동하여 만들어진
image 그리고 그 image를 구현하여 실행시켜주는 컨테이너
이렇게 3가지의 중요 구성요소가 있습니다.
첫 번째 단계인 도커파일은 컨테이너를 어떻게 만들어야 하는지 알려주는
설명서 입니다!
어플리케이션을 구동하기 위해서 꼭 필요한 파일은 어떤 것이 있는지,
어떤 프레임워크나 라이브러리를 설치해야하는지, 또 필요한 환경변수와
어떤 식으로 구동해야 하는지 등 스크립트도 포함될 수 있습니다.
우리 어플리케이션을 실행하는데 필요한 런타임 환경
시스템 툴, 시스템 라이브러리 모든 세팅들이 포함되어 있습니다!!
한 마디로 말하자면 이미지는 제품들(모든 세팅)과 제품들의 설명서(도커파일)이 들어가 있는 하나의 택배라고 생각하시면 이해하시기 쉬우실 겁니다!
컨테이너는 샌드 박스처럼 저희가 잘 패키징한 이미지를
‘고립된’ 환경에서 ‘개별적인’ 파일 시스템 안에서 실행할 수 있는 것을 말합니다
컨테이너 안에서 어플리케이션이 동작한다 라고 보시면 됩니다!
ex)
저희가 아주 오래 기다렸던 조립식 컴퓨터를 택배로 받고
‘고립된’ 자신의 방(컨테이너) 안으로 들어가서 설명서(돜파일)를 보고
부품들(모든세팅)을 조립하는 것을 의미한다고 생각하시면 됩니다!
저희가 잘 준비한 image를 바탕으로 컨테이너를 만들 수 있습니다.
따라서 기본 템플릿이 되는 image는 불변의 상태인 class라고 볼 수 있고
컨테이너는 class의 정보를 가져와서 파일 생성, 수정 등이 가능한
인스턴스라고 생각하셔도 됩니다! 자유롭게 수정이 가능하죠!
각자의 컨테이너에서 수정되거나 삭제된 파일들은 기존 image에는 전혀
영향을 주지 않습니다!
따라서 image는 class 컨테이너는 만들어진 인스턴스라고 생각하셔도 좋아요!
저희가 개발하는 환경에서 도커를 설치하고
이미지를 다운 받을 서버에도 도커를 설치해둔 상태에서
1: 어플리케이션을 구동하는데 필요한 도커파일을 작성한다!
2: 어플리케이션을 패키징 할 수 있는 이미지를 만듭니다!
3: 이미지를 컨테이너 레지스토리에 올립니다!(도커허브, 깃허브패키지스 등)
4: 서버에서 다운로드 받아서 컨테이너로 실행할 수 있습니다!
'내일배움캠프 TIL' 카테고리의 다른 글
(var, let, const), (Promise) 본캠프 TIL 02/10 (0) | 2025.02.10 |
---|---|
EFK란? 본캠프 TIL 02/05 (0) | 2025.02.05 |
nest에서의 jest기본 문법 본캠프 TIL 02/04 (0) | 2025.02.04 |
모니터링 & 로깅 → EFK 스택 본캠프 TIL 02/03 (0) | 2025.02.03 |
LexoRank 를 적용하여 카드 순서 이동하기 본캠프 TIL 01/31 (0) | 2025.02.01 |