일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- RTK Query
- Cypress
- 리터럴 타입
- TS
- 공변성
- Jest
- tailwind
- 인터섹션
- 태그된 유니온
- 타입 좁히기
- recoil
- autosize
- Promise
- React
- webpack
- useAppDispatch
- async/await
- dfs
- map
- 결정 알고리즘
- CORS
- CI/CD
- 투포인터
- SSR
- ESlint
- app router
- 무한 스크롤
- 호이스팅
- 반공변성
- 이분 검색
Archives
- Today
- Total
짧은코딩
하이퍼바이저와 컨테이너 본문
반응형
가상화 기술이란?
IT에서는 실제로 존재하는 것을 물리적, 가상으로 존재하는 것을 논리적이라 함
-도커는 가상화 기술
- 도커를 사용하는 이유는 하나의 컴퓨터에서 그냥 프로그램 4개를 돌리다가 1개가 자원을 많이 쓰거나, 에러 발생 시 다른 프로그램에도 영향을 줌
- 결국 하나의 OS에서 여러 프로그램을 돌리는 건 매우 안 좋음
- 도커를 사용하면 프로그램들이 논리적으로 분리되어 있어서 안전함
하드웨어 여러 개를 사용하는 것보다. 좋은 컴퓨터 1대를 사용하는 것이 비용적으로 더 저렴함
가상화 기술의 종류
가상화 기술은 하이퍼바이저와 컨테이너 2가지가 있음
하이퍼바이저
- 하이퍼바이저는 컴퓨터에 설치되는 프로그램(Host OS에서 설치 가능)
- 하이퍼바이저는 가상 OS(게스트 OS)를 실행/종료 가능
- 각 OS 마다 시스템 콜 표준이 다르다. 그렇기 때문에 게스트 OS를 호스트 OS와 다르게 적용 시키는 것은 어렵다.
- 따라서 하이퍼바이저가 커널로 가는 명령어를 통역해주는 역할을 한다.
- 하이버바이저는 소프트웨어임(VM 머신, 버추얼 박스)
- 커널이 독립적으로 존재
컨테이너
- 하이퍼바이저 기술보다 더 선호되는 방식
- 하이퍼바이저보다 가볍고 빠르다.
- 모던 애플리케이션에서는 가볍고 빠르다는 것이 굉장히 중요하다.
- 컨테이너는 리눅스 커널이 제공하는 LXC(LinuX Containers) 자체 격리 기술에서 출발, LXC는 커널의 자체 기능으로도 게스트 OS 격리가 가능
- LXC 기술은 namespace와 CGroups(control Groups)라는 기능 활용
- namespace는 프로세스, 하드드라이브, 네트워크, 사용자, 호스트 네임처럼 리소스를 나누는 기준의 역할
- CGroups는 프로세스가 사용하는 메모리와 CPU, 하드디스크, 네트워크 밴드위스처럼 리소스의 사용량을 배분하는 기술
- 이렇게 LXC를 사용해서 만든 것을 컨테이너라고 부름
- 모든 컨테이너는 호스트 OS의 커널을 공유해서 사용
정리
- 하이퍼바이저는 거쳐가는 것이 많아서 오버헤드가 높음, 따라서 컨테이너가 리소스를 더 효율적으로 사용할 수 있음
- 하지만 하이퍼바이저는 커널을 독립적으로 갖고 있기 때문에 보안적으로 더 뛰어나다고 할 수 있다.
- 그리고 컨테이너는 호스트 OS와 커널을 공유하기 때문에 호스트 OS와 다른 OS를 실행할 수 없다.
- Docker Desktop의 경우
- Windows나 macOS에서 Linux 컨테이너를 실행할 때는 내부적으로 경량 가상머신(Hyper-V, WSL2 등)을 사용해서 Linux 커널을 제공
- Docker Desktop 자체가 하이퍼바이저 + 컨테이너의 하이브리드 구조
- 호스트 OS와 다른 게스트 OS(Linux VM)를 하이퍼바이저가 생성하고, 그 VM 안의 Docker Engine이 컨테이너들을 관리하는 방식
Docker 아키텍처
docker 엔진: 사용자의 요청을 받아서 컨테이너를 관리해주는 역할
docekr 런타임: 직접 커널과 통신을 하면서 실제로 격리된 공간을 만드는 역할, runc라는 런타임 사용
- 도커는 사용자의 명령을 전달해주는 클라이언트(CLI)와, 이를 실행하여 컨테이너를 관리하는 도커 데몬 서버(도커 D라고도 부름)가 있음
- 보통 데몬이라는 이름이 붙은 소프트웨어는 서버에서 지속적으로 실행이 되는 소프트웨어를 의미
- 따라서 도커 데몬은 호스트 OS에서 지속적으로 실행되면서 클라이언트 요청에 따라 컨테이너를 관리
API도 제공
https://docs.docker.com/reference/api/engine/
Docker Engine API
Learn how you can use Docker Engine API and SDKs in the language of your choice.
docs.docker.com
-명령어
- Management Command는 대분류이고, Command는 소분류이다.
- Management Command는 일반적으로 생략이 가능하다.
- 따라서 docker container run => docker run으로 가능
-출처
개발자를 위한 쉬운 도커 강의 | 데브위키 - 인프런
데브위키 | , 개발자로 취업은 했는데 도커, 실무에서 어떻게 사용해야 하나요?😭 [사진]쿠버네티스를 학습하기 전 개발자가 필수로 알아야 하는 도커 쿠버네티스와 같은 컨테이너 오케스트레
www.inflearn.com
반응형
'인프런, 유데미 > 개발자를 위한 쉬운 도커' 카테고리의 다른 글
이미지 레지스트리 (1) | 2025.05.31 |
---|---|
이미지와 컨테이너의 라이프사이클 (2) | 2025.05.31 |
Comments