๐Ÿ  ํ™ˆ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋‹ค

๐Ÿ  ํ™ˆ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋‹ค
Photo by Gabriel Vasiliu / Unsplash

๋‚ด๊ฐ€ ํ™ˆ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

  • Custom Private Docker Registry
  • Documentation Archiving Server
  • GitLab Private Server
  • Blog

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

์„œ๋ฒ„ ์„ ์ •

๋ฌผ๋ฆฌ์„œ๋ฒ„๋ฅผ ์„œ๋ฒ„ ๊ตฌ๋งค๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ์ƒ๊ฐํ–ˆ๋˜ ๊ณ ๋ ค์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ €์‚ฌ์–‘ ํŒŒ์›Œ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค
  • ํฌ๊ธฐ๊ฐ€ ํฌ์ง€ ์•Š์œผ๋ฉฐ, ์ € ์†Œ์Œ์ด์—ฌ์•ผ ํ•œ๋‹ค.
  • ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ’ˆ์ด์—ฌ์•ผํ•œ๋‹ค.

์ง‘์—์„œ ์šด์˜ํ•˜๋Š” ์„œ๋ฒ„์ด๊ธฐ์— ์ „๊ธฐ์„ธ/์†Œ์Œ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ์•ˆ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๋˜ํ•œ AS๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ๋œฏ์–ด๊ณ ์น ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์˜ ์„œ๋ฒ„์ด์—ฌ์•ผ ํ•œ๋‹ค.

์ด ์„ธ๊ฐ€์ง€ ๊ณ ๋ ค์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” ์„œ๋ฒ„๋Š” Intel NUC13ANKi5 ์ด์˜€๋‹ค. ์ƒ์‚ฐ ์ค‘๋‹จ๋œ ๋ฏธ๋‹ˆ ํ”ผ์”จ๋ผ๋Š” ๋ง์ด ์žˆ์ง€๋งŒ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ๊ตฌ๋งค๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค.

๋ฉฐ์น  ์šด์˜์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ ๋งค์šฐ ๋งŒ์กฑํ•œ๋‹ค. ๋†€๋ผ์šธ ์ •๋„๋กœ ์†Œ์Œ์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค. (๋˜ํ•œ ๊ต‰์žฅํžˆ ์ž‘๊ณ  ์„ธ๋ จ๋œ ๋””์ž์ธ์œผ๋กœ ์–ด์ฉŒ๋ฉด ์ธํ…Œ๋ฆฌ์–ด์šฉ์œผ๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ์„์ง€๋„...)

+ NUC ๋Š” WOL (Wake On Lan)์„ ์ง€์›ํ•œ๋‹ค. ์™ธ๋ถ€์žˆ์„๋•Œ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋ฉด ์›๊ฒฉ์œผ๋กœ ์˜จ๋ผ์ธ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค!

์„œ๋ฒ„ ์„ธํŒ…

NUC๋ฅผ ๊ตฌ๋งคํ–ˆ์„ ๋•Œ Win11์ด ์„ค์น˜ ๋˜์–ด์žˆ์—ˆ์ง€๋งŒ, ๋ฏธ๋ จ์—†์ด ์šฐ๋ถ„ํˆฌ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ ์„œ๋น„์Šค๋ฅผ Docker ๊ธฐ๋ฐ˜์˜ VM์œผ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ ์‹ถ์—ˆ๋‹ค.(๋ฌผ๋ก  ์œˆ๋„์šฐ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค) ๋˜ํ•œ ์šด์˜ ์ธก๋ฉด์—์„œ๋„ ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์˜ ์‹œ์Šคํ…œ์ด ์ž์œ ๋„๊ฐ€ ํ›จ์”ฌ ๋†’๋‹ค. ๊ฒฐ์ •์ ์œผ๋กœ ๋ฐ˜ ํ‰์ƒ์„ ์šฐ๋ถ„ํˆฌ/ํŽ˜๋„๋ผ๋กœ ์‚ด์•„์™”์–ด์„œ ์šฐ๋ถ„ํˆฌ๊ฐ€ ํŽธํ–ˆ๋‹ค.

์„ค์น˜ ์ดํ›„ ์ง‘์œผ๋กœ ๊ฐ€์ ธ์™€ ๋ฐฉํ™”๋ฒฝ์„ ์„ธํŒ…ํ•˜๊ณ  ์ด๊ฒƒ ์ €๊ฒƒ ๋ฐ๋ชฌ๋“ค์„ ์„ค์น˜ ํ•˜์˜€๋‹ค.

  • Openssh-server: ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ ํ•ญ์ƒ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜๋Š” ์—†๋‹ค. ย ์„ค์น˜ ์ดํ›„ 22๋ฒˆ ํฌํŠธ๋ฅผ ๊ฐœ์ธ ํฌํŠธ๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.
  • docker.io: ์„œ๋น„์Šค ์šด์˜์„ ์œ„ํ•œ ๋„๊ตฌ.

๋‚ด๊ฐ€ ๋„์ปค๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋ฐ”๋กœ pullํ•œ ์ด๋ฏธ์ง€๋Š” ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด๋‹ค.

  • nginx (ํ”„๋ก์‹œ ์„œ๋ฒ„์šฉ)
  • gitlab/gitlab-ce
  • registry, hyper/docker-registry-web

์œ ๋™ ์•„์ดํ”ผ ๋ฐ ๊ฐ€์ •์šฉ ์ธํ„ฐ๋„ท

ํ™ˆ์„œ๋ฒ„๋ฅผ ์œ„ํ•ด ๊ธฐ์—…์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํ˜„์‹ค์ ์œผ๋กœ ์–ด๋ ต๋‹ค. ๋”ฐ๋ผ์„œ ์ œํ•œ๋˜๋Š” ๋ถ€๋ถ„๋“ค์ด ์ƒ๊ธฐ๋Š”๋ฐ ์ง์ ‘ ๋Š๊ปด ๋ณธ ๋ฌธ์ œ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

  • ์œ ๋™ ์•„์ดํ”ผ: ๋‚˜๋Š” ์ด ์„œ๋ฒ„๋ฅผ ๋„๋ฉ”์ธ์— ๋ฌถ์–ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” L3์Šค์œ„์น˜๋ฅผ ๋‚ด๋ ธ๋‹ค ์˜ฌ๋ฆฌ๋ฉด ์•„์ดํ”ผ๊ฐ€ ์œ ๋™์  ๋ฐ”๋€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ์ธ์ด ๊ณ ์ • ์•„์ดํ”ผ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š๋‹ค. (์ด๋Š” ์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์•„์ดํ”ผ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๊ฒŒ ๊ธฐ๋„ํ•  ์ˆ˜๋ฐ–์—..)
  • ๋Š๋ฆฐ ์ธํ„ฐ๋„ท ์†๋„: docker-registry์— ์ด๋ฏธ์ง€๋ฅผ pull/push ํ• ๋•Œ๋งˆ๋‹ค ์•ฝ๊ฐ„์˜ ๋‹ต๋‹ตํ•จ์ด ๋Š๊ปด์ง„๋‹ค.
  • ์ œํ•œ๋˜๋Š” Port: ๋‚˜์˜ ์ธํ„ฐ๋„ท์€ 80/tcp ํฌํŠธ ๊ฐœ๋ฐฉ์ด ๋ถˆ๊ฐ€ํ•˜์˜€๋‹ค. ๋ณธ ๋ธ”๋กœ๊ทธ ๊ฐ™์€ ๊ฒƒ์„ ์šด์˜ํ•˜๊ธฐ์— ์ œํ•œ์ ์ด๋ผ๋Š” ๋ง์ด๋‹ค. ๋‹คํ–‰ํžˆ๋„ ๊ทธ ์ด์™ธ ํฌํŠธ๋Š” ๊ฐœ๋ฐฉ์ด ๊ฐ€๋Šฅํ•˜์˜€๋‹ค. ํ˜„์žฌ๋Š” 80๋ฒˆ์„ ์šฐํšŒ ํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์šด์˜์ค‘์ด๋‹ค. (์ด๋Š” ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์œผ๋กœ ๋‹ค์‹œ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.)

ํ˜„์žฌ๋Š” ๋ณธ ์„œ๋ฒ„์—์„œ๋Š” ๋ณธ ๋ธ”๋กœ๊ทธ๋ฅผ ํฌํ•จํ•ด์„œ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ๋“ค์ด ์šด์˜๋˜๊ณ ์žˆ๋‹ค. ํ–ฅํ›„ ์ด ๊ณผ์ •๋“ค(ํ”„๋ก์‹œ ์„œ๋ฒ„, SSL, Application ๋“ฑ)๋„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์œผ๋กœ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ด๋‹ค.