[DevOps] ์™œ Docker๋Š” ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋„๊ตฌ ์„ ํƒ์ง€์—์„œ ์ ์  ๋ฐฐ์ œ๋ ๊นŒ?

๋ฐ˜์‘ํ˜•

์ตœ๊ทผ ํšŒ์‚ฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ๋ฐฉ์‹์ด ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ํšŒ์‚ฌ์—์„œ ๋งก๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๋˜ํ•œ ๋ณ„๋„์˜ ๋ฐฐํฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ํ˜•์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(Github, Gitlab)์˜ ๋ฐฐํฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” CI/CD ๋„๊ตฌ๊ฐ€ Docker executor๊ฐ€ ์•„๋‹Œ k8s executor๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์—ฌ๊ธฐ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ ๋˜ํ•œ Docker๊ฐ€ ์•„๋‹Œ Kaniko๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

Docker์˜ ๋‹จ์ 

๊ฐ€๋” Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด๋Ÿฐ ์ƒ๊ฐ์ด ์ข…์ข… ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด, ๊ตณ์ด Docker Engine์„ ์„ค์น˜ํ•ด์•ผ ํ• ๊นŒ?
  • Docker์—์„œ๋Š” ๋นŒ๋“œ๋งŒ์„ ์œ„ํ•œ SDK๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๊ฑธ๊นŒ?

์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” Github Actions, Jenkins๋ฅผ ์ด์šฉํ•ด์„œ CI/CD ์ž๋™ํ™”๋ฅผ ํ•˜๋ฉด์„œ๋ถ€ํ„ฐ์˜€์Šต๋‹ˆ๋‹ค. Docker Engine ์ž์ฒด๋Š” ๋งŽ์€ ๊ถŒํ•œ์„ ์š”๊ตฌํ•˜๊ณ , ์„ค์น˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๋งŒ์„ ์œ„ํ•œ ๋„๊ตฌ๋ผ๊ณ  ๋ณด๊ธฐ๋Š” ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Š˜์ƒ ์ธ์Šคํ„ด์Šค ๋น„์šฉ์ด ๋“ค์–ด๊ฐ€๋Š” CI/CD ์ž‘์—…์—๋Š” ๋„ˆ๋ฌด ๊ณผ๋„ํ•œ ๋„๊ตฌ์˜€์ฃ .

 

 

Docker๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ์˜ ํ˜•ํƒœ๋กœ ์„ค์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Docker ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ธ Docker Client์™€ ๊ทธ ๋ช…๋ น์„ ๋ฐ›์•„์ฃผ๋Š” Docker Host๋กœ ๋‚˜๋ˆ„๋Š”๋ฐ, ์ด Docker Host์—๋Š” Docker Daemon์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Host OS์— ๋Œ€ํ•ด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ(Root Privileges)์„ ์š”๊ตฌํ•˜์—ฌ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์„ ํ•˜๋Š” ๋ฐ ํ•„์š” ์ด์ƒ์˜ ๊ถŒํ•œ์„ ์ถ”์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ž˜๋„ ๋นŒ๋“œ๋งŒ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์กฐ๊ธˆ ๊บผ๋ ค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

Docker ์ด์™ธ์˜ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋„๊ตฌ

๊ทธ๋ž˜์„œ ๋ช‡ ๊ฐ€์ง€ ์กฐ์‚ฌ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ, ์ด๋ฏธ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ์บ์น˜ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•ด๋†“์€ ๊ฒƒ์ด ์—ฌ๋Ÿฟ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes)๋ฅผ ๊ฐœ๋ฐœํ•œ Google์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์„ Docker๋กœ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ถ”๊ฐ€ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ•„์š” ์ด์ƒ์˜ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ์ƒ๊ธธ ๊ฒƒ์„ ์šฐ๋ คํ•˜์˜€๋Š”์ง€๋Š” ๋ชฐ๋ผ๋„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ Dockershim Container Runtime์ด ์–ด๋Š์ƒŒ๊ฐ€ ์ œ๊ฑฐ๋œ ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์‹ค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์ด ๊ฐ๊ด‘๋ฐ›๊ธฐ ์‹œ์ž‘๋œ ์ดํ›„ ๊ฐ€์ƒ๋จธ์‹ ๊ณผ ๋™์ผํ•˜๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ๋˜ํ•œ ์—…๊ณ„ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€ ๊ธฐ์ˆ  ๊ทœ์•ฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ƒ๊ธฐ๊ฒŒ ๋œ ๊ฒƒ์ด ๋ฐ”๋กœ OCI(Open Container Initiative)์ธ๋ฐ, ๋‹น์‹œ Docker์™€ Redhat์ด ์„œ๋กœ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๊ทœ๊ฒฉ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์„œ๋กœ๊ฐ€ ์ž์‹ ๋“ค์˜ ํ‘œ์ค€ํ™”๋ฅผ ์ฃผ์žฅํ•˜๋˜ ๋ฌด๋ ต 2016๋…„ 5์›”์— ๊ฐœ์ตœ๋œ DockerCon 2015์—์„œ ์ด ํ‘œ์ค€์ด ์„ ์–ธ๋˜์—ˆ๊ณ , ์ดํ›„ 2๋…„ ๋’ค์— OCI v1.0์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ์ง€์š”. ๊ณ ๋กœ ์šฐ๋ฆฌ๋Š” ๊ตณ์ด Docker๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅ

(์ฐธ์กฐ: https://opencontainers.org/ )

 

๊ทธ๋ ‡๋‹ค๋ฉด Docker ์ด์™ธ์˜ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋„๊ตฌ์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ์š”?

 

  • Kaniko
  • Buildkit
  • Buildah
  • Buildpack

Kaniko๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋‚ด๋ถ€์˜ Dockerfile์„ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋„๊ตฌ๋กœ ์•„์ง ๊ตฌ๊ธ€์˜ ์ •์‹ ์ปจํ…Œ์ด๋„ˆ ๋„๊ตฌ๋Š” ์•„๋‹ˆ์ง€๋งŒ GoogleContainerTools Github์— ๊ท€์†๋˜์–ด ์žˆ๋Š” ๋นŒ๋“œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Docker์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ root ๊ถŒํ•œ์„ ํ•„์š”๋กœ ํ•˜์ง€๋งŒ Host OS๊ฐ€ ๊ฐ€์ง„ root ๊ณ„์ •์˜ ๊ถŒํ•œ๊นŒ์ง€๋Š” ๊ท€์†ํ•˜์ง€ ์•Š์•„ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋…ธ์ถœ์‹œ Host OS์—๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์— ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (https://github.com/GoogleContainerTools/kaniko)

 

Buildkit์€ mody์—์„œ ๊ฐœ๋ฐœํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋กœ ๊ธฐ์กด์—๋Š” Docker ํŒ€์— ์žˆ์—ˆ๋‹ค ๋ถ„๋ฆฌ๋˜์–ด, ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ์‹œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ , ARM ํ”„๋กœ์„ธ์„œ์™€ ๊ฐ™์€ ์ด๊ธฐ์ข… ํ•˜๋“œ์›จ์–ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ Docker์—์„œ๋Š” 18.09๋ฒ„์ „์—์„œ docker buildx ๋ช…๋ น์–ด๋กœ ์ œ๊ณตํ•˜๋ฉฐ ์ตœ๊ทผ์—๋Š” Macbook M1๊ณผ ๊ฐ™์€ ๋น„ ์ธํ…” ํ”„๋กœ์„ธ์„œ ์ปดํ“จํ„ฐ์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. (https://github.com/moby/buildkit)

 

Buildah๋Š” ๋ณดํ†ต podman๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋„๊ตฌ๋กœ Rootless ๋ฒ„์ „์„ ์ง€์›ํ•˜์—ฌ kaniko, buildkit๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ root ๊ถŒํ•œ ์—†์ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์›๊ฒฉ ์บ์‹œ ์ €์žฅ ๊ธฐ๋Šฅ(Remote Caching)์„ ์ง€์›ํ•˜์ง€ ์•Š์•„ ๋กœ์ปฌ ํ™˜๊ฒฝ ์™ธ CI/CD ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๋นŒ๋“œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. (https://github.com/containers/buildah)

 

Buildpack์€ 2011๋…„ heroku๊ฐ€ ์ฒ˜์Œ ๊ณ ์•ˆํ•œ ์ดํ›„ Gitlab, Knative์™€ ๊ฐ™์€ PaaS์—์„œ ์ •์‹์œผ๋กœ ์ฑ„ํƒํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋กœ, ์œ ์ผํ•˜๊ฒŒ Dockerfile๊ณผ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ์šฉ ํŒŒ์ผ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ์˜ ์„ค์ • ์ฝ”๋“œ(requirements.txt, build.gradle.kts ๋“ฑ)๋งŒ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (https://github.com/buildpacks)

 

 

 

Docker๊ฐ€ ๋ฐฐ์ œ๋˜๋Š” ์ด์œ  ๊ทธ๋ฆฌ๊ณ , ์ ํ•ฉํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ๊ณ ๋ฅด๋ ค๋ฉด...

์œ„์—์„œ ๋ณด๋‹ค์‹œํ”ผ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋„๊ตฌ๋“ค์ด ์žˆ์—ˆ๊ณ , ํ™•์‹คํžˆ ๋กœ์ปฌ์—์„œ Docker๋ฅผ ์„ค์น˜ํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•  ํ•„์š” ์—†๊ณ , ๊ทธ๋Ÿฐ ๊ณ ๋ฏผ๋“ค์ด ์ด๋ฏธ ์ˆ˜์—†์ด ์ด๋ค„์ง€๊ณ  ๊ทธ ํ•ด๊ฒฐ์ฑ…์ด ๋‚˜์˜จ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‚ด๊ฐ€ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋”ฐ์ ธ๋ณผ ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

  • ๋ฐฐํฌํ•˜๋ ค๋Š” ์„œ๋ฒ„์˜ ํ”„๋กœ์„ธ์„œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ฉ€ํ‹ฐ ์•„ํ‚คํ…์ฒ˜์ธ๊ฐ€?
  • ๋ณ€๊ฒฝ์ด ์žฆ์•„ ์ž์ฃผ ๋นŒ๋“œ๊ฐ€ ์ด๋ค„์ ธ ์ธ์Šคํ„ด์Šค ๋น„์šฉ์ด ๋†’์€๊ฐ€?
  • ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ๋นŒ๋“œ๋ผ๋ฉด, ์ž๋™ํ™” ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„์˜ OS๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?

๋ฐฐํฌ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž์‹ ์˜ PC์—์„œ ์ˆ˜๋™์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜์—ฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œ(push)ํ•œ ๋‹ค์Œ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ณ , Github Actions ํ˜น์€ Gitlab Runner, Jenkins์™€ ๊ฐ™์€ ์™ธ๋ถ€ ๋ฐฐํฌ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

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

 

์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ์ปฌ PC์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ฒŒ ๋˜๋ฉด ์ž์‹ ์˜ ๋จธ์‹ ์— ๋ ˆ์ด์–ด๋ณ„๋กœ ์บ์‹œ๋ฅผ ๋‚จ๊ธฐ๊ณ  ๋‹ค์Œ์— ์žฌ๋นŒ๋“œํ•  ๋•Œ ์ค‘๋ณต๋œ ๋นŒ๋“œ ๊ณผ์ •์„ ์บ์‹œ์—์„œ ๊ฐ€์ ธ์™€ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์บ์‹œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋นŒ๋“œ ๋„๊ตฌ์—์„œ ์ง€์›ํ•˜์ง€๋งŒ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ ์›๊ฒฉ ์บ์‹œ ์ €์žฅ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š”์ง€๋ฅผ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ˜•์ƒ์— ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฐ ๋’ค, ํ‘œ์ค€ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋งˆ์นœ ํ›„ ๋ฐฐํฌ ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์ด ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋ น Github Actions ๋‚ด์ง€ Gitlab Runner์˜ ๊ฒฝ์šฐ, CI/CD์šฉ ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•˜๊ณ  ํ˜•์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ์ด ๋•Œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋Š” ์†Œ๋ฉธ๋˜์–ด ์—†์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๋นŒ๋“œ ์บ์‹œ๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๊ฑด ๋ฌด์˜๋ฏธํ•˜๋ฏ€๋กœ ๋ณ„๋„์˜ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋นŒ๋“œ ์บ์‹œ๋ฅผ ์ ์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ๊ฒฝ์šฐ Buildah ๋นŒ๋“œ ๋„๊ตฌ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด ์™ธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ(๋‹ค๋ฅธ OS ํ˜น์€ ๋‹ค๋ฅธ CPU ์•„ํ‚คํ…์ฒ˜)์—์„œ ๋นŒ๋“œ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋Š” Buildkit์ž…๋‹ˆ๋‹ค.

 

 

 

๋งˆ์น˜๋ฉฐ..

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

 

ํŠนํžˆ Github Actions์™€ ๊ฐ™์€ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ, ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๋“ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋„๊ตฌ๋“ค์„ ์ž˜ ๋น„๊ตํ•ด์„œ ์“ฐ๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ์ด๋Ÿฌํ•œ ์ผ€์ด์Šค๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด ๊ธ€์„ ํ†ตํ•ด์„œ ๋„์›€์„ ์–ป์–ด๊ฐ€์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

'DevOps' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[DevOps] M1 Macbook์—์„œ Oracle Database ์ปจํ…Œ์ด๋„ˆ ๋„์šฐ๊ธฐ 1  (0) 2023.10.22
TAGS.

Tistory Comments