[따배도] 1. 컨테이너와 도커의 이해

조앵·2024년 5월 1일

Docker

목록 보기
1/11

1. 컨테이너가 뭐에요?

컨테이너를 배워야 하나요?

[그림 출처 https://zdnet.co.kr/view/?no=20231005094858]

가상머신을 만들어 그 위에 필요한 애플리케이션을 올려서 사용해왔다. 현재에는 애플리케이션 서비스를 요구하는 클라이언트의 요구에 따라 자유롭게 확장 축소할 수 있는 이러한 애플리케이션 요구들이 필요해졌다. 기존에 있던 가상 환경에서는 약간의 어려움이 있어 컨테이너화시켜 사용하고있다. 도커(Docker)는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 컨테이너 플랫폼을 운영해서 컨테이너 애플리케이션을 동작시키는 것이다.

Docker

  • 컨테이너 기반의 오픈소스 가상화 플랫폼
  • 다양한 프로그램 및 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순화

컨테이너:image를 실행한 상태

  • 격리된 공간에서 프로세스가 동작하는 기술
  • 기존 방식이 os 가상화(overhead가 크다)였다면, 단순히 프로세스를 격리시키기 때문에 가볍고 빠르다
  • cpu나 memory역시 딱 필요한 만큼만 추가로 사용, 성능적으로 손실이 거의 없다.

컨테이너 기술의 장점

  • 경량
  • 고속: 새로운 컨테이너를 1초 이내로 생성
  • 실행 중 변경: 실행 중인 컨테이너에 접속, 명령어 입력, 패키지 설치, 사용자 추가, 프로세스 백그라운드 실행, 내 외부 디렉토리 연결 가능

왜 굳이 리눅스에서 돌려요?

리눅스 커널 기능을 써야 하니까
1.chroot -> 독립된 공간 형성
2.namespace -> 지원 6가지 독립된 하나의 컨테이어와 컨테이너가 불리될 수 있는 isolate 기능
3.cgroup -> 필요한만큼 HW 지원
그럼 윈도우즈랑 mac os에서는 못 돌리나요?
윈도우즈나 mac os에서는 커널이 없으니 하이퍼바이저를 활성화시켜서 그 위에다가 컨테이너를 돌려줘야 합니다.

그래서 왜 쓰냐고요?

개발자가 만든 그대로 어디서든 돌아가!
확장/축소가 쉽고 MSA, Devops에 적합해!

따배도 유튜브 강의!!

profile
Viva La Vida

0개의 댓글