• toc {:toc}

ํ•™์Šต ๋ชฉํ‘œ

  • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํ˜ธ์ŠคํŠธ ๋จธ์‹  ์•ˆ์— ๋งŒ๋“ค์–ด์ง€๋Š” ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•ด ํ•™์Šตํ•œ๋‹ค.
  • ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์œ„ํ•œ ์˜ต์…˜
    • volumes
    • bind mounts : ๋ฆฌ๋ˆ…์Šค๋‚˜ ์œ ๋‹‰์Šค ์šด์˜์ฒด์ œ์—์„œ ๋ณ„๋„์˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ธ์‹์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ์ˆ 
    • tmpfs mount (for Docker on Linux)
    • named pipe (for Docker on Windows)
    • volumes, bind mounts์— ์ดˆ์ 

Issues

  • ๋ฐ์ดํ„ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์ง€๋  ์ˆ˜ ์—†๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—๋„ ๊ฐ€์ƒ์˜ ๋””์Šคํฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ writable layer๋ผ๊ณ  ํ•œ๋‹ค.

    • Writable layer๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ host machine๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ธฐ ํž˜๋“ค๋‹ค.
    • Writable layer๋Š” ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ๊ฐ์†Œํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ๋ฐ”๊นฅ์— ์ €์žฅ๊ณต๊ฐ„์„ ๋งŒ๋“ ๋‹ค. - Volume, Bind mounts

  • Volumes

    • docker deamon์ด ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ์Šคํ† ๋ฆฌ์ง€ ์ค‘ ํŠน์ • ์˜์—ญ์„ ๋„์ปค์˜ ๊ณต๊ฐ„์œผ๋กœ ์ ์œ ํ•œ ๊ฒƒ.
    • ๋„์ปค์— ์˜ํ•ด์„œ ๊ด€๋ฆฌ๋˜๋Š” ํ˜ธ์ŠคํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํ•œ ๋ถ€๋ถ„์— ์ €์žฅ๋œ๋‹ค.
    • ๋„์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • ๋„์ปค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ์‹์ด๋‹ค.
    • ํŠน์„ฑ
      • ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ํ•˜๋‚˜์˜ volume์ด ๋งˆ์šดํŠธ๋  ์ˆ˜ ์žˆ๋‹ค.
      • volume์„ ์‚ฌ์šฉํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ด์ง€ ์•Š์„ ๋•Œ๋„ ์—ฌ์ „ํžˆ ๋„์ปค์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ์ž๋™์ ์œผ๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
      • ๋ฆฌ๋ชจํŠธ ํ˜ธ์ŠคํŠธ ํ˜น์€ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž์— ๋‚ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์šฉ๋„
      • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋ณธ์ธ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
      • ์–ด๋”˜๊ฐ€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€์ ธ์™€ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  • Bind mount

    • ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ๋””์Šคํฌ, ssd์˜ ํŠน์ • ์œ„์น˜๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž„์˜์ ์œผ๋กœ ์ง€๋ชฉํ•ด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ ๋‹ค.
    • ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ์Šคํ† ๋ฆฌ์ง€ ์ค‘ ์–ด๋””๋“  ์ €์žฅ๋  ์ˆ˜ ์žˆ๋‹ค.
      • ๋„์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ๋„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋„์ปค ๋ช…๋ น์— ์˜ํ•ด ์ œ์–ด๋  ํ•„์š” ์—†๋‹ค.
    • ์šฉ๋„
      • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ด์ „์— ์ด๋ฏธ ์ƒ์„ฑ๋œ ์ž๋ฃŒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
      • ์ปจํ…Œ์ด๋„ˆ์˜ ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฏผ๊ฐํ•œ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • tmpfs (for Docker on Linux)

    • ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์ €์žฅ๋œ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฉˆ์ถœ ๋•Œ tmpfs ๋งˆ์šดํŠธ๋Š” ์ œ๊ฑฐ๋˜๊ณ  ์“ฐ์ธ ํŒŒ์ผ๋“ค์€ ์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค.
    • Volume, Bind Mount์™€์˜ ์ฐจ์ด
      • tmpfs๋Š” ์ผ์‹œ์ ์ด๊ณ  ํ˜ธ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ์—๋งŒ ์ €์žฅ๋œ๋‹ค.
      • ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด์— tmpfs๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค.
  • named pipe (for Docker on Window)

  • Jenkins - CI/CD

  • Continuous Integration and Delivery server

  • ์ฝ”๋“œ ์ž‘์„ฑ์„ ๋งˆ์น˜๊ณ  ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ฆฐ ํ›„ ์ปดํŒŒ์ผ, ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋“ฑ์˜ ์ž‘์—…์„ ์‚ฌ๋žŒ์˜ ๊ฐœ์ž… ์—†์ด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์‹œ๊ฐ„์„ ์„ค์ •ํ•ด์„œ ๋ฐฐํฌํ•˜๋Š” ๋“ฑ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Docker Machine

  • Docker Machine
    • ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ์— ๋„์ปค ์—”์ง„์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋„๊ตฌ.
    • ๋„์ปค ๋จธ์‹ ์„ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ์— ์„ค์น˜ํ•˜๊ณ  ํ˜ธ์ŠคํŠธ๋ฅผ ๋„์ปค ๋จธ์‹  ์ปค๋ฉ˜๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฃฌ๋‹ค.
    • ํ˜น์€ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค๊ณ  ๋„์ปค๋ฅผ ์„ค์น˜ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
    • ์šฉ๋„
      • ์˜ค๋ž˜๋œ ๋ฐ์Šคํฌํƒ‘์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋งฅ์ด๋‚˜ ์œˆ๋„์šฐ์—์„œ ๋„์ปค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
      • ์›๊ฒฉ ์‹œ์Šคํ…œ์— ๋„์ปค ํ˜ธ์ŠคํŠธ๋ฅผ ๊ณต๊ธ‰ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  • ๋„์ปค ๋จธ์‹  ์ปค๋ฉ˜๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Start, inspect, stop, restart a managed host
    • Upgrade the Docker client & daemon
    • Configuare a Docker client to talk to your host