[Docker] docker image์— ๋Œ€ํ•œ ์ดํ•ด์™€ ๊ด€๋ฆฌ

Docker image๋Š” Container runtime์— ํ•„์š”ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์„ค์ • ๊ฐ’ ๋“ฑ์„ ํฌํ•จํ•˜๊ณ 

๋ณ€๊ฒฝ๋˜๋Š” ์ƒํƒœ ๊ฐ’์„ ๋ณด์œ ํ•˜์ง€ ์•Š๊ณ (stateless)

๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.(Immutable, Read Only)

 

Docker image ๊ด€๋ จ ๋ช…๋ น์–ด workflow

 

 

์ด๋ฏธ์ง€ ๋‚ด๋ ค๋ฐ›๊ธฐ 

docker pull [options] name:[tag]

๋งŒ์•ฝ docker pull busybox ๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์นœ๋‹ค๋ฉด tag๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ latest, ๊ฒฝ๋กœ๋Š” docker.io/library ๋กœ ์„ค์ •๋œ๋‹ค.

์ฆ‰ ๊ธฐ๋ณธ์ ์œผ๋กœ docker.io๊ฐ€ default registry๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค.

 

์ด๋ฏธ์ง€์˜ ๊ตฌ์กฐ ํ™•์ธ

  • ์ด๋ฏธ์ง€๋Š” layer ๊ตฌ์กฐ์ด๋‹ค.
  • ๋งจ ์œ„์—์„œ ๋งํ–ˆ๋“œ์‹œ ์ด๋ฏธ์ง€๋Š” ๋ถˆ๋ณ€ ์ฆ‰, read only ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค
  • ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์šด๋ฐ›์€ base image๋Š” ์–ด๋–ป๊ฒŒ ๋‚ด๋ง˜๋Œ€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์„๊นŒ?
  • ๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒˆ๋กœ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์€ ์ƒˆ๋กœ์šด layer๊ฐ€ ์˜ฌ๋ผ๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

์ด๋ฏธ์ง€ PUSH

  • ๋ณธ์ธ ๊ณ„์ •์˜ Repository์— ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณธ์ธ ๊ณ„์ •์„ ์ด๋ฏธ์ง€๋ช… ์•ž์— ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ docker push ์ˆ˜ํ–‰ ์‹œ ๊ณ„์ •์œผ๋กœ ์ฐพ์•„๊ฐ€ ์ €์žฅ๋จ. 
  • ์ €์žฅ์†Œ์— ์ €์žฅํ•  ์ด๋ฏธ์ง€ ์ƒˆ๋กœ ์ƒ์„ฑ
docker image tag {์ด๋ฏธ์ง€๋ช…}:{ํƒœ๊ทธ} {๊ณ„์ •}/{์ด๋ฏธ์ง€๋ช…}:{ํƒœ๊ทธ}
  • ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅ์†Œ์— push
docker push {์ด๋ฏธ์ง€๋ช…}:{ํƒœ๊ทธ}