Docker ๋‚ด๋ถ€์—์„œ Docker๋ฅผ ์‹คํ–‰ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ๊ทธ์˜ ์ด์ „ ๊ธฐ์‚ฌ, Docker์—์„œ Docker๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด ๊ฐ•์˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ์‹ค์ œ์ ์ธ ์ธก๋ฉด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ์†์„ ์ง€์ผœ์•ผ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๋Š” Docker ๋‚ด๋ถ€์— Docker๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๋‹จ์ˆœํžˆ Docker ๋ฐ๋ชฌ ์†Œ์ผ“์„ ํ˜ธ์ŠคํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌํ•˜๋ฉด 99%์˜ ๊ฒฝ์šฐ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๋ฐ˜๋Œ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ์„œ๋‘๋ฅด์ง€ ๋งˆ์„ธ์š”. Docker ๋‚ด์—์„œ ์‹ค์ œ๋กœ Docker๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์—๋Š” ๋‹ค์–‘ํ•œ ์‘์šฉ ๋ถ„์•ผ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด ๊ธฐ์‚ฌ๋Š” ๊ทธ ์ค‘ ํ•˜๋‚˜์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŽธ์•ˆํžˆ ์•‰์•„ ํŒ”์„ ์•ž์œผ๋กœ ๋ป—์œผ์‹ญ์‹œ์˜ค.

Docker ๋‚ด๋ถ€์—์„œ Docker๋ฅผ ์‹คํ–‰ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

์ฒ˜์Œ

์ด ๋ชจ๋“  ์ผ์€ ๋‚ด๊ฐ€ Digital Ocean์—์„œ 5๋‹ฌ๋Ÿฌ์— ๋นŒ๋ฆฐ ๊ธฐ๊ณ„๋ฅผ ์ฒญ์†Œํ•˜๋˜ 24์›”์˜ ๋น„์˜ค๋Š” ๋‚  ์ €๋…์— ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Docker๊ฐ€ XNUMXGB์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ชจ๋‘ ์ฑ„์› ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊ณ„๊ฐ€ ์ •์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ ์€ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ผ์‹œ์ ์ด๋ฉฐ ์ƒˆ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ถœ์‹œ๋  ๋•Œ๋งˆ๋‹ค ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ๋งŒ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  cron ์ผ์ •์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋งค๋ฒˆ ์„œ๋ฒ„์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์†Œ๋ชจ๋˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๊ปํ•ด์•ผ). ์–ด๋Š ์‹œ์ ์—์„œ ์ปจํ…Œ์ด๋„ˆ์—์„œ Jenkins๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ปจํ…Œ์ด๋„ˆ์— ์ „๋‹ฌ๋œ Docker ๋ฐ๋ชฌ ์†Œ์ผ“์„ ํ†ตํ•ด ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๋งˆ์Œ์— ๋“ค์—ˆ์ง€๋งŒ ๋” ๋‚˜์•„๊ฐ€ Docker ๋‚ด๋ถ€์—์„œ Docker๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ์‹คํ—˜์„ ํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” Docker ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์™„์ „ํžˆ ๋…ผ๋ฆฌ์ ์ธ ์†”๋ฃจ์…˜์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค(์ด๋ฅผ ์Šคํ…Œ์ด์ง• ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค). ์•„์ด๋””์–ด๋Š” -rm ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ…Œ์ด์ง• ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋Š” ์ค‘์ง€ ์‹œ ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ์™€ ๋ชจ๋“  ํ•ด๋‹น ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Docker ์ž์ฒด์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ์กฐ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค(https://hub.docker.com/_/docker), ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์—ˆ๊ณ  ํ˜ผ์ž์„œ ๋๊นŒ์ง€ ๊ฐ€๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ด€ํ–‰. ์ฝ˜

๋‚˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‚ด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์‹คํ—˜์„ ๊ณ„์†ํ–ˆ๊ณ  ๊ทธ ๊ฒฐ๊ณผ ์ˆ˜๋งŽ์€ ์ƒˆ์‹น์ด ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์žํ•™์˜ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    docker run --privileged -it docker:18.09.6

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

  2. ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์ง€๋งŒ(๋‹ต๋ณ€: ์—†์Œ) ์–ด์จŒ๋“  ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    docker ps

    ์กฐ๊ธˆ ๋†€๋ผ์‹œ๊ฒ ์ง€๋งŒ Docker ๋ฐ๋ชฌ์ด ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

    error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 
    192.168.65.1:53: no such host

  3. ์ง์ ‘ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    dockerd &

    ๋˜ ๋‹ค๋ฅธ ๋ถˆ์พŒํ•œ ๋†€๋ผ์›€:

    failed to start daemon: Error initializing network controller: error obtaining controller instance: failed 
    to create NAT chain DOCKER: Iptables not found

  4. iptables ๋ฐ bash ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค(๋ชจ๋“  ๊ฒƒ์ด sh๋ณด๋‹ค bash์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ฆ๊ฒ์Šต๋‹ˆ๋‹ค):

    apk add --no-cache iptables bash

  5. bash๋ฅผ ์‹คํ–‰ํ•ด ๋ด…์‹œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์ธ ์‰˜๋กœ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค

  6. Docker๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    dockerd &

    ๋‹ค์Œ์œผ๋กœ ๋๋‚˜๋Š” ๊ธด ๋กœ๊ทธ ์‹œํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization          
    INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock

  7. ์—”ํ„ฐ ํ‚ค๋ฅผ ์น˜์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์‹œ ๋ฐฐ์‰ฌ๋กœ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ถฉ๋Œํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”.

์ž์ฒด DinD ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์ƒˆ๋กœ์šด ์‹คํ—˜

Docker ๋‚ด๋ถ€์—์„œ Docker๋ฅผ ์‹คํ–‰ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ
์œ„ ๋‹จ๊ณ„๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๋‚˜๋งŒ์˜ DinD ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/alekslitvinenk/dind

์ž‘๋™ ์ค‘์ธ DinD ์†”๋ฃจ์…˜์„ ํ†ตํ•ด Docker ๋‚ด๋ถ€์—์„œ Docker๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ๋” ๋ชจํ—˜์ ์ธ ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ MySQL๊ณผ Nodejs๋ฅผ ์‹คํ–‰ํ•˜๋Š” (์„ฑ๊ณต์ ์ธ) ์‹คํ—˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ฐ€์žฅ ์ฐธ์„์„ฑ์ด ์—†๋Š” ์‚ฌ๋žŒ์€ ์—ฌ๊ธฐ๊ฐ€ ์–ด๋• ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ DinD๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์˜ DinD์—์„œ๋Š” ํ•˜์œ„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํฌํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋งคํ•‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋ฏธ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค).

    docker run --privileged -it 
    -p 80:8080 
    -p 3306:3306 
    alekslitvinenk/dind

    bash์— ๋“ค์–ด๊ฐ€ ์ฆ‰์‹œ ํ•˜์œ„ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. MySQL์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql

  3. ๋กœ์ปฌ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.

  4. ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server

    ํฌํŠธ ๋งคํ•‘์€ ์ •ํ™•ํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 8080:8080, ์ด๋ฏธ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ 80์„ ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ 8080์— ๋งคํ•‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  5. ๋ธŒ๋ผ์šฐ์ €์—์„œ localhost๋กœ ์ด๋™ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ "Hello World!"๋ผ๊ณ  ์‘๋‹ตํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ์šฐ์—๋Š” ์ค‘์ฒฉ๋œ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•œ ์‹คํ—˜์ด ๋งค์šฐ ๊ธ์ •์ ์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์œผ๋ฉฐ ๊ณ„์†ํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์Šคํ…Œ์ด์ง•์— ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ณด๊ธฐ์—๋Š” ์ด๊ฒƒ์ด Kubernetes๋‚˜ Jenkins X๋ณด๋‹ค ํ›จ์”ฌ ๋” ๊ฐ€๋ฒผ์šด ์†”๋ฃจ์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ œ ์ฃผ๊ด€์ ์ธ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค.

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

PS ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด GitHub์—์„œ ๋ณ„์ ์„ ์ฃผ๊ณ  ํฌํฌํ•œ ํ›„ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ์„ธ์š”.

Edit1 2๊ฐœ์˜ ๋™์˜์ƒ์„ ์ค‘์‹ฌ์œผ๋กœ ์˜ค๋ฅ˜ ์ˆ˜์ •

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€