도커(docker)란?

도커는 애플리케이션을 컨테이너(container)라는 격리된 환경에서 실행할 수 있도록 해주는 오픈 소스 가상화 기술

가상화 기술은 이전부터 사용했지만(Virtual Machine 등), docker의 장점이 있다.

 

격리 시켜야 하는 이유?

하나의 물리적 시스템 안에서 여러 애플리케이션을 구동하면, 충돌이 일어나거나 관리 어려움(하나의 애플리케이션의 에러로 다른 시스템까지 영향)

 

배포 환경을 옮길 때에도 서버에 이전 서버와 같이 모든 환경 세팅을 새로 해야하는 번거러움 존재(도커로 이식성 증가)

 

도커 vs Virtual Machine(VM, 가상머신)

 

오른쪽 VM의 경우, 격리시키고자 하는 App을 위해 게스트 OS를 각각 올려 리소스를 할당한다.

그러나, 얼마만큼의 리소스를 할당할 것인지 미리 정의해야하고, 그로 인해 낭비되는 리소스 존재 가능성이 있다.

 

왼쪽 docker container를 적용하면, 하나의 OS를 docker를 통해 App 들이 공유하게 되어 리소스를 효율적으로 활용 가능

게스트 OS를 사용하지 않아 가볍고 쉬움.

 

도커 주요 개념 및 특징

  • 컨테이너: 애플리케이션과 그 종속성을 포함하는 실행 가능한 소프트웨어 패키지. 애플리케이션이 동작하는 환경을 코드로 정의
  • 이미지: 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하는 불변의 템플릿. 코드, 런타임, 라이브러리, 환경변수 등
  • 도커 허브: 도커 이미지를 공유할 수 있는 중앙 저장소
  • 도커 파일: 컨테이너 이미지를 빌드하기 위한 명세서

 

도커가 쓰이는 분야

  • 지속적인 통합 및 배포(CI/CD), 데브옵스(DevOps)
  • 애플리케이션 실행 환경 통일
  • 딥러닝 환경 설정과 고정, 통일
  • 마이크로서비스 아키텍처의 독립 개발, 배포

'AI 인공지능 > MLOps' 카테고리의 다른 글

[CI/CD] CI/CD 기초 개념  (0) 2024.04.09
[Wandb] YOLOv8 & Wandb sweep 함께 사용하기  (0) 2024.03.26

+ Recent posts