Docker
중급Docker는 AI 문맥에서 자주 등장하는 개념입니다. 이 페이지는 중급 난이도로 Docker의 뜻과 쓰임을 빠르게 이해할 수 있도록 정리한 AI 용어사전 항목입니다.
Docker를 처음 보는 독자도 헷갈리지 않도록 정의와 맥락를 한 페이지에 묶었습니다. 아래 설명을 먼저 읽고, 이어서 연결된 개념과 글까지 보면 이해가 훨씬 빨라집니다.
Docker는 애플리케이션과 그 실행 환경을 컨테이너(Container)라는 단위로 패키징하고 실행하는 플랫폼입니다. 컨테이너는 OS를 공유하면서도 서로 격리된 환경에서 실행되어, "내 컴퓨터에서는 되는데 서버에서는 안 돼"라는 환경 불일치 문제를 해결합니다.
AI 모델 배포 환경에서 Docker가 필수적인 이유는 CUDA 버전, Python 의존성, 라이브러리 충돌 같은 복잡한 환경 문제를 컨테이너로 격리해 해결하기 때문입니다. Ollama, Hugging Face 모델 서버, LangChain 앱 등 대부분의 AI 도구가 Docker 이미지를 공식 배포 방법으로 제공합니다.
예를 들어 n8n을 서버에 설치할 때 docker run -d n8nio/n8n 한 줄로 완전한 환경을 구성할 수 있습니다. Docker Compose를 사용하면 여러 서비스(AI 모델 서버 + DB + API 서버)를 하나의 설정 파일로 한꺼번에 관리합니다.
앱을 박스째로 포장해서 어디서든 똑같이 실행되게 만드는 기술입니다. 내 PC에서 작동하던 AI 앱을 박스 그대로 클라우드 서버에 올리면 환경 설정 없이 바로 돌아갑니다.
Docker의 핵심 개념을 이해하려면 이미지(Image)와 컨테이너(Container)의 차이를 먼저 알아야 합니다. 이미지는 앱 실행에 필요한 모든 것(코드, 라이브러리, 설정)을 담은 읽기 전용 템플릿입니다. 컨테이너는 이 이미지를 기반으로 실제로 실행 중인 인스턴스입니다. 하나의 이미지에서 여러 컨테이너를 동시에 실행할 수 있습니다. Dockerfile은 이미지를 어떻게 만들지 정의하는 설계도입니다.
Docker와 가상 머신(VM)은 자주 비교되는데, 작동 방식이 다릅니다. VM은 하드웨어 수준에서 격리된 완전히 별도의 운영체제를 실행합니다. 반면 Docker 컨테이너는 호스트 OS의 커널을 공유하면서 프로세스 수준에서 격리됩니다. 그 결과 컨테이너는 VM보다 훨씬 가볍고 시작 속도가 빠릅니다. VM은 수 분이 걸리는 부팅 시간이 컨테이너에서는 수 초 안에 끝납니다. 하지만 보안 격리 수준은 VM이 더 강합니다.
Docker Hub는 Docker 이미지를 공유하는 공식 레지스트리입니다. PyTorch, TensorFlow, Jupyter Notebook 등 수많은 AI·ML 도구의 공식 이미지가 여기 올라와 있어, 별도 설치 없이 바로 사용할 수 있습니다. 기업 내부에서는 사설 레지스트리(Private Registry)를 운영해 내부 모델이나 도구 이미지를 관리합니다. AWS ECR, Google Container Registry, GitHub Container Registry 같은 클라우드 서비스를 많이 활용합니다.
Docker Compose는 여러 컨테이너로 구성된 앱을 한 번에 관리하는 도구입니다. AI 프로젝트 예시로, 'docker-compose.yml' 파일 하나에 FastAPI 모델 서버, PostgreSQL 데이터베이스, Redis 캐시, Nginx 웹 서버를 모두 정의해두면 'docker-compose up' 명령 하나로 전체 스택이 실행됩니다. 개발자 간 환경 공유, CI/CD 파이프라인 구성, 스테이징 환경 관리에 매우 유용합니다.
Kubernetes(K8s)는 Docker 컨테이너를 대규모로 오케스트레이션하는 플랫폼입니다. 트래픽이 늘어나면 컨테이너를 자동으로 늘리고(수평 확장), 컨테이너가 다운되면 자동으로 재시작하며, 여러 서버에 부하를 분산합니다. AI 서비스를 프로덕션에 배포할 때 Docker로 컨테이너를 만들고 Kubernetes로 운영하는 조합이 업계 표준으로 자리 잡혀 있습니다. AWS EKS, Google GKE, Azure AKS 같은 관리형 Kubernetes 서비스를 사용하면 직접 클러스터를 관리하는 부담을 줄일 수 있습니다.
AI 개발에서 Docker를 사용할 때 자주 맞닥뜨리는 문제가 GPU 지원입니다. GPU는 호스트 드라이버와 CUDA 런타임 버전이 컨테이너 안의 설정과 맞아야 합니다. NVIDIA Container Toolkit을 설치하면 컨테이너에서 호스트 GPU를 사용할 수 있습니다. 'docker run --gpus all' 옵션으로 GPU 접근 권한을 부여하며, NVIDIA의 공식 CUDA 이미지를 베이스로 사용하면 복잡한 드라이버 설정 없이 GPU 환경을 빠르게 구성할 수 있습니다.
Docker를 처음 배울 때 몇 가지 핵심 명령어를 익혀두면 빠르게 시작할 수 있습니다. 'docker pull'로 이미지를 다운로드하고, 'docker run'으로 컨테이너를 실행합니다. 'docker ps'는 현재 실행 중인 컨테이너 목록을 보여주고, 'docker stop'과 'docker rm'으로 컨테이너를 중지·삭제합니다. 'docker build'는 Dockerfile을 읽어 이미지를 빌드합니다. 'docker logs'로 컨테이너 출력을 확인하고, 'docker exec -it'로 실행 중인 컨테이너 안으로 들어가 직접 명령을 실행할 수도 있습니다.
Docker는 CI/CD(지속적 통합·배포) 파이프라인에서도 핵심 역할을 합니다. GitHub Actions, GitLab CI, Jenkins 같은 도구에서 Docker를 사용하면 코드가 푸시될 때마다 자동으로 이미지를 빌드하고, 테스트를 실행하고, 스테이징 또는 프로덕션 서버에 배포하는 과정을 자동화할 수 있습니다. AI 모델 서빙 파이프라인에서는 모델 학습 → 평가 → 이미지 빌드 → 배포 전 과정을 Docker 기반으로 자동화하는 것이 업계 표준입니다. 재현 가능한 환경 덕분에 '어제는 되던 배포가 오늘은 실패'하는 상황을 크게 줄일 수 있습니다.
