Docker

2024. 8. 26. 20:30개발/Docker & k8s

처음 접하게되는 개념들을

자꾸만 외우려 하는 습관이 남아있다.

 

최근들어 Docker 와 Kubernetes에 대해 공부중인데

자꾸 같은 개념만 반복해서 이해하려 하다보니

내가 어디까지 이해했는지 놓친 채 지식 습득만 하고있는 것 같다

 

내가 이해한 수준을 기록한 뒤

다음에 다시 읽고, 수준에 맞게 다시 공부하고 할 예정이다

 

그만큼 아직 도커 & 쿠버네티스가 확 와닿지 않는다 ㅠ


1.Docker란?

   - 런타임, 라이브러리 등 실행환경이 다른 소스들을, 컨테이너화 하게 도와주는 가상화 플랫폼

  • 컨테이너화 : 일차원적으로 드는 생각 그대로, 프로그램을 특정 틀에 담는 행위
  • 컨테이너 : 런타임, 라이브러리, OS 등이 정의된 환경
  • 가상화 : OS 환경을 임의로 세팅하는 행위 (물리적 리소스를 분할)

2.Docker Image란?

   - 런타임, 라이브러리 등 소프트웨어가 실행되는데 필요한 환경

  • Dockerfile로 정의
  • Dockerfile은, 세팅할 소프트웨어와 같은 디렉토리에 생성 ex) C:\Users\USER\source\repos\my-software\Dockerfile
  • Dockerfile내에 OS, 실행할 소프트웨어, 실행 조건 등 다양한 설정 가능

3.Docker 사용 시 장점?

   - 자원 낭비 최소화, Kubernetes같은 컨테이너 오케스트레이션 도구와의 강한 연동성

   - 개발자의 개발 환경 세팅이나, 배포 과정을 너무 간편하게 도와준다. 안 쓸 이유가 없다?

   - Docker없이 linux ubuntu OS, window OS 가 동시에 요구되는 경우, 불필요한 물리적 자원이 요구됨

   - 자원문제와 더불어, 서로 다른 OS에 있는 프로그램간의 호환 문제 발생


출처 : https://seosh817.tistory.com/345

 

도커의 구조를 설명한 그림중, 내 기준 가장 이해가 잘되는 그림이다.

가상화 환경에서는, App마다 OS가 별개로 필요하지만

Docker 환경에서는 Host OS가 하나있고, 컨테이너에 필요한 커널을 공유한다.

 

'개발 > Docker & k8s' 카테고리의 다른 글

Kubernetes  (0) 2024.08.26