## ๐Ÿณ [[Docker]] ์ด๋ฏธ์ง€ ๋‹ค์ด์–ดํŠธ์˜ ์‹œ์ž‘: `docker history`๋กœ ์กฑ๋ณด ํŒŒํ—ค์น˜๊ธฐ {#sec-168deae1dd0f} ๋ถ„๋ช… ๊ฐ€๋ฒผ์šด ์•ฑ ํ•˜๋‚˜ ๋„์› ์„ ๋ฟ์ธ๋ฐ, ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰์„ ํ™•์ธํ•ด ๋ณด๋ฉด 1GB๊ฐ€ ํ›Œ์ฉ ๋„˜์–ด์žˆ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "์•„๋‹ˆ, ๋‚ด๊ฐ€ ๋ญ˜ ๋„ฃ์—ˆ๋‹ค๊ณ ?" ์‹ถ์–ด ๋‹นํ™ฉ์Šค๋Ÿฝ์ฃ . ์ด๋Ÿด ๋•Œ ํ•„์š”ํ•œ ๊ฒŒ ๋ฐ”๋กœ ์ด๋ฏธ์ง€์˜ '์กฑ๋ณด'๋ฅผ ๊นŒ๋ณด๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ![docker-layer-diet](/media/whitedec/blog_img/de42f6f1949c4e91bc6defa030f10ea5.webp) ## "๋„ˆ ๋„๋Œ€์ฒด ๋ญ˜ ๋จน๊ณ  ์ด๋ ‡๊ฒŒ ์ปค์กŒ๋‹ˆ?" {#sec-5eaafdc2833e} Docker ์ด๋ฏธ์ง€๋Š” ๊ฒน๊ฒน์ด ์Œ“์ธ ์–‘ํŒŒ ๊ป์งˆ(๋ ˆ์ด์–ด)๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. `docker history`๋Š” ์ด ๊ป์งˆ์„ ํ•˜๋‚˜์”ฉ ๋ฒ—๊ฒจ์„œ ๋ฒ”์ธ์„ ์ฐพ์•„๋‚ด๋Š” ์—‘์Šค๋ ˆ์ด ๊ฐ™์€ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์€ ์•„์ฃผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ```bash # ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• docker history [์˜ต์…˜] <์ด๋ฏธ์ง€ ์ด๋ฆ„:ํƒœ๊ทธ> # ์˜ˆ์‹œ: ๋‚ด ์•ฑ์˜ ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ docker history my-app:latest ``` ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์ตœ์‹  ๋ ˆ์ด์–ด๋ถ€ํ„ฐ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๊นŒ์ง€ ์—ญ์ˆœ์œผ๋กœ ์ซ™ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ```text IMAGE CREATED CREATED BY SIZE a6215f271958 5 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B 7 weeks ago /bin/sh -c #(nop) ADD file:f28242cf608f6... 7.81MB ``` ์—ฌ๊ธฐ์„œ **SIZE** ํ•ญ๋ชฉ์„ ์œ ์‹ฌํžˆ ๋ณด์„ธ์š”. 0B์—ฌ์•ผ ํ•  ๊ณณ์— ์ˆ˜๋ฐฑ MB๊ฐ€ ์ฐํ˜€ ์žˆ๋‹ค๋ฉด? ๊ทธ ๋…€์„์ด ๋‹ค์ด์–ดํŠธ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ๊ฒฝํ—˜์œผ๋กœ ๋ณด๋‹ค๋ณด๋ฉด '์ด์ƒํ•œ ๋ƒ„์ƒˆ๊ฐ€ ๋‚˜๋Š” ๊ณณ"์ด ๋ถ„๋ช…ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. > \*\*๐Ÿ’ก ์œ ์šฉํ•œ ํŒ: `--no-trunc** ` > > ๊ธฐ๋ณธ ์ถœ๋ ฅ์€ ๋ช…๋ น์–ด๊ฐ€ ๊ธธ๋ฉด ์ค‘๊ฐ„์— ์ž˜๋ฆฝ๋‹ˆ๋‹ค. ์ด๋•Œ `--no-trunc` ์˜ต์…˜์„ ๋ถ™์ด๋ฉด ์ž˜๋ฆผ ์—†์ด ์ „์ฒด ๋ช…๋ น์–ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ์ •ํ™•ํ•œ ๋ถ„์„์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. > > `docker history --no-trunc my-app:latest` *** ## ์‹ค์ „ ์‚ฌ๋ก€: "๋ฒ”์ธ์€ `chown`์ด์—ˆ๋‹ค" {#sec-036665971432} ์‹ค์ œ๋กœ ์ œ๊ฐ€ ๊ฒช์—ˆ๋˜ ์‹คํ™” ํ•˜๋‚˜ ๋“ค๋ ค๋“œ๋ฆด๊ฒŒ์š”. 150MB์งœ๋ฆฌ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋นŒ๋“œํ–ˆ๋Š”๋ฐ ์ด๋ฏธ์ง€๊ฐ€ 300MB๊ฐ€ ๋„˜๊ฒŒ ๋‚˜์˜ค๋Š” ๊ธฐ์ดํ•œ ํ˜„์ƒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ”์ธ์€ ๋ฐ”๋กœ ์•„์ฃผ ํ‰๋ฒ”ํ•ด ๋ณด์ด๋Š” Dockerfile ๋‘ ์ค„์ด์—ˆ์ฃ . **[๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•: ๋ ˆ์ด์–ด 2๊ฐœ ์ƒ์„ฑ]** ```dockerfile # 1. ํŒŒ์ผ์„ ์ผ๋‹จ ๋ณต์‚ฌ (๊ธฐ๋ณธ์ ์œผ๋กœ root ์†Œ์œ ๋กœ ๋ณต์‚ฌ๋จ) COPY . . # 2. ๋ณด์•ˆ์„ ์œ„ํ•ด ์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ (๋ณ„๋„ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰) RUN chown -R appuser:appgroup /app ``` ์ด๊ฑธ ๋นŒ๋“œํ•œ ๋’ค `docker history`๋กœ ํ™•์ธํ•ด ๋ณด๋‹ˆ ์ด๋Ÿฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ```text IMAGE CREATED BY SIZE /bin/sh -c chown -R appuser:appgroup /app 150MB <-- (๋ฌธ์ œ์˜ ์ง€์ !) /bin/sh -c #(nop) COPY dir:abc in /app 150MB ``` ์—ฌ๊ธฐ์„œ Docker ๋ ˆ์ด์–ด์˜ ๋ฌด์„œ์šด ์ ์ด ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. 1๋‹จ๊ณ„์—์„œ 150MB ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ฉด ๋ ˆ์ด์–ด ํ•˜๋‚˜๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 2๋‹จ๊ณ„์—์„œ `chown`์„ ์‹คํ–‰ํ•˜๋ฉด, Docker๋Š” "์–ด? ํŒŒ์ผ ์ •๋ณด(์†Œ์œ ๊ถŒ)๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋„ค? ๊ทธ๋Ÿผ ๋ฐ”๋€ ์ƒํƒœ๋กœ ๋ ˆ์ด์–ด ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์•ผ์ง€!"๋ผ๋ฉฐ ๊ธฐ์กด 150MB๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด๋ฅผ ์Œ“์•„๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ๋‚ด์šฉ๋ฌผ์€ ๋˜‘๊ฐ™์€๋ฐ ์†Œ์œ ๊ถŒ๋งŒ ๋‹ค๋ฅธ ํŒŒ์ผ์ด 2์ค‘์œผ๋กœ ์ €์žฅ๋˜์–ด ์šฉ๋Ÿ‰์ด 2๋ฐฐ๊ฐ€ ๋œ ๊ฑฐ์ฃ . *** ## ํ•ด๊ฒฐ์€ ํ•œ ์ค„ ๋‹ค์ด์–ดํŠธ! {#sec-b564ee91d4d9} ํ•ด๊ฒฐ์ฑ…์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ณต์‚ฌํ•  ๋•Œ ์• ์ดˆ์— ์†Œ์œ ๊ถŒ์„ ์ง€์ •ํ•ด์„œ ๋ ˆ์ด์–ด๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋ฉด ๋์ž…๋‹ˆ๋‹ค. **[ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•: ๋ ˆ์ด์–ด 1๊ฐœ ์ƒ์„ฑ]** ```dockerfile # ๋ณต์‚ฌ์™€ ๋™์‹œ์— ์†Œ์œ ๊ถŒ๊นŒ์ง€ ์ง€์ •! COPY --chown=appuser:appgroup . . ``` Dockerfile์„ ์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ `docker history`๋ฅผ ์ฐ์–ด๋ณด๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋“œ๋ผ๋งˆํ‹ฑํ•ฉ๋‹ˆ๋‹ค. ```text IMAGE CREATED BY SIZE /bin/sh -c #(nop) COPY --chown=appuser... dir:abc 150MB ``` ๋ณด์ด์‹œ๋‚˜์š”? ๋‹จ ํ•˜๋‚˜์˜ ๋ ˆ์ด์–ด๋งŒ ์ƒ์„ฑ๋˜์—ˆ๊ณ , ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰์€ ๋‹ค์‹œ ๋‚ ์”ฌํ•˜๊ฒŒ 150MB๋กœ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ๋‘ ์ค„์„ ํ•œ ์ค„๋กœ ํ•ฉ์ณค์„ ๋ฟ์ธ๋ฐ ์šฉ๋Ÿ‰์ด ์ ˆ๋ฐ˜์ด ๋œ ๊ฑฐ์ฃ . *** ## ๊ฒฐ๋ก : ๋นŒ๋“œ ํ›„์—” ๋ฌด์กฐ๊ฑด 'ํžˆ์Šคํ† ๋ฆฌ' ์ฒดํฌ! {#sec-74645a10d229} [[Docker]] ์ด๋ฏธ์ง€๋Š” **๋ช…๋ น์–ด ํ•œ ์ค„๋‹น ๋ ˆ์ด์–ด ํ•œ ์ธต**์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ๋‚˜์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋“ฏ, ๋นŒ๋“œ ํ›„์—๋Š” ์Šต๊ด€์ ์œผ๋กœ `docker history --no-trunc`๋ฅผ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”. "์ด `apt-get`์€ ์™œ ์ด๋ ‡๊ฒŒ ๋ฌด๊ฑฐ์›Œ?", "์ด ๋ ˆ์ด์–ด๋Š” ์™œ ๊ตณ์ด ๋‚˜๋ˆด์ง€?"๋ผ๋Š” ์˜๋ฌธ์ด ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๋‹ค ๋ณด๋ฉด, ์–ด๋А์ƒˆ ์•„์ฃผ ๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ณ„์‹ค ๊ฒ๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ด์–ด๋Š” ์‹œ์Šคํ…œ์˜ ์ ์ด๋‹ˆ๊นŒ์š”! *** **๋„์›€์ด ๋˜์…จ๋‚˜์š”?** ๋„์›€์ด ๋˜์…จ์œผ๋ฉด ์ข‹์•„์š”! ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ด€๋ จ๊ธ€๋„ ์ฝ์–ด๋ณด์„ธ์š”. **๊ด€๋ จ๊ธ€** [Docker ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ (shm_size์™€ ipc) ์™„๋ฒฝ ์ดํ•ดํ•˜๊ธฐ](/ko/whitedec/2025/11/5/docker-shm-size-ipc/) [Docker: ๋„คํŠธ์›Œํฌ ๊ณต์œ  ์—†์ด ํ˜ธ์ŠคํŠธ ํฌํŠธ๋กœ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ํ•˜๊ธฐ](/ko/whitedec/2025/11/4/docker-host-port-container-communication/) [๋„์ปค ๋ณผ๋ฅจ(Volume) ๋ณต์‚ฌ, โ€˜์™œโ€™ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?](/ko/whitedec/2025/11/10/docker-volume-copy-reason/)