복잡한 시스템 설정과 라이브러리 충돌 문제는 개발자의 가장 큰 고민거리입니다. Docker(도커)는 이러한 환경 구성의 번거로움을 해결해주는 강력한 도구로, 특히 머신러닝(TensorFlow)이나 GPU 드라이버 설정이 필요한 환경에서 그 진가를 발휘합니다. 본 포스팅에서는 윈도우 환경에서 Docker Desktop을 설치하고, 이미지와 컨테이너를 관리하는 핵심 워크플로우를 정리합니다.
왜 도커(Docker)를 사용해야 하는가?
일반적인 개발 환경에서는 운영체제(OS)마다 시스템 설정을 다르게 해줘야 하며, 특히 딥러닝 환경 구축 시 CUDA, cuDNN 드라이버와 그래픽 카드 버전의 호환성을 맞추는 작업은 매우 까다롭습니다. 도커를 활용하면 다음과 같은 이점이 있습니다.
- 환경 독립성: NVIDIA와 같은 공식 제조사가 미리 설정해둔 이미지를 사용하므로 로컬 드라이버 충돌 걱정이 없습니다.
- 간편한 배포: 누군가 미리 구성해둔 이미지를 다운로드(Pull)하여 실행하기만 하면 즉시 개발 환경이 완성됩니다.
- 격리된 환경: 각 컨테이너는 독립된 공간에서 실행되어 시스템 간섭을 최소화합니다.
Docker Desktop 설치 및 실행
윈도우 사용자는 Docker Desktop을 통해 손쉽게 GUI와 CLI 환경을 모두 사용할 수 있습니다.
- Docker 공식 웹사이트에 접속하여 윈도우용 설치 파일을 다운로드합니다.
- 설치 프로그램을 실행한 후 가이드에 따라 인스톨을 완료합니다. (WSL2 기반 설치 권장)
- 설치가 완료되면 ‘Docker Desktop’ 앱을 실행하여 정상적으로 엔진이 구동되는지 확인합니다.
도커 핵심 개념: 이미지와 컨테이너
도커를 이해하기 위해서는 이미지와 컨테이너의 관계를 파악해야 합니다.
| 항목 | 설명 | 비유 |
|---|---|---|
| 이미지 (Image) | 프로그램 실행에 필요한 모든 파일과 설정이 포함된 상태 | 설치 프로그램 (CD/ISO) |
| 컨테이너 (Container) | 이미지를 기반으로 실제 메모리상에서 실행 중인 상태 | 설치된 프로그램 실행창 |
실전 명령어 및 이미지 커밋(Commit)
터미널(PowerShell 또는 CMD)에서 자주 사용하는 핵심 명령어 세트입니다.
1. 이미지 및 컨테이너 확인
# 현재 실행 중인 컨테이너 확인
docker ps
# 정지된 컨테이너를 포함한 모든 내역 확인
docker ps -a
# 다운로드된 이미지 목록 확인
docker images
2. 이미지 다운로드 및 실행 (interactive 모드)
단순 실행 후 바로 종료되는 것을 방지하기 위해 -it 옵션을 사용하여 내부 쉘로 진입할 수 있습니다.
docker run -it python
3. 컨테이너 변경사항 저장 (Commit)
컨테이너 내부에서 라이브러리를 설치하거나 설정 변경 후, 이를 새로운 이미지로 저장할 때 사용합니다.
docker commit [컨테이너_ID] [새로운_이미지_이름]
리소스 최적화 및 삭제
사용하지 않는 이미지나 컨테이너가 쌓이면 디스크 용량을 많이 차지하게 됩니다. 이를 한꺼번에 정리하는 명령어입니다.
# 정지된 컨테이너, 사용하지 않는 네트워크, 캐시 등 일괄 삭제
docker system prune -a
자주 묻는 질문 (FAQ)
Q: 도커 실행 시 컨테이너가 바로 종료되는 이유는 무엇인가요?
A: 도커 컨테이너는 실행할 메인 프로세스가 없으면 즉시 종료됩니다. -it 옵션을 주어 인터랙티브 모드로 실행하거나, 백그라운드에서 실행될 수 있는 명령어를 포함해야 합니다.
Q: 컨테이너를 삭제해도 이미지는 유지되나요?
A: 네, 컨테이너를 삭제(Remove)하더라도 원본이 되는 이미지는 그대로 남아 있어 언제든 다시 실행할 수 있습니다.
Q: 윈도우에서 도커 사용 시 성능 저하가 있나요?
A: 최근에는 WSL2(Windows Subsystem for Linux)를 사용하여 리눅스 네이티브에 가까운 속도로 도커를 운용할 수 있습니다.
🔗 관련 자료 및 더 읽어보기
- 외부 참고 자료: Docker Desktop 공식 설치 가이드 (영문)
- 내부 관련 글: WSL2 설치 및 환경 설정 최적화 방법
- 내부 관련 글: Docker Compose를 활용한 주피터 노트북 환경 구축