๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Programming/Docker & Kubernetes

[Docker] (7) ๋„์ปค volume(๋ณผ๋ฅจ) ์˜ต์…˜ - ์ปจํ…Œ์ด๋„ˆ ํด๋”์™€ ํ˜ธ์ŠคํŠธ ํด๋” ์—ฐ๊ฒฐํ•˜๊ธฐ

by ๋ญ…์ฆค 2023. 8. 21.
๋ฐ˜์‘ํ˜•
Docker ์ „์ฒด ํฌ์ŠคํŒ…
๋”๋ณด๊ธฐ

[Docker] (1) ๋„์ปค ๊ฐœ๋… ์„ค๋ช… | ๋„์ปค๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?

[Docker] (2) ๋„์ปค & ๋„์ปค์ปดํฌ์ฆˆ ๋‹ค์šด๋กœ๋“œ

[Docker] (3) ๋„์ปค ํ•ต์‹ฌ ๊ฐœ๋… - ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋„์ปค ํ—ˆ๋ธŒ

[Docker] (4) docker pull(์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ) & docker run(์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ/์‹คํ–‰) & ํฌํŠธํฌ์›Œ๋”ฉ(ํฌํŠธ๋งคํ•‘)

[Docker] (5) ๋„์ปค run ๋ช…๋ น์–ด ์˜ต์…˜, ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

[Docker] (6) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ ‘์†ํ•˜๊ธฐ - docker exec & docker attach

[Docker] (7) ๋„์ปค volume(๋ณผ๋ฅจ) ์˜ต์…˜ - ์ปจํ…Œ์ด๋„ˆ ํด๋”์™€ ํ˜ธ์ŠคํŠธ ํด๋” ์—ฐ๊ฒฐํ•˜๊ธฐ

[Docker] (8) ๋„์ปค commit(์ปค๋ฐ‹) & push(ํ‘ธ์‹œ) - ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ์šด ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ  ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œ

[Docker] (9) Dockerfile(๋„์ปคํŒŒ์ผ) - ์Šค๋งˆํŠธํ•˜๊ฒŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

[Docker] (10) Dockerfile ๋นŒ๋“œ ์˜ˆ์‹œ | ENTRYPOINT ์™€ CMD์˜ ์ฐจ์ด

[Docker] (11) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ vscode ์—ฐ๋™ํ•˜๊ธฐ | ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐœ๋ฐœ

[Docker] (12) ๊นƒํ—ˆ๋ธŒ๋กœ ๋„์ปค ์ด๋ฏธ์ง€ ๊ณต์œ ํ•˜๊ธฐ | Packages Container Registry

 

 

docker run volume ์˜ต์…˜

Docker volume(๋ณผ๋ฅจ)์€ ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ ์šด์˜์ฒด์ œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์ง€์†์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. Docker ๋ณผ๋ฅจ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ํŠน์ • ๊ฒฝ๋กœ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

 

Docker ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ: ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ๋ณผ๋ฅจ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€. ์ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ์Œ.
  • ๊ณต์œ  ๋ฐ์ดํ„ฐ: ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.
  • ๋ฐฑ์—… ๋ฐ ๋ณต์›: ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Œ.

 

Docker์—์„œ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” docker run ๋ช…๋ น์–ด์˜ -v ๋˜๋Š” --volume ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•œ๋‹ค.

docker run -v ํ˜ธ์ŠคํŠธ_๊ฒฝ๋กœ:์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋กœ ์ด๋ฏธ์ง€_์ด๋ฆ„

 

์—ฌ๊ธฐ์„œ ํ˜ธ์ŠคํŠธ_๊ฒฝ๋กœ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ์˜ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋กœ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ์˜ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•ด๋‹น ๊ฒฝ๋กœ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ํ˜ธ์ŠคํŠธ์˜ /mydata ๋””๋ ‰ํ† ๋ฆฌ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ /app/data ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

docker run -v /mydata:/app/data ์ด๋ฏธ์ง€_์ด๋ฆ„

 

๋„์ปค ๋ณผ๋ฅจ ์‚ฌ์šฉ ์˜ˆ์‹œ

httpd ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปค ๋ณผ๋ฅจ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

docker run -d -p 8080:80 -v /Users/docker_volume_test:/usr/local/apache2/htdocs httpd
  • docker run ๋ช…๋ น์–ด์˜ -d ์˜ต์…˜์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰
  • -p 8080:80 ์˜ต์…˜์œผ๋กœ ํ˜ธ์ŠคํŠธ 8080ํฌํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ 80ํฌํŠธ๋ฅผ ๋งคํ•‘
  • -v(๋ณผ๋ฅจ ์˜ต์…˜)์œผ๋กœ ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ:์ปจํ…Œ์ด๋„ˆ ๊ฒฝ๋กœ๋ฅผ ์—ฐ๊ฒฐ

 

๋ณผ๋ฅจ ์˜ต์…˜ ์‚ฌ์šฉํ›„ localhost:8080

  • ๋ณผ๋ฅจ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  localhost:8080์— ์ ‘์†ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋จ

 

๋ณผ๋ฅจ ์˜ต์…˜์œผ๋กœ ์—ฐ๊ฒฐํ•œ ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ์—์„œ html ํŒŒ์ผ ์ƒ์„ฑ

 

  • -v ์˜ต์…˜์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ '/Users/docker_volume_test', ์ปจํ…Œ์ด๋„ˆ ๊ฒฝ๋กœ '/usr/local/apache2/htdocs'๋ฅผ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ
  • vscode๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ์— ๋“ค์–ด๊ฐ€ index.html ํŒŒ์ผ์„ ์ƒ์„ฑ
  • ๊ทธ๋ฆฌ๊ณ  html:5 ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด html ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ์ด ๋œจ๋Š”๋ฐ <body> </body> ์‚ฌ์ด์— ์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ํŠน์ • ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ

 

ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ์˜ html ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ํ›„ ๊ฒฐ๊ณผ

  • ์ดํ›„ ๋‹ค์‹œ localhost:8080์— ์ ‘์†ํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ์— ์ƒ์„ฑํ•œ index.html๋กœ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ
  • ์ด๋Š” docker run ๋ณผ๋ฅจ ์˜ต์…˜์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฒฝ๋กœ๋ฅผ ์—ฐ๊ฒฐํ–ˆ๊ธฐ์— ๊ฐ€๋Šฅํ•œ ์ž‘์—…

 

๋„์ปค ๋ฐ์Šคํฌํƒ‘ ์ด์šฉ

 

์—ญ์‹œ๋‚˜ Docker Desktop ์„ ์ด์šฉํ•˜๋ฉด ์ปจํ…Œ๋‹ˆ์–ด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํฌํŠธํฌ์›Œ๋”ฉ๊ณผ ๋ณผ๋ฅจ ์˜ต์…˜ ๋“ฑ์„ ๊ธฐ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•