๐Ÿณ Docker ์—†์ด containerd ์‚ฌ์šฉ ๊ฐ€์ด๋“œ (OS๋ณ„ ๋ถ„๋ฆฌ)

 

I. ๊ฐœ์š” ๋ฐ ๊ณตํ†ต ๊ฐœ๋…

1. containerd์˜ ์—ญํ•  ์ดํ•ด (Container Runtime)

  • containerd๋Š” ์ปจํ…Œ์ด๋„ˆ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”ย ํ•ต์‹ฌ ์—”์ง„์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ย docker run์„ ์‹คํ–‰ํ•  ๋•Œ, ์‹ค์ œ๋กœ๋Š” Docker API๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์•„ย containerd์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ ,ย containerd๊ฐ€ ์ตœ์ข…์ ์œผ๋กœย runcย ๊ฐ™์€ ๋‚ฎ์€ ๋ ˆ๋ฒจ์˜ ๋Ÿฐํƒ€์ž„์—๊ฒŒ ์ž‘์—…์„ ์œ„์ž„ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์žฅ์ :ย ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋‚ฎ๊ณ , ์•ˆ์ •์„ฑ์ด ๋†’์•„ ์šด์˜ ํ™˜๊ฒฝ(Production)์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2. ํ•ต์‹ฌ ๋„๊ตฌ ์ดํ•ด

๋„๊ตฌ ์—ญํ•  ๋ชฉ์ 
containerd ํ•ต์‹ฌ ์—”์ง„ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ (์ €์žฅ์†Œ, ๋„คํŠธ์›Œํฌ, ํ”„๋กœ์„ธ์Šค).
skopeo ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์›๊ฒฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(Docker Hub ๋“ฑ)์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์‚ฌ/๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉ (๋งค์šฐ ์œ ์šฉ).
ctr CLI (Control Tool) containerd์˜ ๋‚ด๋ถ€ API๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ๋ช…๋ น์–ด ๋ผ์ธ ๋„๊ตฌ.

3. โš ๏ธ ์ค‘์š” ์ „์ œ ์กฐ๊ฑด (ํ•„๋…)

  • WSL2 ์‚ฌ์šฉ (Windows ์‚ฌ์šฉ์ž):ย Windows ํ™˜๊ฒฝ์—์„œ Linux ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด WSL2๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Root ๊ถŒํ•œ:ย ๋Œ€๋ถ€๋ถ„์˜ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ จ ์ž‘์—…์€ ๋†’์€ ์‹œ์Šคํ…œ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

II. Red Hat Linux ํ™˜๊ฒฝ (RHEL/Fedora ๋“ฑ)

๐Ÿš€ 1. ์„ค์น˜ ๋ฐ ์„ค์ •

# 1. containerd๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์„ค์น˜
sudo dnf install containerd.io

# 2. ์„œ๋น„์Šค ํ™œ์„ฑํ™” ๋ฐ ์‹œ์ž‘
sudo systemctl enable containerd
sudo systemctl start containerd

# 3. (ํ•„์š”์‹œ) ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์„ค์ • ํ™•์ธ (CRI-O ๋“ฑ ์‚ฌ์šฉ ์‹œ)

โš™๏ธ 2. Red Hat ํ™˜๊ฒฝ์—์„œ์˜ ์šด์˜ ์˜ˆ์‹œ (ํ‘œ์ค€)

Red Hat ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์€ย containerdย ์‚ฌ์šฉ์ด ๊ฐ€์žฅ ํ‘œ์ค€์ ์ž…๋‹ˆ๋‹ค.

# (์ƒ๋žต) ์ด๋ฏธ์ง€ ํ’€๋ง ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์˜ˆ์‹œ
# ์˜ˆ: nginx ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•
sudo ctr image pull docker.io/library/nginx:latest # containerd CLI ์‚ฌ์šฉ
sudo ctr run docker.io/library/nginx:latest

III. Windows ํ™˜๊ฒฝ (WSL2 ์‚ฌ์šฉ)

Windows์—์„œ๋Š” WSL2๋ฅผ ํ†ตํ•ด ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ , ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ์œ„ Red Hat ๊ฐ€์ด๋“œ์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป 1. WSL2 ์„ค์ •

# 1. WSL2 ์„ค์น˜ (Administrator ๊ถŒํ•œ์˜ PowerShell์—์„œ ์‹คํ–‰)
wsl --install

# 2. Linux ๋ฐฐํฌํŒ ์„ค์น˜ (Ubuntu ๋“ฑ)
# 3. ๋ฐฐํฌํŒ ๋‚ด๋ถ€๋กœ ์ง„์ž…ํ•˜์—ฌ Red Hat ๊ฐ€์ด๋“œ์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘์—… ์‹œ์ž‘

โš™๏ธ 2. Windows (WSL2) ์šด์˜ ์˜ˆ์‹œ

WSL2 ๋‚ด๋ถ€์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

# Ubuntu ๋‚ด๋ถ€ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ ๊ฐ€์ •
sudo dnf install containerd.io
# ... (๋‚˜๋จธ์ง€ ๋ช…๋ น์–ด๋Š” Red Hat ์„น์…˜๊ณผ ๋™์ผ)

IV. ๊ณตํ†ต ์šด์˜ ์ ˆ์ฐจ (์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ ์˜ˆ์‹œ)

๐Ÿณ Docker ์—†์ด containerd ์‚ฌ์šฉ ๊ฐ€์ด๋“œ (OS๋ณ„ ๋ถ„๋ฆฌ)

ํ™˜๊ฒฝ ์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

๐Ÿงฑ 1. ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ (Pull)

# Docker Hub์—์„œ nginx ์ตœ์‹  ๋ฒ„์ „์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
# (์‚ฌ์šฉํ•˜๋Š” CLI์— ๋”ฐ๋ผ 'docker pull' ๋˜๋Š” 'ctr image pull' ์‚ฌ์šฉ)
sudo docker pull nginx:latest

๐Ÿš€ 2. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ (Run)

# -d : ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰
# -p 8080:80 : ํ˜ธ์ŠคํŠธ ํฌํŠธ 8080์„ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ 80 ํฌํŠธ์— ์—ฐ๊ฒฐ
sudo docker run -d --name my_webserver -p 8080:80 nginx:latest

๐Ÿ” 3. ๋™์ž‘ ํ™•์ธ ๋ฐ ๋กœ๊ทธ ํ™•์ธ

# ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ
sudo docker ps

# ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ
sudo docker logs my_webserver

# ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€
sudo docker stop my_webserver

# ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
sudo docker rm my_webserver