DevOps/๐Ÿ—ณ Docker

[Docker] Docker๊ฐ€ ํ•„์š”ํ•ด์ง„ ์ด์œ 

๋ฐ๋ธŒ๋กœ๊ทธ98 2024. 4. 11. 18:42

๋„์ปค๋ž€

๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”„๋กœ์ ํŠธ

 

๊ธฐ์กด์˜ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ 

ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์šด์˜์ฒด์ œ๋ฅผ ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ,

ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ์šด์˜์ฒด์ œ๋Š” ๊ฒŒ์ŠคํŠธ ์šด์˜์ฒด์ œ(Guest OS)๋ผ๊ณ  ํ•˜๊ณ , ๋Œ€ํ‘œ์ ์ธ ๊ฐ€์ƒํ™” ํˆด๋กœ VirtualBox, VMware ๋“ฑ์ด ์žˆ๋‹ค.

๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์กฐ

 

๊ฐ€์ƒ ๋จธ์‹ ์€ ๊ฒŒ์ŠคํŠธ ์šด์˜์ฒด์ œ๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ปค๋„์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋ฏ€๋กœ ๋ฐฐํฌํ•  ๋•Œ์˜ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ณ , ์—„์ฒญ๋‚œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ฑ๋Šฅ ์†์‹ค์˜ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

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

 

 

์›น ๊ฐœ๋ฐœ์—์„œ Docker๊ฐ€ ํ•„์š”ํ•ด์ง„ ์ด์œ 

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ง€ ์ƒ๊ฐํ•ด๋ณด๋Š” ๊ฒƒ์ด ์šฐ์„ ์ด๋‹ค. ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๊ฐ€์ƒํ™” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์ธ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

 

์†Œํ”„ํŠธ์›จ์–ด ์„œ๋น„์Šค๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ค๋ฉด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ€์ƒํ™”๋ฅผ ํ†ตํ•ด ์ž์›์„ ๋ถ„๋ฆฌํ•˜๋Š”๋ฐ, ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ ์œ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์„œ๋ฒ„ ๋น„์šฉ์„ ์ ˆ๊ฐํ•œ๋‹ค. ๊ฐ€์ƒํ™”(Virtualization)์„ ์‚ฌ์šฉํ•ด์„œ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•œ๋‹ค.

 

Virtual machine์— ๋น„ํ•ด ํšจ์œจ ์„ฑ๋Šฅ์ด ๋” ์ข‹์•„์ง„ ๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. 

์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๋‹ฌ๋ฆฌ ์šด์˜์ฒด์ œ ์ˆ˜์ค€์—์„œ ๊ฒฉ๋ฆฌ๋˜๊ณ , ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋„์ปค ์‹คํ–‰ ๋ฐฉ์‹

1. ๊ฐœ๋ฐœ์ž๊ฐ€ Dockerfile์„ ์ค€๋น„ํ•˜์—ฌ docker build ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.

2. Dockerfile ๋‚ด์˜ ์ง€์‹œ์–ด๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋ฉฐ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

๋„์ปคํŒŒ์ผ์„ ๋งŒ๋“ค๋ฉด ๋นŒ๋“œ๋˜์–ด ์‹คํ–‰๋œ๋‹ค.

 

3. ๋„์ปค ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ (์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๊ณผ ์šด์˜์— ์ค‘์š”)

docker image์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ Dockerfile ์ตœ์ ํ™” ์ „๋žต์—๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. -> ์‹ค์ œ ๋ฐฐํฌ ์ „ ์ฒดํฌํ•  ํฌ์ธํŠธ์ด๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ฑ๋Šฅ๊ณผ ๋น„์šฉ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

- ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๋„์ž…

- ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

- ํ•„์š” ์—†๋Š” ํŒŒ์ผ ์ œ๊ฑฐ

- ๋ ˆ์ด์–ด ์ˆ˜ ์ค„์ด๊ธฐ

- ๋„์ปค ํ—ˆ๋ธŒ(docker hub) ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ž˜๋œ ์ด๋ฏธ์ง€ ์ •๋ฆฌ (์šฉ๋Ÿ‰ ํ™•๋ณด)

- AWS์˜ Elastic Container Service ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ

 

 

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

 

 

์ฐธ๊ณ 

https://www.docker.com/blog/containers-and-vms-together/

 

Containers and VMs Together | Docker

Learn from Docker experts to simplify and advance your app development and management with Docker. Stay up to date on Docker events and new version

www.docker.com

https://www.docker.com/resources/what-container/

 

What is a Container? | Docker

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of s

www.docker.com