๐Ÿณย ์ด์ œ๋Š” ๋„์ปค ์—†๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์‹œ๋Œ€ โ€” ๋‹น์‹ ์€ ์ค€๋น„๋๋‚˜์š”?

sangjinsuยท2025๋…„ 4์›” 30์ผ
1

Kubernetes Without Docker Is the Future โ€” Are You Ready?

๋„์ปค๋Š” ์ด์ œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์ œ์™ธ๋์Šต๋‹ˆ๋‹ค โ€” ๊ทธ ์˜๋ฏธ์™€ ๋‹น์‹ ์ด ์ค€๋น„ํ•ด์•ผ ํ•  ๊ฒƒ๋“ค์„ ์•Œ์•„๋ณด์„ธ์š”.

์ˆ˜๋…„๊ฐ„ Docker์™€ Kubernetes๋Š” ์ปจํ…Œ์ด๋„ˆ ์„ธ๊ณ„์˜ ๋Œ€ํ‘œ์ ์ธ ๋“€์˜ค์˜€์Šต๋‹ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ, ๋ถ€ํŠธ์บ ํ”„, DevOps ํŒŒ์ดํ”„๋ผ์ธ ์–ด๋””์—์„œ๋“  ๋‘˜์€ ๋–ผ๋ ค์•ผ ๋—„ ์ˆ˜ ์—†๋Š” ์กด์žฌ์˜€์ฃ .

๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ๋†€๋ผ๊ฒŒ ํ•œ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Kubernetes๋Š” 1.20 ๋ฒ„์ „๋ถ€ํ„ฐ Docker๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์œผ๋กœ ๋” ์ด์ƒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ฒฐ๊ตญ ๊ณต์‹ ์ง€์›์„ ์™„์ „ํžˆ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€, Kubernetes๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๋ฅผ ๋ฒ„๋ฆฐ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Docker๋ฅผ ๋ฒ„๋ฆฐ ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์ด๊ฑด ์ „ํ˜€ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€ํ™”๋Š” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ–ˆ๊ณ , ์ผ๋ถ€ ํŒ€์—์„œ๋Š” ํ˜ผ๋ž€๊ณผ ๋ถˆ์•ˆ๊ฐ๋งˆ์ € ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ด ๋ณ€ํ™”๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ์ด๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์˜ ๋ฏธ๋ž˜์— ์˜คํžˆ๋ ค ๊ธ์ •์ ์ธ ๋ณ€ํ™”์ธ์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๋จผ์ €, ์˜คํ•ด๋ถ€ํ„ฐ ํ’€๊ณ  ๊ฐ‘์‹œ๋‹ค

โ€œ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๋„์ปค๋ฅผ ์ œ๊ฑฐํ•œ๋‹คโ€๋Š” ๋ง์„ ๋“ค์œผ๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค:

โ€œ๊ทธ๋Ÿผ ์ด์ œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฑด๊ฐ€์š”?โ€

๊ทธ๊ฑด ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์—ฌ์ „ํžˆ ๋„์ปค ์ด๋ฏธ์ง€(Docker images)๋ฅผ ๋ฌธ์ œ์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€๋Š” OCI(Open Container Initiative) ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฉฐ,

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” OCI ํ˜ธํ™˜ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด๋ฏธ์ง€์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋Ÿฐํƒ€์ž„์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.


Docker์™€ containerd: ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€์š”?

์‚ฌ์‹ค Docker ์ž์ฒด๋„ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” containerd๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

containerd๋Š” ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ, ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ, ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ ๋“ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ธ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ docker run ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, Docker๋Š” ์‹ค์ œ๋กœ ๋’ค์—์„œ containerd๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค.

Kubernetes๋Š” ์ด ๊ณผ์ •์—์„œ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ์—†์• ๊ธฐ๋กœ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด์—๋Š” Docker โ†’ containerd โ†’ Linux์˜ ํ๋ฆ„์ด์—ˆ๋‹ค๋ฉด, ์ด์ œ๋Š” Kubernetes๊ฐ€ containerd์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ๋Š”?

๋ถˆํ•„์š”ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ, ๋” ๋‚˜์€ ์„ฑ๋Šฅ, ๊ทธ๋ฆฌ๊ณ  ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๊ด€๋ฆฌ ์ธก๋ฉด์—์„œ์˜ ์ด์ ์ด ์ƒ๊น๋‹ˆ๋‹ค.


Kubernetes๊ฐ€ ์ด ๊ฒฐ์ •์„ ๋‚ด๋ฆฐ ์ด์œ 

์ด๋ฒˆ ์•„ํ‚คํ…์ฒ˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋ฐฐ๊ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

1. Docker๋Š” CRI(์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ธํ„ฐํŽ˜์ด์Šค) ํ˜ธํ™˜ ๋Ÿฐํƒ€์ž„์ด ์•„๋‹ˆ๋‹ค

Kubernetes๋Š” ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด CRI(Container Runtime Interface)๋ผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Docker๋Š” CRI๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, Kubernetes์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด dockershim์ด๋ผ๋Š” ์ค‘๊ฐ„ ๊ณ„์ธต(shim layer)์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด dockershim์„ ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ์ผ์€ ๋ณต์žกํ•˜๊ณ  ๋ถˆ์•ˆ์ •ํ–ˆ์œผ๋ฉฐ, ๊ฒฐ๊ตญ Kubernetes ํŒ€์€ ์ด๋ ‡๊ฒŒ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค: โ€œ๋” ์ด์ƒ ์œ ์ง€ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.โ€

2. containerd๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋Ÿฐํƒ€์ž„์ด๋‹ค

Docker์™€ ๋‹ฌ๋ฆฌ, containerd๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋” ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋ฉฐ, Docker CLI๋‚˜ ์ด๋ฏธ์ง€ ๋นŒ๋”, ๋ฐ์Šคํฌํƒ‘ ๋„๊ตฌ ๊ฐ™์€ ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์ง€ ์•Š์•„ Kubernetes์™€์˜ ํ†ตํ•ฉ์— ํ›จ์”ฌ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

3. ๋” ๊น”๋”ํ•˜๊ณ  ๋‹จ์ˆœํ•œ ์•„ํ‚คํ…์ฒ˜

Docker๋ฅผ ์ƒ๋žตํ•จ์œผ๋กœ์จ Kubernetes ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์—์„œ์˜ ๊ณ„์ธต ๊ตฌ์กฐ์™€ ์˜์กด์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ , ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ๋””๋ฒ„๊น…๋„ ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.


๊ฐœ๋ฐœ์ž์ธ ๋‹น์‹ ์—๊ฒŒ ์˜ํ–ฅ์ด ์žˆ์„๊นŒ์š”?

๋‹น์‹ ์ด ๋งŒ์•ฝ ์•„๋ž˜ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด:

  • Docker๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ ,
  • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(์˜ˆ: Docker Hub, ECR ๋“ฑ)์— ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•˜๋ฉฐ,
  • ๊ทธ ์ด๋ฏธ์ง€๋ฅผ Kubernetes์— ๋ฐฐํฌํ•˜๊ณ  ์žˆ๋‹ค๋ฉด,

๊ฑฑ์ •ํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ๊นจ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Dockerfile์„ ๋‹ค์‹œ ์ž‘์„ฑํ•  ํ•„์š”๋„ ์—†๊ณ ,

๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ํฌ๋งท์œผ๋กœ ์ „ํ™˜ํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ธก๋ฉด์—์„œ๋Š” ์ด๋ฒˆ ๋ณ€๊ฒฝ์ด ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ฐ”๊ฟ”์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ๋“ค

1. ๋กœ๊น… ๋ฐ ๋””๋ฒ„๊น… ๋ฐฉ์‹

๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด docker logs, docker exec ๊ฐ™์€ Docker CLI ๋ช…๋ น์–ด๋ฅผ ๋””๋ฒ„๊น…์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ containerd๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋Ÿฐ ์นœ์ˆ™ํ•œ CLI๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ๋Š” crictl, ctr ๊ฐ™์€ ๋Œ€์ฒด ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ,

์ด๋“ค ๋„๊ตฌ๋Š” ์ƒˆ๋กญ๊ฒŒ ํ•™์Šต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

2. CI/CD ํŒŒ์ดํ”„๋ผ์ธ

์ผ๋ถ€ ์ปค์Šคํ…€ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์€ Kubernetes ๋…ธ๋“œ ๋‚ด๋ถ€์—์„œ Docker๋ฅผ ์‹คํ–‰ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ํŠน์ • ๋ถ€์ž‘์šฉ์„ ์œ ๋ฐœํ•˜๋Š” ๋ฐฉ์‹์— ์˜์กดํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์ œ๋Š” ๋…ธ๋“œ์— Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฐ ๋ฐฉ์‹์€ ๋” ์ด์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โœ… ํ•ด๊ฒฐ์ฑ…:

Docker๊ฐ€ ์—†์–ด๋„ Kubernetes ๋‚ด์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋Š” Kaniko, BuildKit, img ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

3. ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

Minikube๋‚˜ kind(Kubernetes IN Docker)๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด,

์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ์Œ์„ ๋А๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํˆด๋“ค์€ ๋น ๋ฅด๊ฒŒ ์ตœ์‹ ํ™”๋˜๊ณ  ์žˆ์ง€๋งŒ,

์ง€๊ธˆ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์ด ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ•œ ๋ฒˆ ๋” ์ ๊ฒ€ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋ฏธ๋ž˜ ์ง€ํ–ฅ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํŒ

์•ž์œผ๋กœ ๋ณ€ํ™”์— ์•ž์„œ ๋‚˜๊ฐ€๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹๋“ค์„ ๋„์ž…ํ•ด๋ณด์„ธ์š”:

โœ… OCI ํ˜ธํ™˜ ์ด๋ฏธ์ง€ ๋นŒ๋” ์‚ฌ์šฉํ•˜๊ธฐ:

BuildKit, Kaniko, img๋Š” Docker ์—†์ด๋„ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… containerd ๊ธฐ์ดˆ ์ตํžˆ๊ธฐ:

ํŠนํžˆ crictl์€ Kubernetes ๋…ธ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

โœ… Docker-in-Docker ๋ฐฉ์‹ ํ”ผํ•˜๊ธฐ:

ํŽธ๋ฆฌํ•ด ๋ณด์—ฌ๋„ ๋งค์šฐ ๋ถˆ์•ˆ์ •ํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์นœํ™”์ ์ธ ๋Œ€์•ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

โœ… Kubernetes ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ:

ํŠนํžˆ ๋Ÿฐํƒ€์ž„ ์ธํ„ฐํŽ˜์ด์Šค(CRI)์™€ ๊ด€๋ จ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฑ™๊ฒจ๋ณด์„ธ์š”.


๋งˆ๋ฌด๋ฆฌ

Kubernetes๊ฐ€ Docker ์ง€์›์„ ์ค‘๋‹จํ•œ ๊ฒƒ์€ Docker์˜ ๋์ด ์•„๋‹ˆ๋ผ,

๋Œ€๊ทœ๋ชจ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐฉ์‹์˜ ์ง„ํ™”๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํžˆ๋ ค ์ด๋ฒˆ ๋ณ€ํ™”๋Š” ์šฐ๋ฆฌ๋ฅผ ๋” ๊ฐ€๋ณ๊ณ , ํ‘œ์ค€ํ™”๋˜๊ณ , ํ”„๋กœ๋•์…˜ ์ค‘์‹ฌ์ ์ธ ์ปจํ…Œ์ด๋„ˆ ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ์ด๋Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Docker๋Š” ์—ฌ์ „ํžˆ ๋กœ์ปฌ ๊ฐœ๋ฐœ๊ณผ ์ด๋ฏธ์ง€ ๋นŒ๋“œ์— ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์˜ ๋ฏธ๋ž˜๋Š” containerd์™€ CRI ํ˜ธํ™˜ ๋Ÿฐํƒ€์ž„์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ, ๋„์ปค ์—†๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ณง ํ˜„์‹ค์ด์ž ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค.

์ง„์งœ ์ค‘์š”ํ•œ ์งˆ๋ฌธ์€ ์ด๊ฒƒ์ด๊ฒ ์ฃ , ๋‹น์‹ ์€ ๊ทธ ๋ฏธ๋ž˜๋ฅผ ๋งž์ดํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

์š”์•ฝ๊ณผ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์€ ๊ฐœ๋…๋“ค


๐Ÿณ Kubernetes Without Docker Is the Future โ€” ์š”์•ฝ๋ณธ

๐Ÿ“Œ ํ•ต์‹ฌ ์š”์•ฝ

  • Kubernetes๋Š” 1.20๋ถ€ํ„ฐ Docker ๋Ÿฐํƒ€์ž„์„ deprecated, ํ˜„์žฌ๋Š” ์™„์ „ํžˆ ์ œ๊ฑฐ๋จ
  • ๊ทธ๋Ÿฌ๋‚˜ Docker ์ด๋ฏธ์ง€ ์‚ฌ์šฉ์€ ๊ณ„์† ๊ฐ€๋Šฅ (OCI ํ‘œ์ค€ ์ค€์ˆ˜)
  • ๋ณ€๊ฒฝ๋œ ๊ฒƒ์€ ์ด๋ฏธ์ง€ ๋Ÿฐํƒ€์ž„(runtime) ๋ฐฉ์‹, ์ด๋ฏธ์ง€ ํฌ๋งท์€ ๊ทธ๋Œ€๋กœ

๐Ÿ” ์™œ Kubernetes๊ฐ€ Docker๋ฅผ ์ œ์™ธํ–ˆ๋‚˜?

  1. Docker๋Š” CRI ํ˜ธํ™˜ ๋Ÿฐํƒ€์ž„์ด ์•„๋‹˜
    • Kubernetes๋Š” CRI(Container Runtime Interface)๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„๊ณผ ํ†ต์‹ 
    • Docker๋Š” CRI๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ ์ค‘๊ฐ„ ๊ณ„์ธต dockershim์ด ํ•„์š”ํ–ˆ์Œ โ†’ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ณต์žก
  2. containerd๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์— ์ตœ์ ํ™”
    • Docker ๋‚ด๋ถ€์—์„œ๋„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ๋Ÿฐํƒ€์ž„
    • CLI, ๋ฐ์Šคํฌํƒ‘ ๋“ฑ ๋ถˆํ•„์š”ํ•œ ์š”์†Œ ์—†์Œ
  3. ๋” ๋‹จ์ˆœํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜
    • ์ค‘๊ฐ„ ๊ณ„์ธต ์ œ๊ฑฐ๋กœ ๋””๋ฒ„๊น…๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง

๐Ÿ‘จโ€๐Ÿ’ป ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ”๊ฟ”์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„

ํ•ญ๋ชฉ์˜ํ–ฅ๋Œ€์ฒด ๋ฐฉ๋ฒ•
Docker CLI ๊ธฐ๋ฐ˜ ๋””๋ฒ„๊น…docker logs, docker exec ์‚ฌ์šฉ ๋ถˆ๊ฐ€crictl, ctr ํ•™์Šต
CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ Docker ์‚ฌ์šฉ๋…ธ๋“œ ๋‚ด Docker ํ•„์š” ์‹œ ์ž‘๋™ ์•ˆ ํ•จKaniko, BuildKit, img ์‚ฌ์šฉ
๋กœ์ปฌ Kubernetes ํ™˜๊ฒฝMinikube, kind ์„ค์ • ๋ณ€ํ™” ๊ฐ€๋Šฅ์„ฑ๊ตฌ์„ฑ ํ™•์ธ ๋ฐ ์ตœ์‹ ํ™” ํ•„์š”

โœ… ๋ฏธ๋ž˜์ง€ํ–ฅ์  ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”์ฒœ

  • ์ด๋ฏธ์ง€ ๋นŒ๋”: BuildKit, Kaniko, img
  • ๋Ÿฐํƒ€์ž„ ๋„๊ตฌ: crictl, ctr
  • ์•ˆํ‹ฐํŒจํ„ด ํ”ผํ•˜๊ธฐ: Docker-in-Docker๋Š” ๋ถˆ์•ˆ์ • โ†’ ๋Œ€์ฒด ๋„๊ตฌ ์‚ฌ์šฉ
  • ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ์ฃผ๊ธฐ์  ํ™•์ธ: Kubernetes์˜ CRI ๊ด€๋ จ ๋ณ€๊ฒฝ์‚ฌํ•ญ ํŒŒ์•…

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์€ ๊ฐœ๋…๋“ค

์ฃผ์ œ์„ค๋ช…
๐Ÿ”น CRI(Container Runtime Interface)Kubernetes์™€ ๋Ÿฐํƒ€์ž„ ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค. CRI ์ดํ•ด๋Š” ํ•„์ˆ˜
๐Ÿ”น containerd vs Docker ์ฐจ์ด๋Ÿฐํƒ€์ž„ ๊ณ„์ธต ๊ตฌ์กฐ ๋ฐ ์—ญํ•  ๋น„๊ต
๐Ÿ”น crictl / ctr ๋ช…๋ น์–ด๋””๋ฒ„๊น… ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์ œ์–ด๋ฅผ ์œ„ํ•œ CLI ๋„๊ตฌ
๐Ÿ”น Kaniko / BuildKit ์‚ฌ์šฉ๋ฒ•Docker ์—†๋Š” ํ™˜๊ฒฝ์—์„œ ์ด๋ฏธ์ง€ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•
๐Ÿ”น kind, Minikube ์„ค์ • ๊ตฌ์กฐ๋กœ์ปฌ ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ๋ฐฉ์‹ ๋ณ€๊ฒฝ ์ดํ•ด

profile
๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š”, ์ด์Šˆ๋ฅผ ์ค„์ด๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€