๐Ÿšซ ํ์‡„๋ง ํ™˜๊ฒฝ์„ ์œ„ํ•œ containerd ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

๋ชฉ์ฐจ

I. ๊ฐœ์š” ๋ฐ ํ•„์ˆ˜ ์ค€๋น„ ์‚ฌํ•ญ

1. containerd์˜ ์—ญํ•  ์žฌ์ •๋ฆฝ

  • containerd๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์‹คํ–‰ ์—”์ง„(Runtime) ๊ทธ ์ž์ฒด์ž…๋‹ˆ๋‹ค.
  • ํ์‡„๋ง ํ™˜๊ฒฝ์—์„œ๋Š” ์™ธ๋ถ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(Docker Hub ๋“ฑ)์— ์ ‘์†ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ,ย ์‚ฌ์ „์— ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ํ™•๋ณดํ•˜์—ฌ ๋‚ด๋ถ€ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ˆ˜๋™์œผ๋กœ ์ฃผ์ž…(Load)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ํ์‡„๋ง ํ™˜๊ฒฝ์˜ ํŠน์„ฑ ์ดํ•ด (๋งค์šฐ ์ค‘์š”)

  • ํ•ต์‹ฌ ์ œํ•œ:ย ์ธํ„ฐ๋„ท ์ ‘์† ๋ถˆ๊ฐ€.
  • ์ž‘์—… ํ๋ฆ„:ย ๋ชจ๋“  ์ž‘์—…์€ย โ‘  ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์—์„œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  โ‘ก ์ด ํŒŒ์ผ์„ **๋ฌผ๋ฆฌ์  ๋งค์ฒด(USB, ์™ธ์žฅ ํ•˜๋“œ)**๋ฅผ ํ†ตํ•ดย โ‘ข ํ์‡„๋ง ๋‚ด๋ถ€๋กœ ์˜ฎ๊ฒจ์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋„๊ตฌ:ย ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผย containerd์˜ CLI ๋„๊ตฌ(ctrย ๋˜๋Š”ย crictl)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ์ „์ œ ์กฐ๊ฑด: ์ด๋ฏธ์ง€ ํ™•๋ณด ๋ฐ ์ „์†ก (์ค€๋น„ ์ž‘์—…)

๊ตฌ๋ถ„ ๋‚ด์šฉ ์‚ฌ์šฉ ๋„๊ตฌ ๋น„๊ณ 
์ด๋ฏธ์ง€ Pull ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ธํ„ฐ๋„ท ํ™˜๊ฒฝ์—์„œ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. docker pull ๊ธฐ๋ณธ ์ž‘์—…
์ด๋ฏธ์ง€ ์ €์žฅ ๋‹ค์šด๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผย Portable Archiveย ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. docker saveย ๋˜๋Š”ย skopeo ์ด ํŒŒ์ผ์ด ๋ฌผ๋ฆฌ์  ์ „์†ก ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.
์ด๋ฏธ์ง€ ์ „์†ก Archive ํŒŒ์ผ์„ USB ๋“ฑ์„ ์ด์šฉํ•ด ํ์‡„๋ง์œผ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค. USB Drive ์ „์†ก ๊ณผ์ •์—์„œ ํŒŒ์ผ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

II. ๐ŸŒ 1๋‹จ๊ณ„: ์ธํ„ฐ๋„ท ์ ‘์† ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ (Preparation Phase)

(์ด ๋‹จ๊ณ„๋Š” ๋ฐ˜๋“œ์‹œ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œย ์ค€๋น„์šฉ ์›Œํฌ์Šคํ…Œ์ด์…˜์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.)

1. ์ด๋ฏธ์ง€ ํ™•๋ณด ๋ฐ ์บ์‹ฑ ์ „๋žต

  1. ํ•„์š” ์ด๋ฏธ์ง€ ์‹๋ณ„:ย ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ์ •ํ™•ํ•œ ์ด๋ฆ„๊ณผ ํƒœ๊ทธ(์˜ˆ:ย nginx:stable-alpine)๋ฅผ ํ™•์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋„์ปค ํ’€:ย ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    docker pull [์ด๋ฏธ์ง€๋ช…]:[ํƒœ๊ทธ]
    

2. ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ถ”์ถœ ๋ฐ ์ „์†ก ์ค€๋น„ (Docker Save ์‚ฌ์šฉ)

  • ๊ฐ€์žฅ ๊ฐ„ํŽธํ•œ ๋ฐฉ๋ฒ•:ย docker save๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋‹จ์ผย .tarย ํŒŒ์ผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    # ์˜ˆ์‹œ: nginx ์ด๋ฏธ์ง€๋ฅผ tar ํŒŒ์ผ๋กœ ์ €์žฅ
    docker save -o nginx_image.tar nginx:latest
    
  • ํŒ (skopeo ์‚ฌ์šฉ):ย skopeo๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋‚˜ ๋กœ์ปฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌ/๊ฒ€์‚ฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋ฉฐ, ํ์‡„๋ง ์ „์†ก ์‹œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์ ๊ฒ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฌผ๋ฆฌ์  ์ „์†ก ๋งค์ฒด ํ™œ์šฉ

  1. ์ƒ์„ฑ๋œย .tarย ํŒŒ์ผ์„ USB ๋˜๋Š” ์™ธ์žฅ ํ•˜๋“œ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ณด์•ˆ ๊ฒ€์ฆ:ย ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ์ด ํŒŒ์ผ์˜ ํ•ด์‹œ ๊ฐ’(SHA256)์„ ๊ธฐ๋กํ•˜์—ฌ, ํ์‡„๋ง ์ง„์ž… ํ›„ ํŒŒ์ผ์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ๊ฒ€์ฆํ•  ๊ทผ๊ฑฐ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.

III. ๐Ÿ”ด 2๋‹จ๊ณ„: ํ์‡„๋ง Red Hat ํ™˜๊ฒฝ (Deployment Phase)

(์ด ๋‹จ๊ณ„๋Š” ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์™„์ „ํžˆ ์ฐจ๋‹จ๋œย ํ์‡„๋ง ์„œ๋ฒ„์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.)

1. ์‹œ์Šคํ…œ ์ค€๋น„ ๋ฐ ํ™˜๊ฒฝ ์ ๊ฒ€

  1. containerd ์„ค์น˜ ํ™•์ธ:ย ์šด์˜์ฒด์ œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œย containerd๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (์„ค์น˜๊ฐ€ ์•ˆ ๋˜์—ˆ๋‹ค๋ฉด, ์ด ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ๊ฒฝ๋กœ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ๊ธฐ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)
    sudo dnf install containerd.io
    
  2. ์„œ๋น„์Šค ์‹œ์ž‘:ย containerdย ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    sudo systemctl start containerd
    

2. ๋กœ์ปฌ ์ด๋ฏธ์ง€ ์ฃผ์ž… (Load Image)

ํ์‡„๋ง์—์„œย containerd์—๊ฒŒ “์ด ํŒŒ์ผ์ด ์ด๋ฏธ์ง€๋‹ค”๋ผ๊ณ  ์•Œ๋ ค์ฃผ์–ด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ฑ„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ ์ด๋™:ย USB ๋“œ๋ผ์ด๋ธŒ์—์„œย nginx_image.tarย ํŒŒ์ผ์„ ์„œ๋ฒ„ ๋‚ด๋ถ€์˜ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.
  2. ์ด๋ฏธ์ง€ ๋กœ๋“œ (Import):ย ctrย ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Tarball ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    # ํ˜•์‹: ctr image import <๊ฒฝ๋กœ/์ด๋ฏธ์ง€ํŒŒ์ผ๋ช….tar>
    sudo ctr image import /mnt/usb/nginx_image.tar
    

3. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ

  1. ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰:ย ๋กœ์ปฌ์— ๋กœ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    # ctr run [์ด๋ฏธ์ง€ ์‹๋ณ„์ž]
    # ์ฃผ์˜: ์ด๋ฏธ์ง€ ์‹๋ณ„์ž(Image Digest)๋Š” ๋กœ๋”ฉ ํ›„ ์ถœ๋ ฅ์„ ํ†ตํ•ด ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    sudo ctr run [๋กœ์ปฌ ์ด๋ฏธ์ง€ Digest ๋˜๋Š” ์ด๋ฆ„]
    
  2. ์‹คํ–‰ ํ™•์ธ:ย ์„œ๋ฒ„์˜ ๋ฐฉํ™”๋ฒฝ ๋ฐ ๋„คํŠธ์›Œํ‚น ์ •์ฑ…์— ๋”ฐ๋ผ ํฌํŠธ ํฌ์›Œ๋”ฉ ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IV. ๐Ÿ”ต 2๋‹จ๊ณ„: ํ์‡„๋ง Windows ํ™˜๊ฒฝ (WSL2 ๊ธฐ๋ฐ˜)

๐Ÿšซ ํ์‡„๋ง ํ™˜๊ฒฝ์„ ์œ„ํ•œ containerd ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

(Windows ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ WSL2 ๋ฆฌ๋ˆ…์Šค ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด์—์„œ Linux ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

1. WSL2 ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ์ ๊ฒ€

  1. WSL2 ์„ค์น˜:ย Windows์— WSL2๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ง„์ž…:ย WSL2 ๋‚ด๋ถ€์˜ ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„ (์˜ˆ: Ubuntu ํ„ฐ๋ฏธ๋„)๋กœ ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ค€๋น„:ย ํ•„์š”ํ•œ ๋„๊ตฌ(containerd.io,ย docker-ceย ๋“ฑ)๋ฅผ WSL2 ๋‚ด๋ถ€์—์„œ ์„ค์น˜ํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

2. ๋กœ์ปฌ ์ด๋ฏธ์ง€ ์ฃผ์ž… (Load Image)

  1. ํŒŒ์ผ ๊ฒฝ๋กœ ํ™•์ธ:ย WSL2 ํ™˜๊ฒฝ ๋‚ด๋ถ€์—์„œ USB ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๋งˆ์šดํŠธ๋œ ์ •ํ™•ํ•œ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ:ย /media/usb/)
  2. ์ด๋ฏธ์ง€ ๋กœ๋“œ:ย WSL2 ๋‚ด๋ถ€์˜ ํ„ฐ๋ฏธ๋„์—์„œ Linux ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    # ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ๋ช…๋ น์–ด (WSL ๋‚ด๋ถ€์—์„œ ์‹คํ–‰)
    sudo ctr image import /mnt/usb/nginx_image.tar
    

3. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ

  1. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰:ย ๋กœ์ปฌ๋กœ ์ฃผ์ž…๋œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    # (WSL ๋‚ด๋ถ€) ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
    sudo ctr run [๋กœ์ปฌ ์ด๋ฏธ์ง€ Digest ๋˜๋Š” ์ด๋ฆ„]
    

V. ๊ณตํ†ต ์ปจํ…Œ์ด๋„ˆ ์šด์˜ ์‹ค์Šต (ํ์‡„๋ง ํ™˜๊ฒฝ)

์ž‘์—… ๋ช…๋ น์–ด ์˜ˆ์‹œ ์„ค๋ช…
์ƒํƒœ ํ™•์ธ sudo ctr images ๋กœ์ปฌ์— ์ €์žฅ๋œ ๋ชจ๋“  ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ํ™•์ธ sudo ctr pods ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ ํ™•์ธ docker logs <container_id> ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ์ ์„ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค.
์‚ญ์ œ docker rm <container_id> ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์ค‘์š” ์ฃผ์˜์‚ฌํ•ญ:ย ํ์‡„๋ง ํ™˜๊ฒฝ์—์„œ๋Š”ย docker๋‚˜ย containerdย ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ž์ฒด์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ ์ข…์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Runtime Dependencies)๋„ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•˜๊ณ  ์‹œ์Šคํ…œ์— ๋ฐฐํฌํ•ด์•ผ ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.