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

TEAM STUDY/SERVER

๐Ÿ”ต์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ•์˜ 1์ฃผ์ฐจ - ๋„์ปค๋ž€ ?

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ”ต ๋„์ปค๋ž€ ?

 

๋„์ปค(Docker)๋ž€ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ํŠน์ •ํ•œ ์„œ๋น„์Šค๋ฅผ ํŒจํ‚ค์ง•ํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š”๋ฐ ์œ ์šฉํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. 

 

๋งŒ์•ฝ ์œˆ๋„์šฐ์—์„œ ๋ฆฌ๋ˆ…์Šค๋ฅผ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

  1. ์ €์žฅ๊ณต๊ฐ„์„ ๋‚˜๋ˆ„๊ณ  ๋‚˜์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์œˆ๋„์šฐ๋”ฐ๋กœ ๋ฆฌ๋ˆ…์Šค๋”ฐ๋กœ ์„ค์น˜ํ•ด์„œ ํ•œ๊ฐ€์ง€๋งŒ ๊ตฌ๋™์‹œํ‚ค๋Š” ๋ฉ€ํ‹ฐ๋ถ€ํŒ… ๋ฐฉ์‹.
  2. AWS์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํ“จํ„ฐ๋ฅผ ๋Œ€์—ฌํ•˜๋Š” ๋ฐฉ์‹.
  3. ๋ฒ„์ถ”์–ผ๋ฐ•์Šค๊ฐ™์€ ๊ฐ€์ƒ๋จธ์‹  ์†”๋ฃจ์…˜์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 

๊ฐ€์ƒ๋จธ์‹ ์€ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ด์šฉํ•ด Guest OS๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ๋ฅผ ๋ฉ”์ธ์œผ๋กœ ์“ฐ๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋Š” Host OS๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๊ณ 

์ด ์œ„์— Ubuntu๋ฅผ ๊ฐ€์ƒ๋จธ์‹ ์œ„์— ๊ตฌ๋™์‹œํ‚จ๋‹ค๋ฉด ์ด๋Š” Guest OS๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Guest OS๋ฅผ ๊ตฌ๋™์‹œํ‚ค๋ ค๋ฉด Host OS์—์„œ ์ž์›์„ ์ผ๋ถ€ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ Host OS๋„ ๋Š๋ ค์ง€๊ณ , Guest OS๋„ ์„ฑ๋Šฅ์ด ๊ทธ๋ฆฌ ์ข‹์€ ํŽธ์€ ์•„๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋„์ปค์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ญ๊ฐ€ ๋‹ค๋ฅผ๊นŒ?

๊ฐ€์ƒ๋จธ์‹ ์— ๋น„ํ•ด ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋‹ด๊ฒจ์„œ ๊ตฌ๋™๋œ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

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


๐Ÿ”ต ์ด๋ฏธ์ง€๋ž€ ?

 

๋„์ปค์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…์€ ์ปจํ…Œ์ด๋„ˆ์™€ ํ•จ๊ป˜ ์ด๋ฏธ์ง€๋ผ๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

 

์ด๋ฏธ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์„ค์ •๊ฐ’๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ƒํƒœ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๊ณ  ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Immutable).

์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ ์ƒํƒœ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€ํ•˜๋Š” ๊ฐ’์€ ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ์ด๋ฏธ์ง€์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ 

์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ ์ด๋ฏธ์ง€๋Š” ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์Šต๋‹ˆ๋‹ค.

 

ubuntu์ด๋ฏธ์ง€๋Š” ubuntu๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ 

MySQL์ด๋ฏธ์ง€๋Š” debian์„ ๊ธฐ๋ฐ˜์œผ๋กœ MySQL์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์‹คํ–‰ ๋ช…๋ น์–ด, ํฌํŠธ ์ •๋ณด๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ข€ ๋” ๋ณต์žกํ•œ ์˜ˆ๋กœ Gitlab ์ด๋ฏธ์ง€๋Š” centos๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ

ruby, go, database, redis, gitlab source, nginx๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ง๊ทธ๋Œ€๋กœ ์ด๋ฏธ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์˜์กด์„ฑ ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•˜๊ณ 

์ด๊ฒƒ์ €๊ฒƒ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

์ด์ œ ์ƒˆ๋กœ์šด ์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ•œ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ, ์ˆ˜์ฒœ๋Œ€์˜ ์„œ๋ฒ„๋„ ๋ฌธ์ œ์—†์Šต๋‹ˆ๋‹ค.

 

๋„์ปค๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Dockerfile์ด๋ผ๋Š” ํŒŒ์ผ์— ์ž์ฒด DSLDomain-specific language์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ

์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ณผ์ •์„ ์ ์Šต๋‹ˆ๋‹ค.

 

# vertx/vertx3 debian version
FROM subicura/vertx3:3.3.1
MAINTAINER chungsub.kim@purpleworks.co.kr

ADD build/distributions/app-3.3.1.tar /
ADD config.template.json /app-3.3.1/bin/config.json
ADD docker/script/start.sh /usr/local/bin/
RUN ln -s /usr/local/bin/start.sh /start.sh

EXPOSE 8080
EXPOSE 7000

CMD ["start.sh"]

 

์ด๊ฒƒ์€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์œ ์šฉํ•œ ์•„์ด๋””์–ด์ธ๋ฐ,

์„œ๋ฒ„์— ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด

๋” ์ด์ƒ ๊ทธ ๊ณผ์ •์„ ๋ธ”๋กœ๊น… ํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ์žฅ์— ์ ์ง€ ๋ง๊ณ  Dockerfile๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ด ํŒŒ์ผ์€ ์†Œ์Šค์™€ ํ•จ๊ป˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋˜๊ณ  ์›ํ•œ๋‹ค๋ฉด

๋ˆ„๊ตฌ๋‚˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ณผ์ •์„ ๋ณด๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ต ๋„์ปค์˜ ํŠน์ง• ?

 

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

๐Ÿ”ต ๋„์ปค์˜ ์žฅ์ 

 

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

์–ด๋–ค ํ”„๋กœ์ ํŠธ๋Š” ์Šคํ”„๋ง์œผ๋กœ ๋˜์–ด์žˆ๊ณ ,

๋˜ ๋‹ค๋ฅธ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋Š” NodeJS๋กœ ๋˜์–ด์žˆ๋‹ค๊ณ  ํ•ด๋ณด๋ฉด ์–ด๋–จ๊นŒ?

 

ํ•œ ์ปดํ“จํ„ฐ์—๋‹ค๊ฐ€ ์ด๊ฒƒ๋„ ์„ค์น˜ํ•˜๊ณ  ์ €๊ฒƒ๋„ ์„ค์น˜ํ•ด์•ผ ํ•˜๊ณ  ์ด๊ฒƒ ๋”ฐ๋กœ ์„ค์ •ํ•˜๊ณ  ์ €๊ฒƒ ๋”ฐ๋กœ ์„ค์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

์‚ฌ์‹ค ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์€ ์ข‹์ง€ ์•Š๋‹ค.

 

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

๐Ÿ”ต ๋ณผ๋ฅจ(๋ฐ์ดํ„ฐ)์„ ๊ณต์œ  ํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋กœ ๊ฐ™์ด ์“ธ ์ˆ˜๊ฐ€ ์—†๋‹ค.

 

  • docker volume
  • docker๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด container์•ˆ์—์„œ์˜ ๋ฐ์ดํ„ฐ ํœ˜๋ฐœ์„ฑ ๋•Œ๋ฌธ์— volume์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํ•˜๋‚˜์˜ ์„œ๋ฒ„์•ˆ์—์„œ๋„ ์—ฌ๋Ÿฌ๊ฐœ์˜ docker๊ฐ€ ๋Œ ์ˆ˜ ์žˆ๊ณ , ํŠน์ • docker์•ˆ์—์„œ ๋งŒ๋“ค์–ด์ง„ ํŒŒ์ผ์€, ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ด๋Ÿฐ ๋ถˆํŽธํ•จ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„ ์•ˆ์— ๋””์Šคํฌ๋ฅผ mount ํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • docker ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ธ์ œ๋“ ์ง€ ์ถ”๊ฐ€๋˜๊ณ  ์‚ญ์ œ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์— ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜๋“œ์‹œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๊ฐ€ ์•„๋‹Œ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

์ฐธ๊ณ  ์‚ฌ์ดํŠธ


 

728x90
๋ฐ˜์‘ํ˜•