용어집

Docker

Docker로 AI/ML 워크플로우를 간소화하세요! 모델을 배포하고, 재현성을 보장하며, 여러 환경에서 효율적으로 확장하는 방법을 알아보세요.

Docker는 OS 수준의 가상화를 사용해 컨테이너라는 패키지로 소프트웨어를 제공함으로써 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 플랫폼입니다. 머신 러닝(ML) 엔지니어와 데이터 과학자에게 Docker는 환경 불일치라는 일반적인 문제, 즉 악명 높은 "내 컴퓨터에서 작동한다"는 문제를 해결하는 중요한 도구입니다. 애플리케이션의 코드를 모든 라이브러리, PyTorch와 같은 프레임워크, 실행에 필요한 기타 종속 요소와 함께 번들링함으로써 Docker는 모델이 배포된 위치에 관계없이 동일하게 작동하도록 보장합니다. 이러한 일관성은 안정적인 모델 배포를 위한 기본이며 최신 MLOps 관행의 초석입니다. Ultralytics는 사용자가 애플리케이션 컨테이너화를 시작하는 데 도움이 되는 Docker 빠른 시작 가이드를 제공합니다.

Docker 작동 방식

Docker의 워크플로는 애플리케이션을 패키징하고 실행하기 위해 함께 작동하는 몇 가지 핵심 구성 요소를 중심으로 이루어집니다:

  • 도커파일: 순차적인 명령 또는 지침의 목록이 포함된 간단한 텍스트 파일입니다. 이러한 지침은 특정 Docker 이미지를 빌드하는 방법을 Docker에 알려줍니다. ML 프로젝트의 경우, Dockerfile은 기본 운영 체제, Python 및 OpenCV와 같은 종속성을 설치하는 명령, 모델 파일 및 추론 코드를 복사하고 컨테이너가 시작될 때 실행할 명령을 정의할 수 있도록 지정합니다. 도커파일에 대한 자세한 내용은 공식 도커 문서에서 확인할 수 있습니다.
  • Docker 이미지: 이미지는 코드, 런타임, 라이브러리, 환경 변수 및 구성 파일을 포함하여 소프트웨어를 실행하는 데 필요한 모든 것을 포함하는 경량 독립 실행형 실행 패키지입니다. Docker파일에서 생성된 읽기 전용 템플릿입니다. ML 전용 이미지는 GPU 드라이버 및 ML 프레임워크가 사전 구성된 NVIDIA NGC와 같은 레지스트리에서 제공되는 경우가 많습니다.
  • 도커 컨테이너: 컨테이너는 실행 가능한 Docker 이미지의 인스턴스입니다. 이미지를 실행하면 호스트 머신의 커널에서 실행되는 격리된 프로세스인 컨테이너가 됩니다. 여러 개의 컨테이너가 동일한 머신에서 실행될 수 있으며, 각각 사용자 공간에서 격리된 프로세스로 실행되는 다른 컨테이너와 OS 커널을 공유할 수 있습니다. 따라서 기존 가상화에 비해 매우 효율적입니다. 이 기술은 오픈 컨테이너 이니셔티브(OCI)와 같은 단체에서 표준화했습니다.

실제 AI/ML 애플리케이션

Docker는 실험에서 프로덕션에 이르기까지 AI 모델의 전체 수명 주기를 간소화합니다.

  1. 컴퓨터 비전 모델을 엣지에 배포: 객체 감지를 위해 훈련된 Ultralytics YOLO11 모델을 Docker 컨테이너에 패키징할 수 있습니다. 이 컨테이너에는 모델 가중치, 추론 스크립트, 특정 CUDA 라이브러리 버전과 같은 모든 필수 종속성이 포함됩니다. 그런 다음 이 단일 컨테이너를 강력한 클라우드 GPU부터 리소스 제약이 있는 NVIDIA Jetson과 같은 에지 AI 디바이스에 이르기까지 다양한 플랫폼에 일관되게 배포할 수 있습니다. 이를 통해 스마트 감시와 같은 애플리케이션에서 실시간 추론의 핵심 요건인 모델이 예상대로 작동하도록 보장합니다.
  2. 재현 가능한 연구 환경 만들기: 이미지 분할을 위한 새로운 알고리즘을 개발하는 데이터 과학자는 특정 버전의 Python, TensorFlow 및 기타 라이브러리를 잠그는 Docker 컨테이너를 만들 수 있습니다. 이 컨테이너화된 환경을 공동 작업자들과 공유하거나 연구 논문과 함께 게시하여 다른 사람들이 훈련 환경을 완벽하게 복제하고 결과를 검증할 수 있도록 할 수 있습니다. Ultralytics HUB와 같은 플랫폼은 컨테이너 기술과 통합되어 이 프로세스를 더욱 간소화합니다.

유사 용어와의 비교

Docker는 컨테이너화의 핵심이지만, 다른 기술과 함께 사용되는 경우가 많습니다:

  • 컨테이너화: 소프트웨어를 컨테이너로 패키징하는 일반적인 개념입니다. 컨테이너화를 위한 가장 인기 있는 플랫폼인 Docker는 컨테이너를 빌드, 배포 및 실행할 수 있는 도구를 제공합니다.
  • 쿠버네티스: Docker는 단일 호스트에서 개별 컨테이너를 관리하는 반면, Kubernetes는 컨테이너 오케스트레이션 플랫폼입니다. 머신 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화합니다. Docker는 배송 컨테이너를 만들고, Kubernetes는 선박과 항구를 관리하는 시스템이라고 생각하면 됩니다. 자세한 내용은 공식 Kubernetes 웹사이트에서 확인할 수 있습니다.
  • 가상 머신(VM): VM은 게스트 OS를 포함한 전체 하드웨어 시스템을 에뮬레이션하여 격리 기능을 제공합니다. Docker가 관리하는 컨테이너는 OS를 가상화하여 호스트 커널을 공유합니다. 따라서 컨테이너는 VM보다 훨씬 더 가볍고 빠르며 리소스 효율이 높지만, VM은 더 강력한 격리 기능을 제공합니다. 공식 Docker 웹 사이트에서 훌륭한 비교 자료를 제공합니다.

AI 및 컴퓨터 비전(CV) 실무자는 Docker를 활용하여 워크플로 효율성, 협업 및 배포된 모델의 안정성을 크게 향상시킬 수 있습니다. Docker의 용도에 대한 일반적인 개요는 OpenSource.com의 Docker 설명과 같은 리소스에서 쉽게 소개할 수 있습니다. 이 기술은 다양한 모델 배포 옵션을 가능하게 하는 핵심 기술입니다.

울트라 애널리틱스 커뮤니티 가입

AI의 미래와 함께하세요. 글로벌 혁신가들과 연결, 협업, 성장하기

지금 가입하기
링크가 클립보드에 복사됨