Docker 등장배경
- 서비스를 제공하는 서버
서버란? 우리가 작성한 코드를 실제로 서비스하는 컴퓨터
서버를 운영한다는 것?
1)보안 결함이 없어야한다
2)필요할 때 새로운 코드나,라이브러리 추가가 가능해야한다
많은 수의 요청을 처리하기 위해서는 많은 수의 서버에 대해 운영해야한다
서비스를 운영하다보면 여러 요청이 들어올 수 있다
서비스가 커지고 서버가 늘어나면 어플리케이션들을 원하는대로 실행하는 것의 난이도가 기하급수로 증가함
하이퍼바이저?
: 가상 머신(Virtual Machine,VM)을 생성하고 구동하는 소프트웨어
-호스트 하드웨어에 설치되어 호스트와 게스트를 나누는 역할을 한다
-각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받게 된다
-하이퍼 바이저를 활용시 마치 하드웨어가 여러 개인 것처럼 하나의 서버를 여럿이 나눠 쓸 수도 있고 컴퓨터 한 대에서 서로 다른 OS를 동시에 사용할 수도 있다
기존 가상화 기술(VMware, VirtualBox)
: 하이퍼바이저를 사용해서 여러개의 운영체재를 하나의 호스트에서 생성해 사용하는 방식
- 시스템 자원을 가상화하고, 공간을 생성하는 작업은 하이퍼바이저를 거치기 때문에 성능의 손실이 발생
- OS까지 포함해야하므로 이미지의 크기 또한 커진다
- 완벽한 OS를 생성할 수 있다는 장점은 있지만 성능 손실이 있다
위에 보이는 하이퍼바이저와 달리 컨테이너는 가상의 OS를 만드는 것이 아니다.
컨테이너
컨테이너는 베이스 환경 OS를 공유하며 필요한 프로세스만 격리하고,커널을 공유해서 호스트 OS의 기능을 모두 사용할 수 있다.그렇기에 컨테이너 위에서는 호스트 OS가 아닌 다른 OS는 구동이 불가하다. 하지만 격리시킬 애플리케이션과 거기에 필요한 파일이나 특정 라이브러리 등 종속 항목만 포함되기 때문에 배포를 위해 생성되는 이미지의 용량이 작아진다는 장점이 있기도 하다. 운영체제가 아닌 프로세스며,하이퍼바이저를 거치지않아 실행속도가 빠르다.
이미지
가상머신이나 컨테이너 또는 프로그램을 실행에 있어 필요한 파일과 라이브러리,설정 등을 가진 파일이다
이미지는 레이어라는 계층 구조로 이뤄져있는데, 변경사항이 생기면 새로운 레이어를 추가해 기록한다.
이미지 전체를 새로 받지 않고 해당 레이어만 받는 것으로 이미지를 업데이트할 수 있다는 장점이 있다
이미지를 실행하면 프로세스,컨테이너가 된다
Docker
Docker 컨테이너 기반의 가상화 플랫폼
부두에서 컨테이너를 옮기고 관리하는 직업인 docker에서 따 온 이름에 걸맞게 컨테이너를 잘 다룰 수 있게 도와 주는 도구
개발 과정에서 다른 라이브러리와 충돌하는 것을 방지하기 위해 격리된 환경이 필요할 때,완성된 서비스를 배포할 때,또는 배포 중인 서비스를 받아 실행해 볼때도 유용하다.특히 배포과정 시에는 도커를 사용해 필요한 파일들만 포장해 이미지로 만들면 종속성 이슈를 벗어날 수 있다. 서버가 한대라면 문제없지만,서버가 수백,수천대 단위가 된다면 여러 이슈가 생기게된다.하지만 도커를 사용하게 되면 같은 이미지를 실행해서 컨테이너로 만들면 되기 때문에 도커를 다방면에서 애용하게 되는 것이다.
한줄요약
: 그래서 Docker가 뭐냐면 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술
참고자료:
https://www.docker.com/get-started/
+스파르타도커(https://www.notion.so/1-9e0b2ee5be79400085fea0514d752012)
'책벌레와 벌레 그 사이 어딘가 > 개념쌓기' 카테고리의 다른 글
[개념쌓기]왜 S3를 쓰는걸까? (0) | 2022.09.02 |
---|---|
[개념쌓기]타임리프/API/SDK/JDK (0) | 2022.08.30 |
[개념쌓기] 로드밸런싱? (0) | 2022.08.25 |
[개념쌓기]SSL? HTTPS? (0) | 2022.08.25 |
[개념쌓기]NginX? + 설치까지 (0) | 2022.08.23 |
댓글