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에 있는 프로그램간의 호환 문제 발생
도커의 구조를 설명한 그림중, 내 기준 가장 이해가 잘되는 그림이다.
가상화 환경에서는, App마다 OS가 별개로 필요하지만
Docker 환경에서는 Host OS가 하나있고, 컨테이너에 필요한 커널을 공유한다.
'개발 > Docker & k8s' 카테고리의 다른 글
Kubernetes (0) | 2024.08.26 |
---|