Search

Container & Image

Date
2024/12/06
Category
Devops
Tag
Docker
๋ชฉ์ฐจ

ย Docker Image

ย What is Docker Image?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ณ  ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋„์ปค๋Š” ๋„์ปค ์ด๋ฏธ์ง€(Docker Image)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€๋Š” ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ๊ณผ ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ๋กœ, ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์ผ์ •์˜ ํ…œํ”Œ๋ฆฟ์ด๋‹ค

ย Layered Architecture

ย Layer

๋„์ปค ์ด๋ฏธ์ง€๋Š” ๋ ˆ์ด์–ด ๊ตฌ์กฐ(Layered Architecture)๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€๋Š” ๋‹ค์–‘ํ•œ ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋Š” ๋ชจ๋‘ ์ฝ๊ธฐ ์ „์šฉ(read-only)์ด๋‹ค. ๊ฐ ๋ ˆ์ด์–ด๋Š” ID๋ฅผ ๊ฐ€์ง€๋ฉฐ ํ•˜์œ„ ์ด๋ฏธ์ง€์˜ ๋ถ€๋ชจ ID๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด๋Š” ์ด์ „ ๋ ˆ์ด์–ด ์œ„์— ์Œ“์ด๋ฉฐ, ํ•˜์œ„ ๋ ˆ์ด์–ด์˜ ํŒŒ์ผ์„ ๋ฎ์–ด์“ธ(overwrite) ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฏธ์ง€๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง€(base image)๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” Linux์˜ ๋ถ€ํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ(bootfs)์„ ํฌํ•จํ•˜๋Š” ์ด๋ฏธ์ง€์ด๋‹ค(ํ˜ธ์ŠคํŠธ์šฉ ์•„๋‹˜). ์ด๋Ÿฐ ํŠน์ˆ˜ํ•œ ์ข…๋ฅ˜์˜ ์ด๋ฏธ์ง€๋Š” Dockerfile์—์„œ FROM scatch ์ •์˜๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.
์ตœ์ข… ๋ ˆ์ด์–ด๋Š” ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ(Writable) ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด ๋ ˆ์ด์–ด๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„๋‹ค. 1.0.0 ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ apache๋ผ๋Š” ์ด๋ฏธ์ง€๋Š” ID๊ฐ€ 3fa76543์ธ curl ์ด๋ฏธ์ง€์— ์˜์กดํ•œ๋‹ค. ์ด curl ์ด๋ฏธ์ง€๋Š” ์ด๋ฆ„์ด ์—†์–ด ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

ย Union File System

UnionFS(Union File System)์˜ ๋„์›€์œผ๋กœ ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋Š” ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ํ†ตํ•ฉ๋˜์–ด apache๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์ธ์‹ํ•˜์ง€๋งŒ, ๋ ˆ์ด์–ด๊ฐ€ ๋‹ค๋ฅธ ๋ ˆ์ด์–ด์˜ ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ๋ฉด, ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ(latest)์ด๋‚˜ ๊ฐ€์žฅ ์œ„(highest) ๋ฒ„์ „๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค(top to down).

ย Cache

์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ(Docker Hub, Artifactory ๋“ฑ)์— ํ‘ธ์‰ฌ๋˜๋ฉด Docker๋Š” ๊ฐ ๋ ˆ์ด์–ด์˜ ํ•ด์‹œ๋ฅผ ๊ธฐ์กด ๋ ˆ์ด์–ด์™€ ๋น„๊ตํ•œ๋‹ค. ์ด๋ฏธ ํ•ด๋‹น ๋ ˆ์ด์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ์ด ๋ ˆ์ด์–ด๋Š” ๋‹จ์ˆœํžˆ ์ฐธ์กฐ๋งŒ๋˜๊ณ  ๋‘ ๋ฒˆ ์ €์žฅ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์ด๋กœ ์ธํ•ด ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ์‹œ๋กœ, tomcat:8.5๋ฅผ pullํ•˜๊ณ  tomcat:9.0์„ pullํ•˜๋ฉด ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋œ ๋ ˆ์ด์–ด๋งŒ pullํ•˜๊ณ  ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ ˆ์ด์–ด๋Š” ์žฌ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ค‘๋ณต์œผ๋กœ pullํ•˜์ง€ ์•Š๋Š”๋‹ค.

ย Integrate Command

Dockerfile์˜ ๊ฐ ๋ช…๋ น์–ด๋Š” ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด ์ˆ˜์—๋Š” ์ œํ•œ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋ฅผ ๋ฌถ์–ด RUN command A && command B && command C ์ฒ˜๋Ÿผ ์‹คํ–‰ํ•ด ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ด์–ด ์ƒ์„ฑ์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.
๋”ฐ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ๋˜๋ฉด ๋ ˆ์ด์–ด๊ฐ€ ๊ทธ๋งŒํผ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋ ˆ์ด์–ด๋Š” ๊ฐ€์ƒ ์ƒ๋‹จ์˜ ๋ ˆ์ด์–ด๋งŒ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— &&๋ฅผ ํ†ตํ•ด์„œ overlay์‹œํ‚ค๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์‹คํ–‰ ๋ช…๋ น๋งŒ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ข… ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ์ž‘์•„์ง„๋‹ค.
RUN apt-get update && \ apt-get install -y package-name && \ rm -rf /var/lib/apt/lists/*
Docker
๋ณต์‚ฌ
์œ„ Dockerfile์ฒ˜๋Ÿผ ๋ฌถ์–ด ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์—…๋ฐ์ดํŠธ์™€ ํŒจํ‚ค์ง€ ์„ค์น˜, ๋ถˆํ•„์š”ํ•œ ์บ์‹œ ํŒŒ์ผ ์‚ญ์ œ๊ฐ€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋ ˆ์ด์–ด์—์„œ ์‹คํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด 3๊ฐœ์˜ ๋ ˆ์ด์–ด๊ฐ€ ์ €์žฅ๋  ๊ฒƒ์ด๋‹ค.

ย Docker Container

๋„์ปค๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ(read-only)์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€์˜ ๋ชจ๋“  ์ฝ๊ธฐ ์ „์šฉ ๋ ˆ์ด์–ด์™€ ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๊ณ ์œ ํ•œ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ(writable) ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด๋‹ค.
์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด์šฉ์€ ๋ฏธ๋ฆฌ ์ •์˜๋  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋‚˜์ค‘์— Log๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ PID ๋“ฑ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋–„๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์“ฐ๊ธฐ ๊ฐ€๋Šฅ ๋ ˆ์ด์–ด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
์ด ๊ฐœ๋…์€ ๋ชจ๋“  ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ํ™˜๊ฒฝ์ด ๋™์ผํ•˜๋„๋ก ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ-ํ…Œ์ŠคํŠธ-ํ”„๋กœ๋•์…˜ ๊ฐ„์— ์ถ”์  ๊ฐ€๋Šฅํ•˜๊ณ  ๊ตํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๋™์ผํ•œ ์ด๋ฏธ์ง€์™€ ๋™์ผํ•œ ๊ตฌ์„ฑ์œผ๋กœ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.