๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[DevOps]/Docker

Docker - ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํฌํŠธ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ดํ•ดํ•˜๊ธฐ

by ํŒกํŽ‘ํ 2023. 6. 6.
728x90
๐Ÿ’ก Dockerfile์—์„œ EXPOSE 80์ด๋ผ๊ณ  ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์€ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ์‹ค์ œ๋กœ 80๋ฒˆ ํฌํŠธ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋์œผ๋กœ ์ง€๋‚œ ๊ธ€์„ ๋งˆ๋ฌด๋ฆฌํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํฌํŠธ๋ฅผ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

 

๋„์ปค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ช…๋ น์–ด

docker build .
docker build -t <imageName>:<Tag> .
  • "."์„ ์ž…๋ ฅํ•˜๋ฉด ๋„์ปค์—๊ฒŒ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ณณ๊ณผ ๋™์ผํ•œ ํด๋”์— Dockerfiler์ด ์กด์žฌํ•จ์„ ์•Œ๋ฆฐ๋‹ค.
  • ์•„๋ž˜๋Š” ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋นŒ๋“œ ๊ณผ์ •

  • ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋นŒ๋“œ ๊ณผ์ •์ด ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ๋‚˜์˜จ๋‹ค.

 

 

ํฌํŠธ ์—ฐ๊ฒฐ์„ ํฌํ•จํ•œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

docker run -p (๋กœ์ปฌ ๋จธ์‹  ํฌํŠธ):(๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํฌํŠธ) (image ์ด๋ฆ„)
  • ์ด๋ฏธ์ง€ ์ด๋ฆ„ ์•ž์— -p ํ”Œ๋ž˜๊ทธ๋ฅผ ๋„ฃ๋Š”๋‹ค.
  • -p ํ”Œ๋ž˜๊ทธ์˜ p๋Š” publish๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 
  •  ์ด๋ฅผ ํ†ตํ•ด ๋„์ปค์—๊ฒŒ ์—ฐ๊ฒฐํ•  ๋กœ์ปฌ ํฌํŠธ๋ฅผ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • -p ํ”Œ๋ž˜๊ทธ ๋‹ค์Œ์— ๋‚˜์˜ค๋Š” ์ฝœ๋ก (:)์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์—๋Š” ๋กœ์ปฌ ๋จธ์‹ ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  • ์˜ค๋ฅธ์ชฝ์—๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•  ํฌํŠธ๋ฅผ ๋„ฃ๋Š”๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด,

docker run -p 3000:80 (image ์ด๋ฆ„)

์€ ๋กœ์ปฌ ํฌํŠธ 3000๊ณผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํฌํŠธ 80๋ฒˆ์„ ์—ฐ๊ฒฐํ•จ์„ ๋œปํ•œ๋‹ค.

 

  • ์ฆ‰ ๋กœ์ปฌ์—์„œ localhost:3000๋ฒˆ์œผ๋กœ ์ ‘์†ํ•˜๋ฉด ๋„์ปค ๋‚ด๋ถ€์˜ 80๋ฒˆ ํฌํŠธ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.

 

 

์ปจํ…Œ์ด๋„ˆ ๊ฒ€์ƒ‰

docker ps
  • ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

 

 

์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€

docker stop (์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„)
  • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€์‹œํ‚จ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์€ docker ps ๋ช…๋ น์–ด๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ ˆ์ด์–ด ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜

  • ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ์žฌ๋นŒ๋“œํ•  ๋•Œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์˜ ๋ช…๋ น๊ณผ ๊ทธ ์ดํ›„์˜ ๋ชจ๋“  ๋ช…๋ น์ด ์žฌ์Šค์บ” ๋œ๋‹ค.

 

์ฒ˜์Œ ๋นŒ๋“œ ์‹œ ํ™”๋ฉด(docker build .)

 

๋‘ ๋ฒˆ์งธ ๋นŒ๋“œ ์‹œ ํ™”๋ฉด(docker build .)

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

 

 ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ๋„์ปค๋Š” ๋ณต์‚ฌํ•ด์•ผ ํ•  ํŒŒ์ผ์„ ์Šค์บ”ํ•  ๋•Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์œผ๋ฉด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํŒŒ์ผ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๋ฉด ๊ทธ ์ดํ›„์˜ ๋ชจ๋“  ํŒŒ์ผ์€ ๋‹ค์‹œ ๋ณต์‚ฌ๊ฐ€ ๋œ๋‹ค. ์ด๋Š” ๋นŒ๋“œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ถˆํ•„์š”ํ•œ ์žฌ๋นŒ๋”ฉ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ด๋ฉฐ, ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์†๋„๊ฐ€ ๋นŒ๋“œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค๋Š” ๋ง์ด๋‹ค. ์‹ค์Šต์—์„œ ์‚ฌ์šฉํ•˜๋Š” Dockerfile์„ ๋‹ค์‹œ ๋ณด์ž.

 

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

 

 ๊ธฐ์กด์—๋Š” ๋„์ปค ํŒŒ์ผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ํด๋”๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋‚˜์„œ npm install์„ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ, ์ƒˆ๋กœ ์ตœ์ ํ™”ํ•œ ๋ถ€๋ถ„์„ ๋ณด๋ฉด npm install์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— package.json ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์ดํ›„์— npm install์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ์ˆœ์„œ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. ์ฆ‰, ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ ์ „์— npm install ๋ ˆ์ด์–ด๋ฅผ ๋จผ์ € ๋งŒ๋“ฆ์œผ๋กœ์จ ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค npm install์„ ์žฌ์‹คํ–‰ํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์—†์•ด๋‹ค. 

 

 ์†Œ์Šค ์ฝ”๋“œ๋งŒ ๋ณ€๊ฒฝํ•œ ์ƒํƒœ๋กœ ์žฌ๋นŒ๋“œ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๋„์ปค๊ฐ€ package.json ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•œ๋‹ค. npm install ์ด์ „ ๋‹จ๊ณ„๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด npm install์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ดํ›„์— ๋ณ€๊ฒฝ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์žฌ๋นŒ๋”ฉ์ด ์ผ์–ด๋‚˜๋ฏ€๋กœ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์žฌ๋นŒ๋”ฉ์ด ์ด๋ค„์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 ์ด ์‹ค์Šต์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๊ผญ ํ•„์š”ํ•œ ์ตœ์ ํ™” ๋ฐฉ์‹์„ ์‰ฝ๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉฐ, ๋ ˆ์ด์–ด ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ข‹์€ ์˜ˆ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

 

 

์ฐธ๊ณ 

Udemy - Docker & Kubernetes : ์‹ค์ „๊ฐ€์ด๋“œ

728x90