[Docker๐Ÿณ] Docker ๊ธฐ๋ณธ 2

Jeong SeongYunยท2022๋…„ 10์›” 1์ผ
0

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
5/10
post-thumbnail

์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด ๊ณ„์† docker์—์„œ ์•Œ์•„์•ผํ•  ๊ธฐ๋ณธ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Apache ์›น์„œ๋ฒ„๋ฅผ Docker๋กœ ๊ตฌ๋™ํ•˜๊ธฐ

1. Apache ์ด๋ฏธ์ง€ ๋‹ค์šด ํ›„ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰

์œ„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•ด์ฃผ๋Š” ๊ฒŒ ๋ญ์˜€์ฃ ?? ๋งž์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ docker run ์ด์—ˆ์ฃ !!
์•„ํŒŒ์น˜ ์ด๋ฏธ์ง€๋Š” apache๋กœ ํ•ด๋„ ๋˜๊ธด ํ•˜์ง€๋งŒ ์˜ค๋žซ๋™์•ˆ ๋ถˆ๋ฆฌ์–ด์™”๋˜ ์ด๋ฆ„์ธ httpd๋กœ ๊ฒ€์ƒ‰ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

docker run httpd

๊ทธ๋Ÿผ ์ด๋Ÿฐ ์‹์œผ๋กœ ์•Œ์•„์„œ docker hub์—์„œ ๋‹ค์šด ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ background๋กœ ์‹คํ–‰์‹œํ‚จ ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งจ ๋งˆ์ง€๋ง‰ ์ค„์—

0094: Command line: 'httpd -D FOREGROUND'๋ผ๋ฉด์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. apache์˜ ํ”„๋กฌํ”„ํŠธ๋กœ ์ง„์ž…ํ•ด๋ฒ„๋ฆฐ ๊ฒƒ์ด์ฃ . ์šฐ๋ฆฐ ์ด๊ฑธ ์›ํ•œ ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๋‚œ ์‹œ๊ฐ„์— ๋ฐฐ์› ๋˜ background ์‹คํ–‰ ์˜ต์…˜์„ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.

docker run -d --name apacheweb httpd

๊ทธ๋Ÿผ ์ด์ œ apacheweb์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ž˜ ์‹คํ–‰๋˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (Up์ƒํƒœ)

์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด์ œ apache์›น ์„œ๋ฒ„๋ฅผ 24์‹œ๊ฐ„ ๊ตฌ๋™์‹œํ‚ค๊ณ  ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋์Šต๋‹ˆ๋‹ค.

โ— 2. NAPT(Network Address Port Translation)

์ด์ œ ์›น์„œ๋ฒ„๋ฅผ ๊ตฌ๋™์‹œ์ผœ๋†จ์œผ๋‹ˆ, ์ด ์›น์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

docker์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹คํ–‰๋˜๋ฉด 172.17.0.0 ~ 172.17.255.255 ๋ฒ”์œ„์˜ private IP๋ฅผ ํ• ๋‹น ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฐ Private IP์— ์™ธ๋ถ€์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด์˜ฌ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„  Public IP๊ฐ€ ํ•„์š”ํ•œ๋ฐ์š”!

Private IP๋Š” Private IP๋ฅผ ๊ณต์œ ํ•˜๋Š” ์• ๋“ค๋ผ๋ฆฌ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์ด๊ณ , Public์€ ์™ธ๋ถ€ ์‚ฌ์šฉ์ž์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์ดํ•ดํ•ด๋„ ๋  ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค.

docker๋Š” ์™ธ๋ถ€์—์„œ Private IP๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ NAPT ๊ธฐ์ˆ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

NAPT : ํŠน์ • port๋กœ ๋“ค์–ด์˜จ ์ ‘์†์„ ํŠน์ • IP๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๊ธฐ์ˆ 

ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์ด์šฉํ•™์ž ํ•˜์‹œ๋ฉด docker run์˜ -p ์˜ต์…˜์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

docker run -d -p 9999:80 --name apache2 httpd
ํ•ด์„ค : httpd ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ,, ์ด๋ฆ„์€ apache2๋กœ ์„ค์ •ํ•˜๊ณ ,,, ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ณ ,, local host์˜ 9999๋ฒˆ port๋กœ ๋“ค์–ด์˜ค๋ฉด apache2์˜ 80๋ฒˆ ํฌํŠธ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ apache2์˜ private IP๋กœ ์ ‘์†ํ•˜๊ฒŒ ํ•ด๋ผ~~

apache์˜ ๊ธฐ๋ณธ IP ํฌํŠธ๊ฐ€ 80๋ฒˆ์ด๊ธฐ ๋•Œ๋ฌธ์— 80์œผ๋กœ ๋ฐ›์•„์ค๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์„ฑ๊ณต์ ์œผ๋กœ ์ž˜ ๋Œ์•„๊ฐ€๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. AWS์—์„œ ์„ค์ •ํ•˜๊ธฐ

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ AWS์˜ EC2๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์„ค์ •์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งจ ์ฒ˜์Œ์— AWS๋กœ ์ปดํ“จํ„ฐ๋ฅผ ํ•˜๋‚˜ ๋นŒ๋ฆด ๋•Œ, 22๋ฒˆ ํฌํŠธ๋งŒ ์—ด์–ด๋†จ๋˜ ๊ฑฐ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”?

๊ทธ๋Ÿฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์™ธ์˜ ํฌํŠธ๋กœ ์ ‘์†์„ ํ•˜๊ฒŒ๋˜๋ฉด ์ ‘์†๊ฑฐ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

9999๋ฒˆ ํฌํŠธ๋„ ์—ด์–ด์ฃผ๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ

๋ณด์•ˆ๊ทธ๋ฃน์— ๋“ค์–ด๊ฐ€์ค๋‹ˆ๋‹ค.

์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํŽธ์ง‘์— ๋“ค์–ด๊ฐ€์ค๋‹ˆ๋‹ค.

๊ทœ์น™ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์‹œ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ทœ์น™ ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ์ฃผ์‹œ๋ฉด ๋!

์ด์ œ ์™ธ๋ถ€ ์ปดํ“จํ„ฐ์—์„œ AWS ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•  ์ค€๋น„๋Š” ๋๋‚œ๊ฒ๋‹ˆ๋‹ค!

ํผ๋ธ”๋ฆญ ์•„์ดํ”ผ ์ฃผ์†Œ๋ฅผ ๊ธ์–ด๋‹ค๊ฐ€ ์ฃผ์†Œ์ฐฝ์— ํผ๋ธ”๋ฆญ์•„์ดํ”ผ:9999๋ฅผ ์ž…๋ ฅํ•˜๋ฉด..

์ด๋ ‡๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ์ ‘์†์ด ์™„๋ฃŒ๋๋‹ค๊ณ  "It works!"๋ผ๋Š” ๋ง์ด ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค ใ…Žใ…Ž


โ— ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ

์ง€๊ธˆ๊นŒ์ง€๋Š” AWS์™€์˜ ์—ฐ๋™์„ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ AWS ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜์—ฌ ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๊ธฐ๊นŒ์ง€ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. (httpd์˜ ๊ธฐ๋ณธ์ธ index.html์„ ๋ณด์—ฌ์ค˜์„œ it works!) ๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์ฃ .

๊ทธ๋Ÿผ ์ œ local PC์— ์žˆ๋Š” ํŒŒ์ผ์„ ๊บผ๋‚ด์„œ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”?

๊ทธ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ docker run์˜ -v ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

local์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

-v ์˜ต์…˜์˜ ๋ชฉ์ ์€ ํ˜ธ์ŠคํŠธ PC์— ์žˆ๋Š” ํŠน์ • ํด๋”๋ฅผ Conatiner ์•ˆ์œผ๋กœ ์ง‘์–ด ๋„ฃ๊ฑฐ๋‚˜
Container์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜๋”๋ผ๋„ ํŠน์ • ํด๋”์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€์‹œํ‚ค๊ธฐ ์œ„ํ•จ์ด๋‹ค.

apache์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ์‚ด์ง ๋ฐ”๊ฟ”์„œ, ์˜ˆ์ œ๋กœ ์ฃผ์–ด์ง„ ํ™ˆํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ๋„์›Œ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

1. FileZilla

์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜์…”์„œ FileZilla๋ฅผ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

์™ผ์ชฝ ์œ„์˜ ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋ผ๊ณ  ๋œจ๋Š”๋ฐ์š”, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชจ๋‘ ์„ค์ •์„ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

ํ‚ค ํŒŒ์ผ์—๋Š” AWS์˜ .pemํŒŒ์ผ์„ ์ง€์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!
ํ˜ธ์ŠคํŠธ์—๋Š” AWS์˜ IP๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!


๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ AWS ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


์—…๋กœ๋“œ ํ•˜๊ณ ์ž ํ•˜์‹œ๋Š” ํŒŒ์ผ์— ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค๋ฅผ ๋ˆ„๋ฅด๊ณ  ์—…๋กœ๋“œ๋ฅผ ๋ˆ„๋ฅด์‹œ๋ฉด

์™€์šฐ~ ๊ทธ๋Ÿผ ๋กœ์ปฌ์— ์žˆ๋Š” ํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ AWS ์„œ๋ฒ„์— ์ž˜ ์—…๋กœ๋“œ ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!

FLASK๋ฅผ ํ•  ๋• Git์œผ๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ FileZilla๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋„ ํŽธํ•˜๊ธด ํ•˜๋„ค์š” ใ…Žใ…Ž

โ— 2. ์ปจํ…Œ์ด๋„ˆ ์—ฐ๊ฒฐ์‹œํ‚ค๊ธฐ

์ด์ œ ์•„๋ž˜์˜ docker ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

docker run -d -p 9999:80 -v {์ ˆ๋Œ€๊ฒฝ๋กœ:/usr/local/apache2/htdocs} --name apacheweb2 httpd

๊ธฐ์กด์˜ Conatainer๊ฐ€ ์žˆ๋‹ค๋ฉด docker rm -f ๋ช…๋ น์–ด๋กœ ์‚ญ์ œ ํ›„ ์ง„ํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ•ด๋‹น ํฌํŠธ๋กœ ์ ‘์†ํ•˜๋ฉด?

๋ณธ์ธ ๊ฐœ์ธ์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“  ํ™ˆํŽ˜์ด์ง€๊ฐ€ ๋”ฑ! ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

์˜คํƒ€ ์•ˆ ๋‚˜๊ฒŒ ์กฐ์‹ฌํ•˜์„ธ์š”!!


Alpine

์ตœ์†Œ์˜ ๊ธฐ๋Šฅ๋งŒ์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ๋Š” ์–ด์ฐจํ”ผ ์šฐ๋ฆฌ๋Š” ์›น์„œ๋ฒ„์— ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ๋ฐ›์œผ๋ฉด ๋˜๋Š”๋ฐ ๊ตณ์ด ๋ฌด๊ฑฐ์šด ubuntu๋ฅผ ๋ฐ›์„ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์ด์ฃ .

์šฉ๋Ÿ‰์„ ์ข€ ํšจ์œจ์ ์œผ๋กœ ์ž˜ ์ค„์—ฌ์„œ ์“ฐ๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ”๋กœ alpine ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ์ง€ ๋’ค์— :alpine ํƒœ๊ทธ๋ฅผ ๋ถ™์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค ใ…Žใ…Ž

์ •์ƒ์ ์œผ๋กœ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ํ™ˆํŽ˜์ด์ง€๋„ ์ž˜ ์ ‘์† ๋˜๋Š” ๊ฑธ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค!



์ง€๊ธˆ๊นŒ์ง€ Docker๋ฅผ ํ†ตํ•ด ์‹ค์งˆ์ ์ธ ์›น์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค! ์•Œ์•„์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋„ ๋งŽ๊ณ  ์™ธ์›Œ์•ผํ•  ๊ฑฐ ๊ฐ™์€ ๋‚ด์šฉ๋„ ๋งŽ์ง€๋งŒ ์ž˜ ๋ฐฐ์›Œ๋†”์•ผ์ฃ !

profile
๋ฌผ์–ด๋ณด๋ฉด ๋Œ€๋‹ตํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์Ÿ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€