Search

Docker ์†Œ๊ฐœ

Docker

์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ
์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด์•„ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ 

Docker๋ž€?

Docker๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ธํ”„๋ผ์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker์˜ ์ฃผ์š” ํŠน์ง•

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

Docker์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

๊ตฌ์„ฑ ์š”์†Œ
์„ค๋ช…
Docker ์—”์ง„
์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ 
Docker ์ด๋ฏธ์ง€
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ ์˜์กด์„ฑ์„ ํฌํ•จํ•œ ํŒจํ‚ค์ง€
Docker ์ปจํ…Œ์ด๋„ˆ
์ด๋ฏธ์ง€์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ธ์Šคํ„ด์Šค
Docker Hub
์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์ €์žฅ์†Œ

Docker์˜ ์žฅ์ 

์žฅ์ 
์„ค๋ช…
๊ฐœ๋ฐœ ํ™˜๊ฒฝ ํ‘œ์ค€ํ™”
์„œ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ
์‹ ์†ํ•œ ๋ฐฐํฌ
์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ๋กœ ์‹œ๊ฐ„ ์ ˆ์•ฝ
์ž์› ํšจ์œจ์„ฑ
ํ•˜๋“œ์›จ์–ด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉ
๋ฒ„์ „ ๊ด€๋ฆฌ
์ด๋ฏธ์ง€ ๋ฒ„์ „ ๊ด€๋ฆฌ๋กœ ๋กค๋ฐฑ ์šฉ์ด

Docker์˜ ๋‹จ์ 

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

Docker ํ•™์Šต ์š”์†Œ

ํ•™์Šต ์š”์†Œ
๋‚ด์šฉ
๊ธฐ๋ณธ ๊ฐœ๋…
Docker ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ๋… ์ดํ•ด
๋ช…๋ น์–ด
docker run, build, pull, push ๋“ฑ ๊ธฐ๋ณธ ๋ช…๋ น์–ด ํ•™์Šต
Dockerfile
์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•œ Dockerfile ์ž‘์„ฑ๋ฒ• ์Šต๋“
Docker Compose
๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •์˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•
๋ณผ๋ฅจ ๊ด€๋ฆฌ
๋ฐ์ดํ„ฐ ์ง€์†์„ฑ์„ ์œ„ํ•œ ๋ณผ๋ฅจ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ
๋„คํŠธ์›Œํ‚น
์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  ๋ฐ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
Kubernetes, Docker Swarm ๋“ฑ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ

Docker ํ•™์Šต ์ˆœ์„œ ๊ฐ€์ด๋“œ

์ด ๊ฐ€์ด๋“œ๋Š” Docker๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ํ•™์Šต ์ˆœ์„œ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์„ ์ˆ˜ ํ•™์Šต ์š”์†Œ
โ€ข
ํ•™์Šต ์ˆœ์„œ

์„ ์ˆ˜ ํ•™์Šต ์š”์†Œ

Docker๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์„ ์ˆ˜ ์ง€์‹๋“ค์ž…๋‹ˆ๋‹ค.
์„ ์ˆ˜ ํ•™์Šต ์š”์†Œ
์ค‘์š”๋„
๋‚ด์šฉ
Linux ๊ธฐ๋ณธ ๋ช…๋ น์–ด
๋†’์Œ
ls, cd, mkdir, rm ๋“ฑ ๊ธฐ๋ณธ ์‰˜ ๋ช…๋ น์–ด์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ดํ•ด
๊ฐ€์ƒํ™” ๊ฐœ๋…
์ค‘๊ฐ„
๊ฐ€์ƒํ™”์˜ ๊ธฐ๋ณธ ์›๋ฆฌ์™€ ํ•˜์ดํผ๋ฐ”์ด์ €, ์ปจํ…Œ์ด๋„ˆ์˜ ์ฐจ์ด์  ์ดํ•ด
๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ
์ค‘๊ฐ„
IP, ํฌํŠธ, HTTP/HTTPS ํ”„๋กœํ† ์ฝœ, DNS ๋“ฑ์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด
Git ๊ธฐ์ดˆ
๋‚ฎ์Œ
๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด ์ดํ•ด
YAML ๋ฌธ๋ฒ•
์ค‘๊ฐ„
Docker Compose ๋ฐ ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑ์„ ์œ„ํ•œ YAML ํ˜•์‹ ์ดํ•ด
์›น ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜
๋‚ฎ์Œ
ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋“ฑ์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด
์ด๋Ÿฌํ•œ ์„ ์ˆ˜ ์ง€์‹์ด ์—†์–ด๋„ Docker ํ•™์Šต์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํŠนํžˆ Linux ๋ช…๋ น์–ด์™€ ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹์€ Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

ํ•™์Šต ์ˆœ์„œ

1. ๊ธฐ์ดˆ ๊ฐœ๋… ์ดํ•ด

Docker์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€, ๋ณผ๋ฅจ ๋“ฑ์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ
Docker์™€ ๊ฐ€์ƒ๋จธ์‹ ์˜ ์ฐจ์ด์ 
๊ธฐ์กด ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ๊ณผ Docker์˜ ์ฐจ์ด์  ํŒŒ์•…ํ•˜๊ธฐ
Docker ์„ค์น˜
์ž์‹ ์˜ ์šด์˜์ฒด์ œ์— ๋งž๊ฒŒ Docker ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ

2. ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์Šต๋“

์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ
docker run, start, stop, rm ๋“ฑ์˜ ๋ช…๋ น์–ด ํ•™์Šตํ•˜๊ธฐ
์ด๋ฏธ์ง€ ๊ด€๋ฆฌ
docker pull, push, images, rmi ๋“ฑ์˜ ๋ช…๋ น์–ด ์ตํžˆ๊ธฐ
Docker Hub ํ™œ์šฉ
๊ณต๊ฐœ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ ํƒ์ƒ‰ ๋ฐ ํ™œ์šฉํ•˜๊ธฐ

3. Dockerfile ์ž‘์„ฑ

Dockerfile ๋ฌธ๋ฒ•
FROM, RUN, COPY, ADD, EXPOSE ๋“ฑ์˜ ์ง€์‹œ์–ด ํ•™์Šตํ•˜๊ธฐ
์ด๋ฏธ์ง€ ๋นŒ๋“œ
docker build ๋ช…๋ น์–ด๋กœ ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ ์ƒ์„ฑํ•˜๊ธฐ
์ด๋ฏธ์ง€ ์ตœ์ ํ™”
๋ ˆ์ด์–ด ๊ฐœ๋… ์ดํ•ด ๋ฐ ํšจ์œจ์ ์ธ Dockerfile ์ž‘์„ฑ๋ฒ• ์ตํžˆ๊ธฐ

4. ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

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

5. ๋„คํŠธ์›Œํ‚น

๋„คํŠธ์›Œํฌ ์œ ํ˜•
bridge, host, overlay ๋“ฑ ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ๋ชจ๋“œ ์ดํ•ดํ•˜๊ธฐ
์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ 
์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๊ตฌ์„ฑํ•˜๊ธฐ
ํฌํŠธ ๋งคํ•‘
ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํฌํŠธ ์—ฐ๊ฒฐ ์„ค์ •ํ•˜๊ธฐ

6. Docker Compose

YAML ๋ฌธ๋ฒ•
Docker Compose ํŒŒ์ผ ํ˜•์‹ ํ•™์Šตํ•˜๊ธฐ
๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •์˜ํ•˜๊ธฐ
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ์„ค์ •
๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ๋งž๋Š” ์„ค์ • ๊ด€๋ฆฌํ•˜๊ธฐ

7. ์‹ค์ „ ํ”„๋กœ์ ํŠธ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆํ™”
๊ฐ„๋‹จํ•œ ์›น ์„œ๋น„์Šค Docker๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™
MySQL, MongoDB ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑํ•˜๊ธฐ
CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
GitHub Actions, Jenkins ๋“ฑ๊ณผ Docker ์—ฐ๋™ํ•˜๊ธฐ

8. ๊ณ ๊ธ‰ ์ฃผ์ œ

Docker Swarm
๊ธฐ๋ณธ์ ์ธ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ ํ•™์Šตํ•˜๊ธฐ
Kubernetes ์ž…๋ฌธ
์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์˜ ํ‘œ์ค€ ๋„๊ตฌ ์‚ดํŽด๋ณด๊ธฐ
๋ณด์•ˆ ๊ด€๋ จ ๊ณ ๋ ค์‚ฌํ•ญ
Docker ์ปจํ…Œ์ด๋„ˆ ๋ณด์•ˆ ๊ฐ•ํ™” ๋ฐฉ๋ฒ• ์ตํžˆ๊ธฐ
์ด ํ•™์Šต ๊ฒฝ๋กœ๋Š” ๊ฐœ์ธ์˜ ํ•™์Šต ์†๋„์™€ ๋ฐฐ๊ฒฝ์ง€์‹์— ๋”ฐ๋ผ ์กฐ์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ ์‹ค์Šต์„ ์ถฉ๋ถ„ํžˆ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.