。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

강의/DevOps-Docker

[DevOps-Docker] 1. 도커란 무엇인가?

quarrrter 2023. 9. 8. 00:14

컨테이너를 다룬다

 

도커: 리눅스 응용 프로그램을 프로세스 격리 기술을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트 

출시일: 2013.03

개발자: 도커(Docker.Inc)

프로그래밍 언어: Go(구글에서 만듬) 

 

도커 엔진 위에서 다양한 리눅스응용 프로그램을 관리할 수 있다. 

도커 인프라에 대한 내용들을 담은 Dockerfile이라는 텍스트 파일 (야믈을 이용해 설정) ----------------->
Docker build 
Docker Image
실행이 가능한 이미지 파일로 생성 
---------->
run
Docker Container 
이미지 파일들을 다양한 형태로 운영 가능하다

*yaml : xml, json 포맷과 같이 타 시스템 간에 데이터를 주고 받을 때 약속된 포맷(규칙)이 정의 되어있는 또 하나의 파일 형식. 

 

 

♣ 가상화: cpu, 메모리 등 자원들을 효과적으로 사용하기 위해 개발됨 . 여러가지 가상화 기술이 있음 

1. Virtual Machines : VirtualBox , VMware,  Hyper-V- 다양한 운영체계를 실행시킬수 있음 

기본적으로 하드웨어 인프라 위에 하이퍼 바이저 설치, 그 위에 OS 설치. 그 위에 실행환경, 실행하는 파일을 올림. 

기본적으로 OS가 들어가서 리소스가 효과적으로 쓰이지 않음 

os,를 줄이고, 리소스를 효과적으로 쓰기 위해 컨테이너가 개발됨. 

 

2. Containers

애플리케이션과 애플리케이션을 구동하는 환경을 Host OS로 부터 격리한 공간 

하드웨어 인프라 위에 오퍼레이팅 시스템을 올리고 그 위에 컨테이너 엔진, 그 위에 리눅스 응용프로그램을 좀 더 경량화해서 구동시키자 ! 

 

VM -> Container로 가면서 좀더 효과적으로 다룰 수 있게 되었고 대표주자가 도커임

 

 

♣ 도커의 아키텍처 

클라이언트가 명령어를 이용해 도커 호스트를 실행시키고 

호스트가 이미지를 끌어다가 실제 실행되는 컨테이너가 실행됨. 

image : 앱스토어의 앱,

Registry: 앱스토어 개념

 

앱스토어와 다른 점: 도커의 이미지는 리눅스 응용이며,

레지스트리는 도커허브를 사용할수도, 내가 직접 레지스트리를 구성할수도 잇음

 

 

♣ 컨테이너의 특징: 

가상서버에 비해  이미지 크기, 메모리 사용량, 벤치마크성능비교 에 유리하고, OS 기동 시간이 특히 유리함 (가상서버는 분 단위고, 컨테이너는 초 단위임)

 

도커에 관련된 내용들은 실제 클라우드 네이티브에서 가장 활발하게 활용되고 있는 쿠버네티스에서 베이스로 활용하게 된다. 쿠버네티스는 기본적으로 대용량의 컨테이너 관리하는 오케스트레이션 기능을 제공한다. 기본적으로 도커엔진을 사용해서 컨테이너를 관리하게 설계 되어 있다 .  

 

쿠버네티스: 컨테이너 오케스트레이션 툴. 도커를 관리하는 툴. 다수의 컨테이너 실행을 관리 및 조율하는 시스템 

도커: 한 개의 컨테이너를 관리하는 데 최적화되어있음 

 

 

♣ Docker 가 필요한 이유 

일반적인 시스템 개발 흐름에서 

개발환경에서 테스트 환경, 실행까지 하드웨어, os, 미들웨어, 앱 등이 버전 등이 바뀔 수 있음 

인프라 구성정보를 텍스트파일을 만들고 build해서 Docker이미지를 만듬. (cd를 굽는다고 생각하면 편함)

구운걸,, 끼워넣기