๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (166)

Unfazedโ—๏ธ๐ŸŽฏ

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์˜ ๊ธฐ๋ณธ ์›๋ฆฌ์™€ ๋ฉ”์ปค๋‹ˆ์ฆ˜

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ์—ญ์‚ฌ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ž๋ฐ”์—์„œ ์ฒ˜์Œ ์†Œ๊ฐœ๋œ ๊ธฐ์ˆ ๋กœ ์˜คํ•ดํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” 1960๋…„ MIT์—์„œ ๊ฐœ๋ฐœ๋œ ์–ธ์–ด ๋ฆฌ์Šคํ”„(LISP)๊ฐ€ ์ตœ์ดˆ๋กœ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์กด ๋งฅ์นด์‹œ๊ฐ€ ์ œ์‹œํ•œ 3๊ฐ€์ง€ ํ•ต์‹ฌ ๋ฌธ์ œ๋ฆฌ์Šคํ”„์˜ ์ฐฝ์‹œ์ž ์กด ๋งฅ์นด์‹œ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ 3๊ฐ€์ง€๋ฅผ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•ด์•ผ ํ•˜๋‚˜? (What to collect?)์–ธ์ œ ํšŒ์ˆ˜ํ•ด์•ผ ํ• ๊นŒ? (When to collect?)์–ด๋–ป๊ฒŒ ํšŒ์ˆ˜ํ•ด์•ผ ํ• ๊นŒ? (How to collect?)์™œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ดํ•ดํ•ด์•ผ ํ• ๊นŒ?ํ˜„๋Œ€์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ๋งค์šฐ ๋ฐœ๋‹ฌํ•ด์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ๋Š” ์ง์ ‘ ๊ฐœ์ž…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์™€ ๋ˆ„์ˆ˜ ..

Java 2025. 6. 23. 00:13
[๋‹จ์–ด ์ •๋ฆฌ] Proxy

์–ด์› ๋ถ„์„Proxy๋Š” ๋ผํ‹ด์–ด์—์„œ ์ถœ๋ฐœํ•œ ๋‹จ์–ด์ž…๋‹ˆ๋‹ค.๋ผํ‹ด์–ด ์–ด๊ทผ: "pro-" (๋Œ€์‹ ์—, ์•ž์—) + "curare" (๋Œ๋ณด๋‹ค, ๊ด€๋ฆฌํ•˜๋‹ค)์ค‘์„ธ ๋ผํ‹ด์–ด: "procurator" (๋Œ€๋ฆฌ์ธ, ๊ด€๋ฆฌ์ธ)์•ต๊ธ€๋กœ-ํ”„๋ž‘์Šค์–ด: "procuracie"์ค‘์„ธ ์˜์–ด: "procuracy" → ํ˜„๋Œ€ ์˜์–ด "proxy"ํ•ต์‹ฌ์€ "๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋Œ€์‹ ํ•ด์„œ ๋Œ๋ณธ๋‹ค"๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.์˜๋ฏธ์˜ ํ•ต์‹ฌ"Proxy"์˜ ๊ธฐ๋ณธ ์˜๋ฏธ๋Š” "๋Œ€๋ฆฌ, ๋Œ€์‹ "์ž…๋‹ˆ๋‹ค. ์›๋ž˜ ์žˆ์–ด์•ผ ํ•  ๊ฒƒ์˜ ์ž๋ฆฌ์—์„œ ๊ทธ ์—ญํ• ์„ ๋Œ€์‹  ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.๊ด€๋ จ ๋‹จ์–ด๋กœ ์ดํ•ดํ•˜๊ธฐ๊ฐ™์€ ์–ด๊ทผ์„ ๊ฐ€์ง„ ๋‹จ์–ด๋“ค:Procure (์กฐ๋‹ฌํ•˜๋‹ค) - ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์œ„ํ•ด ๊ตฌํ•ด์˜ค๋‹คProcurator (๊ด€๋ฆฌ์ธ) - ๋Œ€์‹  ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒProcedure (์ ˆ์ฐจ) - ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋น„์Šทํ•œ ๊ฐœ๋…์˜ ๋‹จ์–ด๋“ค:Substitute (๋Œ€..

JVM ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ

๊ฐ์ฒด ์ƒ์„ฑ์˜ ์ „์ฒด ๊ณผ์ •1. ํด๋ž˜์Šค ๋กœ๋”ฉ ๋ฐ ๊ฒ€์ฆ ๋‹จ๊ณ„Person person = new Person("Alice", 25); ์œ„ ํ•œ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ JVM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.์‹ฌ๋ณผ ์ฐธ์กฐ ํ™•์ธ: new ๋ฐ”์ดํŠธ์ฝ”๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ƒ์ˆ˜ ํ’€์˜ ์˜ฌ๋ฐ”๋ฅธ ํด๋ž˜์Šค ์ฐธ์กฐ์ธ์ง€ ํ™•์ธํด๋ž˜์Šค ์ƒํƒœ ๊ฒ€์ฆ: Person ํด๋ž˜์Šค๊ฐ€ ์ด๋ฏธ ๋กœ๋”ฉ(Loading), ํ•ด์„(Resolving), ์ดˆ๊ธฐํ™”(Initialization)๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•„์š”์‹œ ํด๋ž˜์Šค ๋กœ๋”ฉ: ์ค€๋น„๋˜์ง€ ์•Š์€ ํด๋ž˜์Šค๋ผ๋ฉด ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ํ†ตํ•ด ๋กœ๋”ฉ ์ˆ˜ํ–‰2. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋‹จ๊ณ„ํด๋ž˜์Šค ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ์ฒด ํฌ๊ธฐ๋ฅผ ์ •ํ™•ํžˆ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋‹ค์Œ์œผ๋กœ ํž™์—์„œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹(ํฌ์ธํ„ฐ ๋ฐ€์น˜๊ธฐ, ์—ฌ์œ  ๋ชฉ๋ก)์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.2.1. ํฌ..

Java 2025. 6. 17. 19:40
JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ

JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐJVM์˜ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ํฌ๊ฒŒ ์Šค๋ ˆ๋“œ ๊ณต์œ  ์˜์—ญ๊ณผ ์Šค๋ ˆ๋“œ ๊ฐœ๋ณ„ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ๋ฉ”์„œ๋“œ ์˜์—ญ (Method Area)ํž™ (Heap)์Šค๋ ˆ๋“œ๋ณ„ ๊ฐœ๋ณ„ ์˜์—ญํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ (PC Register)๊ฐ€์ƒ ๋จธ์‹  ์Šคํƒ (JVM Stack)๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ (Native Method Stack)๊ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ƒ์„ธ ๋ถ„์„1. ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ (PC Register)์—ญํ• : ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฐ”์ดํŠธ์ฝ”๋“œ์˜ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญํŠน์ง•:๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ์ž๋ฐ” ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์‹œ: ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น์–ด ์ฃผ์†Œ ์ €์žฅ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์‹œ: Undefined ์ƒํƒœ์œ ์ผํ•˜๊ฒŒ OutOfMemoryError ์กฐ๊ฑด์ด ๋ช…์‹œ๋˜์ง€ ์•Š์€ ์˜์—ญ2. ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ์Šคํƒ (..

Java 2025. 6. 17. 17:42
HTTP vs HTTPS

์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ฃผ์†Œ์ฐฝ์—์„œ http://์™€ https://์˜ URL ์Šคํ‚ด์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” HTTP์™€ HTTPS์˜ ์ฐจ์ด์ ๊ณผ HTTPS๊ฐ€ ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. HTTP (HyperText Transfer Protocol)๋ž€?HTTP๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›น์‚ฌ์ดํŠธ๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์ด ์š”์ฒญ์ด ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๊ณ , ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.HTTP์˜ ํŠน์ง•๊ธฐ๋ณธ ํฌํŠธ: 80๋ฒˆ๋ฐ์ดํ„ฐ๊ฐ€ ํ‰๋ฌธ(์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ)์œผ๋กœ ์ „์†ก๋น ๋ฅด๊ณ  ๋‹จ์ˆœํ•œ ํ†ต์‹ ๋ณด์•ˆ์„ฑ ๋ถ€์กฑ2. HTTPS (HTTP Secure)๋ž€?HTTPS๋Š” HTTP์— ๋ณด์•ˆ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—์„œ ์ฒ˜์Œ ๊ฐœ๋ฐœ..

HTTP 2025. 6. 12. 19:29
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MVCC ๋ชจ๋ธ: Oracle, MySQL, PostgreSQL์˜ ๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด

DBMS์—์„œ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋Œ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€(๋™์‹œ์„ฑ ์ œ์–ด)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.๋™์‹œ์„ฑ ์ œ์–ด์˜ ์ ‘๊ทผ ๋ฐฉ์‹๋™์‹œ์„ฑ ์ œ์–ด๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.๋น„๊ด€์  ์ž ๊ธˆ(Pessimistic Locking)์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ๊ฒƒ์„ ์ „์ œํ•˜๊ณ  ์ž ๊ธˆ์„ ๊ฑธ์–ด ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ์‹ex) Read/Write locks, 2PL(Two-Phase Locking)๋‚™๊ด€์  ์ž ๊ธˆ(Optimistic Locking)์ถฉ๋Œ์„ ํ—ˆ์šฉํ•˜๋˜ ํƒ์ง€ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ex) Logical clock, MVCC(Multi-Version Concurrency Control)2PL์˜ ํ•œ๊ณ„์ „ํ†ต์ ์ธ 2PL(Two-Phase Locking) ๋ฐฉ์‹์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž ..

[Java] String Pool

Java์˜ String Pool์€ JVM์ด ๋ฌธ์ž์—ด ๊ฐ์ฒด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ๋ฌธ์ž์—ด ๊ฐ’์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.๊ธฐ๋ณธ ๊ฐœ๋…String Pool(๋˜๋Š” String Constant Pool, String Intern Pool)์€ JVM์˜ ํž™ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์กด์žฌํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ณต๊ฐ„์œผ๋กœ, ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด ์ €์žฅ๋œ๋‹ค. String Pool์€ ๋ฌธ์ž์—ด์˜ ๋ถˆ๋ณ€์„ฑ(immutability)๊ณผ String interning์ด๋ผ๋Š” ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. 2. ๋ฌธ์ž์—ด ์ƒ์„ฑ ๋ฐฉ์‹๊ณผ String Pool1. ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ์ƒ์„ฑString s1 = "hello";String s2 = "hello"; JVM์€ str1์„ ์ƒ์„ฑํ•  ๋•Œ "..

Java 2025. 4. 9. 14:35
[Docker] Docker PostgreSQL ์—ฐ๊ฒฐ ๋ฌธ์ œ : localhost ๋ฐ”์ธ๋”ฉ ์šฐ์„ ์ˆœ์œ„์™€ 'role postgres does not exist' ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

Docker ๊ธฐ๋ฐ˜ PostgreSQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ DataGrip์—์„œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ ์‹œ "[28000] FATAL: role 'postgres' does not exist" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค.PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•˜๋˜, ๋ฐ์ดํ„ฐ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋ณผ๋ฅจ์— ์ €์žฅํ•˜๊ณ , ํ˜ธ์ŠคํŠธ์˜ 5432 ํฌํŠธ๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด 5432 ํฌํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค. ์ƒํƒœ๋„ ์ •์ƒ์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ Datagrip์—์„œ Test Connection์„ ์‹œ๋„ํ•ด ๋ณด์•˜๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด [28000] FATAL: role 'postgres' does not exist ์—๋Ÿฌ๊ฐ€..

Docker 2025. 4. 7. 19:29
[Docker] ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋… ๋ฐ ์‹คํ–‰ ๊ณผ์ •

Docker ์ด๋ฏธ์ง€์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ข…์†์„ฑ, ์„ค์ • ํŒŒ์ผ ๋“ฑ์„ ํฌํ•จํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์Šค๋ƒ…์ƒท๋‹จ์ˆœํ•œ ์ •์  ํŒŒ์ผ ๋ชจ์Œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ๋œ ๋ถˆ๋ณ€(immutable)์ธ ์ฒญ์‚ฌ์ง„์ฝ๊ธฐ ์ „์šฉ(read-only)์ธ ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ ˆ์ด์–ด๋Š” ์ด์ „ ๋ ˆ์ด์–ด ์œ„์— ์Œ“์ด๋Š” ํ˜•ํƒœ๋กœ ์ด๋ฏธ์ง€์˜ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์ŒDocker ์ปจํ…Œ์ด๋„ˆ์ด๋ฏธ์ง€์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ธ์Šคํ„ด์Šค์ด๋ฏธ์ง€ ์œ„์— ์ฝ๊ธฐ-์“ฐ๊ธฐ ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒ์„ฑ๋ฆฌ๋ˆ…์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ cgroups ๊ฐ™์€ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•ด ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ ๋ฐ ์ž์› ํ• ๋‹น์„ ๊ด€๋ฆฌ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ฃผ ํ”„๋กœ์„ธ์Šค(PID 1)์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋จ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์‹ค์ œ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจMySQL, Nginx..

Docker 2025. 4. 7. 14:06