๐Ÿ“‚ Container & K8S/Docker

[Docker] ๋„์ปค ๋ณผ๋ฅจ๊ณผ ๋ณผ๋ฅจ ๋ช…๋ น์–ด

dhyuck 2021. 9. 25. 01:51
๋ฐ˜์‘ํ˜•

์ปจํ…Œ์ด๋„ˆ๋Š” ํœ˜๋ฐœ์„ฑ ํ”„๋กœ์„ธ์Šค๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค๋ฉด, ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€(ํ˜ธ์ŠคํŠธ)์— ์ €์žฅํ•˜๋Š” ์˜ต์…˜์€ Volumes, Bind Mounts, tmpfs 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Volumes์€ Docker๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ์‹œ์Šคํ…œ(/var/lib/docker/volumes/)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    Non-Docker ํ”„๋กœ์„ธ์Šค๋Š” ํ•ด๋‹น ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ˆ˜์ •ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. (๋„์ปค์—์„œ ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.)

  • Bind Mounts ๋Š” ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์–ด๋””์—๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Š” ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ณ , Non-Docker ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด์„œ ํ•ด๋‹น ํŒŒ์ผ์‹œ์Šคํ…œ์ด ์ˆ˜์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. (๋„์ปค ์ดˆ๊ธฐ์— ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค)

  • tmpfs๋Š” Linux์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ˜ธ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ์—๋งŒ ์ €์žฅ๋˜๊ณ  ํŒŒ์ผ์‹œ์Šคํ…œ์—๋Š” ์ €์žฅ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.


๋„์ปค ๋ณผ๋ฅจ ๋ช…๋ น์–ด

  • ๋„์ปค ๋ณผ๋ฅจ ์ƒ์„ฑ (docker volume create)

      docker volume create [OPTIONS] [VOLUME]
      # Create a volume
  • ๋„์ปค ๋ณผ๋ฅจ ์กฐํšŒ(docker volume ls)

      docker volume ls [OPTIONS]
      # List volumes 
  • ๋„์ปค ๋ณผ๋ฅจ ์‚ญ์ œ (docker volume rm)

      docker volume rm [OPTIONS] VOLUME [VOLUME...]
      # Remove one or more volumes.
      # You cannot remove a volume that is in use by a container.
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋กœ์ปฌ ๋ณผ๋ฅจ ์‚ญ์ œ (docker volume prune)

      docker volume prune [OPTIONS]
      # Remove all unused local volumes
  • ๋„์ปค ๋ณผ๋ฅจ ์ •๋ณด ํ™•์ธ (docker volume inspect)

      docker volume inspect [OPTIONS] VOLUME [VOLUME...]
      # Display detailed information on one or more volumes

  • ์ปจํ…Œ์ด๋„ˆ์— ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•  ๋•Œ๋Š” 3๊ฐ€์ง€ flag๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -v, โ€”volume, โ€”mount

      # ์ด๋ฏธ์ง€ : nginx:latest / ์ด๋ฆ„ : devtest
      # -d : ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๊ตฌ๋™ / "myvol2" ๋ณผ๋ฅจ์„ "/app"์— ๋งˆ์šดํŠธ
      docker run -d --name devtest --mount source=myvol2, target=/app nginx:latest
      docker run -d --name devtest -v myvol2:/app nginx:latest

๋ฐ˜์‘ํ˜•