Skip to content

Latest commit

ย 

History

History
141 lines (94 loc) ยท 5.77 KB

File metadata and controls

141 lines (94 loc) ยท 5.77 KB

๐Ÿ“˜ Docker + VSCode DevContainer ๊ธฐ๋ฐ˜ C ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ (MallocLab)

์ด ๋ฌธ์„œ๋Š” Windows์™€ macOS ์‚ฌ์šฉ์ž๊ฐ€ Docker์™€ VSCode DevContainer ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ C ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

[์ฃผ์˜] ๊ธฐ์กด ์ฐจ์ˆ˜์™€ ๋‹ค๋ฅธ ์ ๋งŒ ํ™•์ธํ•˜์‹œ๋ฉด 4์žฅ๋ถ€ํ„ฐ 6์žฅ๋งŒ ํ™•์ธํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


1. Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Docker๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ค ์ปดํ“จํ„ฐ์—์„œ๋“  ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

Docker๋Š” ๋‹ค์Œ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค:

  • Docker Engine: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ์„œ๋น„์Šค
  • Docker Image: ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” ํ…œํ”Œ๋ฆฟ (๋ ˆ์‹œํ”ผ ๐Ÿ“ƒ)
  • Docker Container: ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ์‹ค์ œ ์‹คํ–‰ ํ™˜๊ฒฝ (์š”๋ฆฌ ๐Ÿœ)

โœ… AWS EC2์™€์˜ ์ฐจ์ด์ 

๊ตฌ๋ถ„ EC2 ๊ฐ™์€ VM Docker ์ปจํ…Œ์ด๋„ˆ
์‹คํ–‰ ๋‹จ์œ„ OS ํฌํ•จ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„
์‹คํ–‰ ์†๋„ ๋А๋ฆผ (์ˆ˜์‹ญ ์ดˆ ์ด์ƒ) ๋งค์šฐ ๋น ๋ฆ„ (๊ฑฐ์˜ ์ฆ‰์‹œ)
๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋ฌด๊ฑฐ์›€ ๊ฐ€๋ฒผ์›€

2. VSCode DevContainer๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

DevContainer๋Š” VSCode์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋””๋ฒ„๊น…ํ•  ๋•Œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘
  • ํŒ€์› ๊ฐ„ ํ™˜๊ฒฝ ์ฐจ์ด ์—†์ด ๋™์ผํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
  • .devcontainer ํด๋”์— ์ •์˜๋œ ์„ค์ •์„ VSCode๊ฐ€ ์ฝ์–ด ์ž๋™ ๊ตฌ์„ฑ

3. Docker Desktop ์„ค์น˜ํ•˜๊ธฐ

  1. Docker ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ์„ค์น˜ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ:
    ๐Ÿ‘‰ https://www.docker.com/products/docker-desktop

  2. ์„ค์น˜ ํ›„ Docker Desktop ์‹คํ–‰

    • Windows: Docker ์•„์ด์ฝ˜์ด ํŠธ๋ ˆ์ด์— ๋– ์•ผ ํ•จ
    • macOS: ์ƒ๋‹จ ๋ฉ”๋‰ด๋ฐ”์— Docker ์•„์ด์ฝ˜ ํ™•์ธ

4. ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (ํžˆ์Šคํ† ๋ฆฌ ์—†์ด)

ํ„ฐ๋ฏธ๋„(CMD, PowerShell, zsh ๋“ฑ)์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์ ํŠธ ํด๋”๋งŒ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค:

git clone --depth=1 https://github.com/krafton-jungle/malloc_lab_docker.git
  • --depth=1 ์˜ต์…˜์€ git commit ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ƒ๋žตํ•˜๊ณ  ์ตœ์‹  ํŒŒ์ผ๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๐Ÿ“‚ ๋‹ค์šด๋กœ๋“œ ํ›„ ํด๋” ๊ตฌ์กฐ ์„ค๋ช…

malloc_lab_docker/
โ”œโ”€โ”€ .devcontainer/
โ”‚   โ”œโ”€โ”€ devcontainer.json      # VSCode์—์„œ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ””โ”€โ”€ Dockerfile             # C ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ด๋ฏธ์ง€ ์ •์˜
โ”‚
โ”œโ”€โ”€ .vscode/
โ”‚   โ”œโ”€โ”€ launch.json            # ๋””๋ฒ„๊น… ์„ค์ • (F5 ์‹คํ–‰์šฉ)
โ”‚   โ””โ”€โ”€ tasks.json             # ์ปดํŒŒ์ผ ์ž๋™ํ™” ์„ค์ •
โ”‚
โ”œโ”€โ”€ malloc-lab
โ”‚   โ”œโ”€โ”€ short1-bal.rep          # ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
โ”‚   โ”œโ”€โ”€ Makefile                # ๊ณผ์ œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ
โ”‚   โ””โ”€โ”€ README.md               # malloc-lab ๊ณผ์ œ ์„ค๋ช…
โ”‚
โ””โ”€โ”€ README.md  # ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ• ์„ค๋ช… ๋ฌธ์„œ

5. VSCode์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ํด๋” ์—ด๊ธฐ

  1. VSCode๋ฅผ ์‹คํ–‰
  2. ํŒŒ์ผ โ†’ ํด๋” ์—ด๊ธฐ๋กœ ๋ฐฉ๊ธˆ ํด๋ก ํ•œ malloc_lab_docker ํด๋”๋ฅผ ์„ ํƒ

6. ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ: ์ปจํ…Œ์ด๋„ˆ์—์„œ ์—ด๊ธฐ

  1. VSCode์—์„œ Ctrl+Shift+P (Windows/Linux) ๋˜๋Š” Cmd+Shift+P (macOS)๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  2. ๋ช…๋ น์–ด ํŒ”๋ ˆํŠธ์—์„œ Dev Containers: Reopen in Container๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ดํ›„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ด๋ฉด ๋นŒ๋“œํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ›„, ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์‹คํ–‰๋จ.

7. C ํŒŒ์ผ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ์„ค์ • ํ›„ ๋””๋ฒ„๊น… (F5)

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. malloc-lab/README.md ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์…”์„œ rbtree ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์„ธ์š”.

C ์–ธ์–ด๋กœ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ๋””๋ฒ„๊น…์ด ํ•„์š”ํ•˜์‹œ๋ฉด ์†Œ์Šค์ฝ”๋“œ์— BreakPoint๋ฅผ ์„ค์ •ํ•œ ๋’ค์— ํ‚ค๋ณด๋“œ์—์„œ F5๋ฅผ ๋ˆŒ๋Ÿฌ ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.F5๋ฅผ ๋ˆ„๋ฅด๋ฉด malloc-labํด๋”์—์„œ mdriver -V -f short1-bal.rep ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น… ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐธ๊ณ ๋กœ ๋ณ€์ˆ˜, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํƒ, ์ถœ๋ ฅ ๋“ฑ์„ VSCode์—์„œ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

8. ์ƒˆ๋กœ์šด Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— Commit & Push ํ•˜๊ธฐ

๊ธˆ์ฃผ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ์ธ Git ๋ฆฌํฌ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œํ•˜๋ ค๋ฉด, ๊ธฐ์กด Git ์—ฐ๊ฒฐ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ๋กญ๊ฒŒ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์™„์ „ํžˆ ์ƒˆ๋กœ์šด Git ๋ฆฌํฌ๋กœ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜์„ธ์š”:

rm -rf .git
git init
git remote add origin https://github.com/myusername/my-new-repo.git
git add .
git commit -m "Clean start"
git push -u origin main

๐Ÿ“Œ ์„ค๋ช…

  • rm -rf .git: ๊ธฐ์กด Git ๊ธฐ๋ก๊ณผ ์—ฐ๊ฒฐ์„ ์™„์ „ํžˆ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • git init: ํ˜„์žฌ ํด๋”๋ฅผ ์ƒˆ๋กœ์šด Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • git remote add origin ...: ์ƒˆ๋กœ์šด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฃผ์†Œ๋ฅผ origin์œผ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  • git add . ๋ฐ git commit: ๋ชจ๋“  ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • git push: ์ƒˆ๋กœ์šด ๋ฆฌํฌ์— ์ตœ์ดˆ ์—…๋กœ๋“œ(Push)ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด ๊ธฐ์กด ๋ฆฌํฌ์™€์˜ ์—ฐ๊ฒฐ์€ ์™„์ „ํžˆ ์ œ๊ฑฐ๋˜๊ณ , ์ƒˆ๋กœ์šด ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์ ํŠธ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽ‰ ๋

์ด์ œ Docker์™€ DevContainer๋ฅผ ํ™œ์šฉํ•œ C ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • (์ฃผ์˜) ์œ„ ๋‚ด์šฉ์€ ์ฒ˜์Œ ์„ค์น˜ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. malloc-lab ํด๋”์—์„œ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ๊ฒฝ์šฐ 5์—์„œ 7์žฅ์˜ ๋‚ด์šฉ๋งŒ ๋ฐ˜๋ณตํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ์–ด๋–ค ์šด์˜์ฒด์ œ์—์„œ๋“  ๋™์ผํ•œ ํ™˜๊ฒฝ์œผ๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • VSCode ๋‚ด์—์„œ ์ฝ”๋“œ ์ž‘์„ฑ, ์ปดํŒŒ์ผ, ๋””๋ฒ„๊น…๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๊ฐ€๋Šฅ