๐ต ๋์ปค๋ ?
๋์ปค(Docker)๋ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ํน์ ํ ์๋น์ค๋ฅผ ํจํค์งํ๊ณ ๋ฐฐํฌํ๋๋ฐ ์ ์ฉํ ์คํ์์ค ํ๋ก๊ทธ๋จ์ด๋ค.
๋ง์ฝ ์๋์ฐ์์ ๋ฆฌ๋ ์ค๋ฅผ ์ฐ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
- ์ ์ฅ๊ณต๊ฐ์ ๋๋๊ณ ๋์ ์ฒ์๋ถํฐ ์๋์ฐ๋ฐ๋ก ๋ฆฌ๋ ์ค๋ฐ๋ก ์ค์นํด์ ํ๊ฐ์ง๋ง ๊ตฌ๋์ํค๋ ๋ฉํฐ๋ถํ ๋ฐฉ์.
- AWS์ ์ฌ์ฉํ์ฌ ์ปดํจํฐ๋ฅผ ๋์ฌํ๋ ๋ฐฉ์.
- ๋ฒ์ถ์ผ๋ฐ์ค๊ฐ์ ๊ฐ์๋จธ์ ์๋ฃจ์ ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
๊ฐ์๋จธ์ ์ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ์ด์ฉํด 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๋ก ๋์ด์๋ค๊ณ ํด๋ณด๋ฉด ์ด๋จ๊น?
ํ ์ปดํจํฐ์๋ค๊ฐ ์ด๊ฒ๋ ์ค์นํ๊ณ ์ ๊ฒ๋ ์ค์นํด์ผ ํ๊ณ ์ด๊ฒ ๋ฐ๋ก ์ค์ ํ๊ณ ์ ๊ฒ ๋ฐ๋ก ์ค์ ํด์ผ ํ ๊ฒ์ด๋ค.
์ฌ์ค ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ข์ง ์๋ค.
- ๊ฐ์ฅ ํฐ ์ฅ์ ์ ์ญ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฆฝ์ฑ์ด๋ค. ํธ์คํธ OS์๋, ๋ค๋ฅธ ์ปจํ ์ด๋์๋ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์ ๋ณด์ฅ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ถฉ๋ ๋ฐ์ ์ผ๋ ค๊ฐ ์ ํ ์๋ค.
- ๋ํ ์ปจํ ์ด๋ ๋ด๋ถ์ ์์ ์ ํ ํ์ ๋ฐฐํฌํ๋ ค๊ณ ํ๋ค๋ฉด ๋์ปค ์ด๋ฏธ์ง๋ผ๋ ํจํค์ง๋ก ๋ง๋ค์ด์ ์ด์์๋ฒ์ ์ ๋ฌ๋ง ํ๋ฉด ๋๋ค. ์ฆ, ๋ฐฐํฌ๊ฐ ์ฌ์์ง๋ค.
- ๋ชจ๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฉ์์์ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์กฐ๋ก ๋ณํ๊ฐ ์ฝ๋ค. ์ฆ, ์ปจํ ์ด๋ ํ๋๋น ํ๋์ ๊ธฐ๋ฅ๋ง์ ์ ๊ณตํ๋ ๋ชจ๋๋ก ๋ง๋ค์ด์ ๋ถํ๊ฐ ๋ง์ ๋ชจ๋์ ์ฌ๋ฌ๊ฐ ๋ ๋ง๋ค๊ณ ํ๋ ์กฐ์ ์ด ๊ฐ๋ฅํด์ง๋ค.
๐ต ๋ณผ๋ฅจ(๋ฐ์ดํฐ)์ ๊ณต์ ํ์ง ์์ผ๋ฉด ์๋ก ๊ฐ์ด ์ธ ์๊ฐ ์๋ค.
- docker volume
- docker๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด container์์์์ ๋ฐ์ดํฐ ํ๋ฐ์ฑ ๋๋ฌธ์ volume์ ์ฌ์ฉํ๊ฒ ๋๋ค.
- ํ๋์ ์๋ฒ์์์๋ ์ฌ๋ฌ๊ฐ์ docker๊ฐ ๋ ์ ์๊ณ , ํน์ docker์์์ ๋ง๋ค์ด์ง ํ์ผ์, ๊ณต์ ํ ์ ์๋ค.
- ์ด๋ฐ ๋ถํธํจ์ ๋ง๊ธฐ ์ํด ์๋ฒ ์์ ๋์คํฌ๋ฅผ mount ํด๋๊ณ ์ฌ์ฉํ๋ฉด ๋๋ค.
- docker ์ปจํ ์ด๋๋ ์ธ์ ๋ ์ง ์ถ๊ฐ๋๊ณ ์ญ์ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ ๋ฐ๋์ ์ปจํ ์ด๋ ๋ด๋ถ๊ฐ ์๋ ์ธ๋ถ ์คํ ๋ฆฌ์ง์ ์ ์ฅํด์ผ ํ๋ค.
์ฐธ๊ณ ์ฌ์ดํธ