๐ŸŒฑ ์ธํ”„๋Ÿฐ/โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ)

[๋ฏธ์…˜5] ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์‚ฌ๋ก€ ์‹ค์Šต

mallin 2025. 6. 16. 01:10

1. ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค์—์„œ ๋ฐ›์•˜์„ ๋•Œ์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๋ฐ›์•˜์„ ๋•Œ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค๋ฅธ ์ด์œ 

  • dockerhub ์— ์˜ฌ๋ผ๊ฐ€์ ธ ์žˆ๋Š” ์ด๋ฏธ์ง€ํฌ๊ธฐ์™€ ๋„์ปค, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค
  • dockerhub : 248.2MB
  • ๋„์ปค : 490MB
  • containerd : 248.3MiB

 

1-1. ์ถ”๋ก 

1. Container Image๋ฅผ ๋งŒ๋“ค ๋•Œ ํ”Œ๋žซํผ(amd64, arm64)์„ ๊ณ ๋ คํ•ด์•ผ ๋˜๋Š”๋ฐ, Docker์—์„œ๋Š” amd64๋ฅผ ๋ฐ›์•˜๊ณ , Kuberentes์—์„œ arm64๋ฅผ ๋ฐ›์•„์„œ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์กŒ์„ ๊ฒƒ์ด๋‹ค.

  • ํ•ด๋‹น ์ด๋ฏธ์ง€๋Š” Mac M ์‹œ๋ฆฌ์ฆˆ๋‚˜ Window ์œ ์ €๊ฐ€ ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ƒ์„ฑ
  • Docker ์—๋Š” amd64, Containerd ๋Š” amd64์™€ arm64 ๋‘˜๋‹ค ์žˆ์ง€๋งŒ, Containerd ์˜ ์šฉ๋Ÿ‰์ด ๋” ์ž‘๋‹ค

→ ํ˜„์žฌ๋กœ์„  ์ •๋‹ต์ด ์•„๋‹˜

 

 

2. Container ์ด๋ฏธ์ง€๋Š” ๊ฐ๊ฐ์˜ Layer๋กœ ๊ตฌ์„ฑ๋ผ ์žˆ๋Š”๋ฐ, Docker์—์„œ ๋‹ค์šด ๋ฐ›์„ ๋•Œ๋Š” ์ „์ฒด Layer๋ฅผ ๋ฐ›์•˜๊ณ , Kubernetes์—๋Š” ๊ธฐ์กด ์ด๋ฏธ์ง€์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” Layer๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ ๋ฐ›์€ ์ด๋ฏธ์ง€์˜ Size๊ฐ€ ์ž‘๊ฒŒ ์กฐํšŒ ๋์„ ๊ฒƒ์ด๋‹ค.

  • Docker ์ด๋ฏธ์ง€ → ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ์‹œ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์•ฝ๊ฐ„ ์ž‘์•„์กŒ์ง€๋งŒ, ์ฐจ์ด๋Š” ์—†์Œ
  • ๊ทธ ํŒŒ์ผ์„ Containerd ๋กœ Import ํ–ˆ์„ ๋•Œ๋„ ์‚ฌ์ด์ฆˆ ๋ณ€ํ™”๋Š” ์—†์Œ
  • Containerd ์ด๋ฏธ์ง€ → Docker ๋กœ ๋„ฃ์—ˆ์„ ๋• ์ด๋ฏธ์ง€๊ฐ€ ์ฆ๊ฐ€

→ Docker ์—์„œ Containerd ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ”์„ ๋•Œ Size ๊ฐ€ ๊ทธ๋Œ€๋กœ์ด๊ณ , ๋ฐ˜๋Œ€๋กœ Containerd ์—์„œ Docker ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ”์„ ๋•Œ Size ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์›์ธ์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

 

 

3. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๋Š” ๋‹ค๋ฅธ Runtime์„ ์‚ฌ์šฉ ํ–ˆ์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐ™์€ ์ด๋ฏธ์ง€๋”๋ผ๋„ ์‚ฌ์šฉํ•˜๋Š” Runtime์— ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋Š” ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๋‹ค.

  • Docker ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์šด ๋ฐ›์€ ์ดํ›„ ์ž์‹ ์˜ ๋งคํƒ€๋ฐ์ดํ„ฐ ๊ทœ๊ฒฉ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ตฌ์„ฑ → ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง
  • Container ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™”์„ ๋•Œ๋„ ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ตฌ์„ฑ → ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง
  • Docker → Contained ๋กœ ๊ฐ€์ ธ๊ฐ”์„ ๋• Docker ์—์„œ ์žฌ๊ตฌ์„ฑํ•˜๋А๋ผ ์ปค์ง„ ๋ถˆํ•„์š”ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์ด ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€์ง

 

1-2. ๊ฒฐ๋ก 

  • ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋ฏธ์ง€๋“ค์„ ๋‹ค์šด ๋ฐ›์•„์„œ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋ณต์‚ฌ ํ•ด์•ผ ํ•œ๋‹ค
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ Contaienrd๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Docker๋กœ ๋ฐ›์€ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•ด ๋„ฃ์„ ๊ฒฝ์šฐ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง€๊ฒŒ ๋œ๋‹ค.

2. Docker ์™€ Containerd ๋ช…๋ น ์‹ค์Šต

2-1. ๋ฌธ์ œ

๐Ÿ”ฅ
Docker Hub ์—์„œ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋“ค์„ ๋‹ค์šด๋ฐ›์„ ๋•Œ ๋„์ปค์—์„œ “toomanyrequests” ์—๋Ÿฌ ๋ฐœ์ƒ
→ ๋„์ปค ํ—ˆ๋ธŒ ์ •์ฑ…์ƒ ์ต๋ช…์œ ์ €์˜ ๊ฒฝ์šฐ IP ๊ธฐ๋ฐ˜์œผ๋กœ 6์‹œ๊ฐ„ ๋™์•ˆ 100๋ฒˆ ๋‹ค์šด
→ ๋กœ๊ทธ์ธ์œ ์ €์˜ ๊ฒฝ์šฐ IP ๊ธฐ๋ฐ˜์œผ๋กœ 200๋ฒˆ์„ ๋‹ค์šด ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒ
  • ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ ค๋ฉด 6์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค
  • ์กฐ๊ธˆ ๋” ๋นจ๋ฆฌ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด ๊ฐœ์ธ ๋…ธํŠธ๋ถ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด ๋ฐ›๊ณ , ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„๋กœ ๋ณต์‚ฌํ•ด์•ผ ํ•œ๋‹ค

  • ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ [๋„์ปค 6] > [๋„์ปค 7] > [์ปจํ…Œ์ด๋„ˆ 7] ์ˆœ์œผ๋กœ ์ž‘์—…
  • ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์“ฐ๋Š” ๋ช…๋ น์–ด๋“ค ์œ„์ฃผ๋กœ ์ •๋ฆฌ

2-2. ๋„์ปค (Docker)

 

1. ๋นŒ๋“œ

docker build -t soyeon207/hello:1.0.0 .

 

2. ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ

docker image list

 

3. ํƒœ๊ทธ ๋ณ€๊ฒฝ

docker tag soyeon207/hello:1.0.0 soyeon207/hello:2.0.0

 

4-1. ๋กœ๊ทธ์ธ

docker login -u soyeon207

 

4-2. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

docker push 1pro/soyeon207:1.0.0

 

5. ์ด๋ฏธ์ง€ ์‚ญ์ œ

docker rmi soyeon207/hello:1.0.0
docker rmi soyeon207/hello:2.0.0

 

6. ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

docker pull soyeon207/hello:1.0.0

 

7. ์ด๋ฏธ์ง€ → ํŒŒ์ผ๋กœ ๋ณ€ํ™˜

docker save -o file.tar 1pro/hello:1.0.0
ls file.tar

 

์ด๋ฏธ์ง€ ์‚ญ์ œ

docker rmi soyeon207/hello:1.0.0

 

8. ํŒŒ์ผ → ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜

docker load -i file.tar
docker image list


2-3. ์ปจํ…Œ์ด๋„ˆ๋””

 

1. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์กฐํšŒ

ctr ns list

 

2. ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด ์ด๋ฏธ์ง€ ์กฐํšŒ

ctr -n k8s.io image list

 

3. ๋‹ค์šด๋กœ๋“œ ๋ฐ ์ด๋ฏธ์ง€ ํ™•์ธ

ctr images pull docker.io/soyeon207/hello:1.0.0
  • default ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋‹ค์šด
ctr ns list

ctr images list

 

4. ํƒœ๊ทธ ๋ณ€๊ฒฝ

ctr images tag docker.io/soyeon207/hello:1.0.0 docker.io/soyeon207/hello:2.0.0

 

ctr images list

 

5. ์—…๋กœ๋“œ

ctr image push docker.io/soyeon207/hello:2.0.0 --user soyeon207

 

6. ์ด๋ฏธ์ง€ > ํŒŒ์ผ๋กœ ๋ณ€ํ™˜

ctr -n default image export file.tar docker.io/soyeon207/hello:1.0.0

 

7. ํŒŒ์ผ > ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜

ctr -n k8s.io image import file.tar

ctr -n k8s.io image list | grep hello

 

8. ์‚ญ์ œ

ctr -n k8s.io image remove docker.io/soyeon207/hello:1.0.0
ctr -n k8s.io image list | grep hello