๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Docker

02 Docker๋ž€?

by The Future Engineer, Lucy 2024. 9. 28.
728x90
๋ฐ˜์‘ํ˜•

โ€ป '์‹œ์ž‘ํ•˜์„ธ์š”! ๋„์ปค/์ฟ ๋ฒ„๋„คํ‹ฐ์Šค' ์ฑ…๊ณผ ๊ต์œก์„ ํ†ตํ•ด ๋“ค์€ ๋‚ด์šฉ, ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ† ๋Œ€๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

What is Docker?

Get an in-depth overview of the Docker platform including what it can be used for, the architecture it employs, and its underlying technology.

docs.docker.com

๋„์ปค ๋ช…๋ น์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์ „ ์šฐ์„  ์ปจํ…Œ์ด๋„ˆ์™€ ๋„์ปค์— ๋Œ€ํ•ด ๋จผ์ € ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์ปจํ…Œ์ด๋„ˆ๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹จ์ผ OS ์ปค๋„์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„๋œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€์ƒํ™” ์ƒํƒœ์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

Container vs. VM

VM์€ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์šด์˜์ฒด์ œ๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋ฒ„ ์œ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•˜์ดํผ๋ฐ”์ด์ €๋ž€ ๋‹จ์ผ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ VM์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. VM์œผ๋กœ ๋‹ค์–‘ํ•œ OS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์™„์ „ํžˆ ๋…๋ฆฝ๋œ ๊ณต๊ฐ„๊ณผ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ์€ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ ํ˜ธ์ŠคํŠธ์— ๋น„ํ•ด ์„ฑ๋Šฅ์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  VM์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ ๋˜ํ•œ ์ปค์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์€ VM์˜ ๋‹จ์ ์ž…๋‹ˆ๋‹ค.

์ด์— ๋น„ํ•ด ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•˜๋‚˜์˜ OS ์ปค๋„์„ ๊ณต์œ ํ•˜๋ฉด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„œ๋กœ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„์˜ ๊ฒฉ๋ฆฌ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์†์‹ค์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌ๊ฒŒ ๊ฒฝ๊ฐํ•˜๊ณ  ๊ทธ๋งŒํผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ƒ ๋จธ์‹ ์— ๋น„ํ•ด ๋” ๋งŽ์€ ์ˆ˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


VM๊ณผ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ์™œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ• ๊นŒ์š”? ์ด ๋•Œ ์“ฐ์ด๋Š” ๊ฒƒ์ด ๋„์ปค์ž…๋‹ˆ๋‹ค. ๋„์ปค ์ด์™ธ์—๋„ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๋„๊ตฌ๊ฐ€ ์žˆ์œผ๋‚˜, ํ˜„์žฌ ํ˜„์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ ๋„๊ตฌ๋Š” ๋„์ปค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ๋„์ปค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋„์ปค๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋„์™€์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ ๋ฐ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฃผ์–ด์ง„ ํ˜ธ์ŠคํŠธ์—์„œ ๋งŽ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€๋ณ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋ฏ€๋กœ ํ˜ธ์ŠคํŠธ์— ์„ค์น˜๋œ ๊ฒƒ์— ์˜์กดํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž‘์—… ์ค‘์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ณต์œ ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์–ป๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ”Œ๋žซํผ๊ณผ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

๋„์ปค ๊ตฌ์กฐ

๋„์ปค ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ๋„์ปค๋Š” client-server ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Docker client๋Š” Docker daemon๊ณผ ๋Œ€ํ™”ํ•˜๋ฉฐ, Docker daemon์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์ถ•, ์‹คํ–‰ ๋ฐ ๋ฐฐํฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.  Docker client์™€ daemon์€ ๊ฐ™์€ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker client์™€ daemon์€ REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UNIX ์†Œ์ผ“์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Docker daemon์ด Docker client๋กœ๋ถ€ํ„ฐ docker run์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฐ›์€ ๊ฒฝ์šฐ, ๋กœ์ปฌ์— ์ด๋ฏธ์ง€ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋ฉด API๋ฅผ ์ด์šฉํ•ด Registry์—์„œ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์•„ pullํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ ๋งํ•œ Docker daemon๊ณผ Docker client, Docker registry์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Docker daemon

Docker daemon์€ Docker API ์š”์ฒญ์„ ๋“ฃ๊ณ  ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋„คํŠธ์›Œํฌ, ๋ณผ๋ฅจ๊ณผ ๊ฐ™์€ Docker ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋„์ปค ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋‹ค๋ฅธ daemon๋“ค๊ณผ๋„ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

Docker client

Docker client๋Š” ๋„์ปค์™€ ๋งŽ์€ ๋„์ปค ์œ ์ €๋“ค์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋ณธ์  ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Docker daemon์— ๋ช…๋ น์–ด๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋„์ปค ๋ช…๋ น์–ด๋Š” Docker API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. Docker Client๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ daemon๊ณผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker registries

Docker registry๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋“ค์„ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Docker Hub๋Š” ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋„์ปค๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฐพ๋Š” pulblic registry์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ์ธ์˜ docker hub์— ํ‘ธ์‹œํ•œ ์ด๋ฏธ์ง€๋„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด์ƒ ์ปจํ…Œ์ด๋„ˆ์™€ ๋„์ปค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋„์ปค ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

'Docker' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

04 Docker ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ  (1) 2024.10.22
03 Docker ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ  (1) 2024.09.28
01 Docker ์„ค์น˜ํ•˜๊ธฐ  (1) 2024.09.28