이 문서는 Windows와 macOS 사용자가 Docker와 VSCode DevContainer 기능을 활용하여 C 개발 및 디버깅 환경을 빠르게 구축할 수 있도록 도와줍니다.
Docker는 애플리케이션을 어떤 컴퓨터에서든 동일한 환경에서 실행할 수 있게 도와주는 가상화 플랫폼입니다.
Docker는 다음 구성요소로 이루어져 있습니다:
- Docker Engine: 컨테이너를 실행하는 핵심 서비스
- Docker Image: 컨테이너 생성에 사용되는 템플릿 (레시피 📃)
- Docker Container: 이미지를 기반으로 생성된 실제 실행 환경 (요리 🍜)
| 구분 | EC2 같은 VM | Docker 컨테이너 |
|---|---|---|
| 실행 단위 | OS 포함 전체 | 애플리케이션 단위 |
| 실행 속도 | 느림 (수십 초 이상) | 매우 빠름 (거의 즉시) |
| 리소스 사용 | 무거움 | 가벼움 |
DevContainer는 VSCode에서 Docker 컨테이너를 개발 환경처럼 사용할 수 있게 해주는 기능입니다.
- 코드를 실행하거나 디버깅할 때 컨테이너 내부 환경에서 동작
- 팀원 간 환경 차이 없이 동일한 개발 환경 구성 가능
.devcontainer폴더에 정의된 설정을 VSCode가 읽어 자동 구성
-
Docker 공식 사이트에서 설치 파일 다운로드:
👉 https://www.docker.com/products/docker-desktop -
설치 후 Docker Desktop 실행
- Windows: Docker 아이콘이 트레이에 떠야 함
- macOS: 상단 메뉴바에 Docker 아이콘 확인
터미널(CMD, PowerShell, zsh 등)에서 아래 명령어로 프로젝트 폴더만 내려받습니다:
git clone --depth=1 https://github.com/krafton-jungle/data_structures_docker.git--depth=1옵션은 git commit 히스토리를 생략하고 최신 파일만 가져옵니다.
data_structures_docker/
├── .devcontainer/
│ ├── devcontainer.json # VSCode에서 컨테이너 환경 설정
│ └── Dockerfile # C 개발 환경 이미지 정의
│
├── .vscode/
│ ├── launch.json # 디버깅 설정 (F5 실행용)
│ └── tasks.json # 컴파일 자동화 설정
│
├── Data-Structures/
│ ├── Binary_Search_Tree/
│ ├── Binary_Tree/
│ ├── Linked_List/
│ │ ├── Q1_A_LL.c ~ Q7_A_LL.c # 연결 리스트 문제 C 코드
│ │ └── Linked Lists Questions.pdf # 문제 설명 문서
│ └── Stack_and_Queue/
│ ├── Q1_C_SQ.c ~ Q7_C_SQ.c # 스택/큐 문제 C 코드
│ └── Stack and Queues Questions.pdf # 문제 설명 문서
│
└── README.md # 설치 및 사용법 설명 문서
✅ 각 디렉터리는 자료구조 주제별로 문제 파일들이 정리되어 있습니다.
- VSCode를 실행
파일 → 폴더 열기로 방금 클론한data_structures_docker폴더를 선택
- VSCode에서
Ctrl+Shift+P(Windows/Linux) 또는Cmd+Shift+P(macOS)를 누릅니다. - 명령어 팔레트에서
Dev Containers: Reopen in Container를 선택합니다. - 이후 컨테이너가 자동으로 실행되고 빌드됩니다. 처음 컨테이너를 열면 빌드하는 시간이 오래걸릴 수 있습니다. 빌드 후, 프로젝트가 컨테이너 안에서 실행됨.
이제 본격적으로 문제를 풀 시간입니다. README.md 파일을 참조하셔서 Linked List -> Stack and Queue -> Binary Tree -> Binary Search Tree 순으로 문제를 풀어보세요. 각 문제 폴더에는 pdf형태로 문제 설명이 있습니다.
C 언어로 문제를 풀다가 디버깅이 필요하시면 소스코드에 BreakPoint를 설정한 뒤에 키보드에서 F5를 눌러 디버깅을 시작할 수 있습니다.
- 참고로 변수, 메모리, 스택, 출력 등을 VSCode에서 확인할 수도 있습니다.