먼저 시작전 밑의 모든자료는 따라하며 배우는 도커와 CI환경에 자료를 가져와서 쓰는거 이니 참조하십시오.
오늘 내가 정리한 docker에 대해 머리에 있는 내용을 정리할겸 블로깅을 해본다.
컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행 할 수 있도록 설계된 도구이며
컨테이너 기반의 오픈소스 가상화 플랫폼
리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키지하고 배포하는데 유용한 오픈소스 프로그램.
무슨말인지 아직 잘 모르겠지만 차차 정리하면서 익숙해지면 괜찮아 지겠지?
우선 docker 없이 프로그램을 설치를 해야된다면 installer 설치 => installer 실행 과정 중 에러가 뜰 수 있음 설치과정도 복잡하다.(아마 한번쯤은 다 겪어 봤을것이라고 추정됨)
특정한 소프트웨어를 개발한 이후에 배포하고자 할 때 해당 프로그램이 어디에선가 손쉽게 구동 하기위해 (배포 및 운용을 쉽게 할 수 있다!!!)
curl -s https://get.docker.com/ | sudo sh
sudo usermod -aG docker ubuntu // 우분투 유저 권한추가
docker 홈페이지에서 다운 여기
도커아이콘을 보듯이 고래(?)가 컨테이너들을 가지고 있다.
여기서 컨테이너는 우선 간단하고 편리하게 프로그램을 실행 시켜주는 것이라고 생각하면 된다.
도커 이미지는 응용프로그램을 실행하는데 필요한 설정이나 종속성을 가지고 있다. 컨테이너는 그림에서 보듯이 도커이미지의 인스턴스이며 프로그램을 실행하는 애다. 도커 이미지를 통해 컨테이너를 생성하고 컨테이너를 통해 프로그램을 실행한다.
출처 https://m.post.naver.com/viewer/postView.nhn?volumeNo=21385900&memberNo=2521903
여기서 하이퍼바이저라는 생전 처음 들어보는 단어가 나온다.
여기서 하이퍼바이저란
호스트 시스템(OS: Mac, window, Linux,...)에서 다수의 게스트OS(mac, window,..)를 구동할 수 있게 하는 소프트웨어. 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링 하는 중간관리자라고 보면된다
하이퍼바이저는 가상 머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어입니다. 가상 머신 모니터(Virtual Machine Monitor, VMM)라고도 불리는 하이퍼바이저는 하이퍼바이저 운영 체제와 가상 머신의 리소스를 분리해 VM의 생성과 관리를 지원합니다
위의 그림에서는 host os가 생략되었다고 보면 될 거 같고, 위의 그림을 보면 쉽게 이해가 될것이다. 하드웨어core1 => VM core1 , 하드웨어core2 => VM core2
하이퍼바이저에 의해 구동되는 VM은 각 VM마다 독립된 가상하드웨어를 할당하는데 논리적으로 분리되어 있어서 한 VM에 오류가 발생해도 다른 VM에 영향을 주지 않는다.
도커 컨테이너와 가상머신의 공통점
- 기본 하드웨어에서 격리된 가상환경 내에 어플리케이션을 배치하는방법
도커 컨테이너의 이점
- 도커 컨테이너는 게스트OS 하이퍼바이저가 없기 때문에 가볍다.
커널은 다음과 같은 4가지 기능을 수행합니다.
메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적합니다.
프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 정합니다.
장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행합니다.
시스템 호출 및 보안: 프로세스의 서비스 요청을 수신합니다.
출처
https://www.redhat.com/ko/topics/linux/what-is-the-linux-kernel
오버헤드(Overhead)란 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다.