Container

๐Ÿ”ญ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋กœ Dockerfile์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋ถ„์„ํ•ด์„œ Dockerfile์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” Dedockify์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด๋“œ๋ ค์š”.

2024.05.13 | ์กฐํšŒ 172 |
0
|

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

์•ˆ๋…•ํ•˜์„ธ์š” ๊ตฌ๋…์ž๋‹˜, DevOps ์†Œ์‹๊ณผ ๊ธฐ์ˆ  ์ง€์‹์„ ์ •๋ฆฌํ•ด์„œ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๋Š” DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด ๋…๋ฆฝ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘ ํ™˜๊ฒฝ์„ ์œ„ํ•ด Container Image๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ์š”.

ํŠนํžˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ง์ ‘ Dockerfile์„ ์ž‘์„ฑํ•ด์„œ ๋นŒ๋“œํ•œ Image๊ฐ€ ์•„๋‹Œ, ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋นŒ๋“œํ•ด์„œ ๋ฐฐํฌํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ํ•ด๋‹น Image์˜ Dockerfile์„ ๋”ฐ๋กœ ๊ตฌํ•ด์•ผ Image๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๊ฒ ์ฃ . 

๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์šฉ ์ค‘์ธ Image์˜ Dockerfile์„ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋ฉด... ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋”์šฑ ์–ด๋ ค์›Œ์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š”๋ฐ์š”.

์ด๋Ÿฐ ๋ถˆํŽธํ•จ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ํˆด์ด ๋ฐ”๋กœ, Dedockify์ž…๋‹ˆ๋‹ค.

 

๐ŸฌImage์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์—ญ์ถ”์ ํ•ด์„œ Dockerfile ์ƒ์„ฑ!

Dedockify๋ผ๋Š” ์ด๋ฆ„์€ docker์™€ ํ•ด๋…(decode)์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ํ•ฉ์ณ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Dedockify๋ผ๋Š” ์ด๋ฆ„์€ docker์™€ ํ•ด๋…(decode)์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ํ•ฉ์ณ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Dedockify๋Š” Container Image๋กœ๋ถ€ํ„ฐ Dockerfile์„ ์ž๋™ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํˆด์ž…๋‹ˆ๋‹ค.

Docker์— Image๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ช…๋ น์–ด(inspect)๋Š” ์žˆ์ง€๋งŒ, Image๋ฅผ ํ†ตํ•ด Dockerfile์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์€ ์—†๋Š”๋ฐ์š”.

Dedockify๋Š” Image๊ฐ€ ์‹ค์ œ ๋นŒ๋“œ๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ Dockerfile์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด Dedockify๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ธธ๋ž˜ Container Image๋กœ Dockerfile์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ์š”?

๊ทธ ๋น„๋ฐ€์€ Container Image์˜ ๊ตฌ์„ฑ ๋ฐฉ์‹์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ—ƒContainer Image๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค?

์šฐ๋ฆฌ๊ฐ€ Dockerfile์„ ์ž‘์„ฑํ•ด์„œ Container Image๋ฅผ ๋นŒ๋“œํ•  ๋•Œ, Dockerfile์—์„œ ์ž‘์„ฑํ•œ ๊ฐ ์ง€์‹œ์–ด(๋˜๋Š” Instruction์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค)๋Š” ํ•˜๋‚˜์˜ Layer(์ธต)๋กœ ์Œ“์ด๊ฒŒ ๋˜๋Š”๋ฐ์š”. ์ด๋Ÿฐ Layer๋“ค์ด ๋ชจ์—ฌ์„œ Container Image๊ฐ€ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Docker ๊ณต์‹ ๋ฌธ์„œ์˜ Layer ์†Œ๊ฐœ ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค. Dockerfile์˜ ๊ฐ ์ง€์‹œ์–ด๋Š” ํ•˜๋‚˜์˜ Layer๋กœ ์ƒ์„ฑ๋˜์–ด Image์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
Docker ๊ณต์‹ ๋ฌธ์„œ์˜ Layer ์†Œ๊ฐœ ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค. Dockerfile์˜ ๊ฐ ์ง€์‹œ์–ด๋Š” ํ•˜๋‚˜์˜ Layer๋กœ ์ƒ์„ฑ๋˜์–ด Image์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Container Image์˜ ๊ฐ Layer๋“ค์€ Docker CLI ํˆด์—์„œ๋„ docker history ๋ช…๋ น์–ด๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•œ๋ฐ์š”. Dedockify๊ฐ€ Dockerfile์„ ๋งŒ๋“ค ๋•Œ์—๋„ Docker์˜ Layer ํ™•์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, Dedockify๋Š” Docker API๋ฅผ ์ด์šฉํ•ด์„œ Image๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” Layer๋“ค์˜ ์ง€์‹œ์–ด ์ •๋ณด๋ฅผ ์—ญ์ถ”์ ํ•ด์„œ ํ•ด๋‹น Image์˜ Dockerfile์„ ์ƒ์„ฑํ•ด๋‚ด๋Š” ๊ฒƒ์ด์ฃ .

์•„๋ž˜ ์˜ˆ์ œ์—์„œ๋„ ์–ธ๊ธ‰๋˜๊ฒ ์ง€๋งŒ, Dedockify๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋กœ์ปฌ์— ์„ค์น˜๋œ Docker์˜ socket ๊ฒฝ๋กœ๋ฅผ Dedockify ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก volume(-v) ์„ค์ •์ด ํ•„์š”ํ•œ ์ด์œ ๋„ ์ด๊ฒƒ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๐Ÿ’ปDedockify๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ...

์ €๋„ Container Image๋กœ Dockerfile์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํฅ๋ฏธ๋กœ์›Œ์„œ Dedockify๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ดค๋Š”๋ฐ์š”. golang์˜ ๊ณต์‹ Image๋กœ๋ถ€ํ„ฐ Dockerfile์„ ์ƒ์„ฑํ•ด๋ณธ ๊ณผ์ •์„ ๊ตฌ๋…์ž๋‹˜์—๊ฒŒ ๊ณต์œ ๋“œ๋ ค๋ด…๋‹ˆ๋‹ค.๐Ÿค“

 

๋จผ์ € Dedockify๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต์‹ Container Image๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

docker pull mrhavens/dedockify ๋ช…๋ น์–ด๋กœ Dedockify์˜ ๊ณต์‹ Image๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
docker pull mrhavens/dedockify ๋ช…๋ น์–ด๋กœ Dedockify์˜ ๊ณต์‹ Image๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Dockerfile์„ ์ƒ์„ฑํ•˜๋ ค๋Š” Image์˜ ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Dedockify๋ฅผ CLI์—์„œ ์‹คํ–‰ํ•  ๋•Œ ๋Œ€์ƒ Image์˜ ID๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

docker images ๋ช…๋ น์–ด๋กœ golang์˜ IMAGE ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„  'e0aa2034f411'์ด๋„ค์š”.
docker images ๋ช…๋ น์–ด๋กœ golang์˜ IMAGE ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„  'e0aa2034f411'์ด๋„ค์š”.

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ Dedockify์˜ Image๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • docker run --rm -v {๋กœ์ปฌ ๋‚ด docker.sock์˜ ๊ฒฝ๋กœ}:/var/run/docker.sock dedockify {๋Œ€์ƒ Image ID}
Dedockify๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋Œ€์ƒ Image์˜ Dockerfile ๋‚ด์šฉ์ด Output์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 
Dedockify๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋Œ€์ƒ Image์˜ Dockerfile ๋‚ด์šฉ์ด Output์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

์œ„์™€ ๊ฐ™์ด Dedockify๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ golang ๊ณต์‹ Image์˜ Dockerfile์ด Output์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์ด ์‹ ๊ธฐํ•˜๋„ค์š”.๐Ÿ˜„

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ Dockerfile์„ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด ์•„๋‹Œ๋ฐ์š”... ๋งŒ์•ฝ Dedockify ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์‹ ๋‹ค๋ฉด, ์•„๋ž˜ ์ œ์•ฝ์‚ฌํ•ญ์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธธ ๊ถŒํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

โ—Dedockify ์‚ฌ์šฉ ์‹œ ์ œ์•ฝ์‚ฌํ•ญ

Dedockify๋Š” ์œ„์—์„œ ์‚ดํŽด๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ Layer์— ์ €์žฅ๋œ ์ง€์‹œ์–ด ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Dockerfile์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ Image ๋นŒ๋“œ ์‹œ ์‚ฌ์šฉ๋˜์—ˆ๋˜ Dockerfile๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํ•ด๋‹น Image Layer ์ค‘ ํŠน์ • ํŒŒ์ผ/ํด๋”๊ฐ€ Image ๋‚ด๋ถ€๋กœ ๋ณต์‚ฌ๋œ ๊ฒƒ์ด ์žˆ์„ ๊ฒฝ์šฐ(์ฆ‰, Dockerfile ๋‚ด์—์„œ ADD ๋˜๋Š” COPY ์ง€์‹œ์–ด๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ), Dedockify๋กœ ์ž๋™ ์ƒ์„ฑ๋œ Dockerfile๋กœ๋Š” ์ด๋ ‡๊ฒŒ ๋ณต์‚ฌ๋œ ํŒŒ์ผ/ํด๋”๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ ์–ด๋ ต๋‹ค๋Š” ์ œ์•ฝ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ๊ณผ์ •์—์„œ ์ž๋™ ์ƒ์„ฑ๋œ Dockerfile ์ค‘์—๋Š” ์•„๋ž˜ ๊ฐ™์€ ADD ์ง€์‹œ์–ด๊ฐ€ ์žˆ๋Š”๋ฐ์š”.

  • ADD file:2cc4cba2834c189d0dc41b5d79e1236770862c38452517fcbbb28015b88ab5cf in /

Dedockify๋Š” Image Layer์— ์ €์žฅ๋œ ์ง€์‹œ์–ด๋งŒ ์ฐธ๊ณ ํ•˜์—ฌ Dockerfile์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น Image๊ฐ€ ์‹ค์ œ ๋นŒ๋“œ๋˜์—ˆ์„ ๋•Œ ์–ด๋–ค ํŒŒ์ผ์ด๋‚˜ ํด๋”๊ฐ€ Image ๋‚ด๋ถ€๋กœ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ๋ถ„์„ํ•˜๊ณ  ํ˜„์žฌ ํ™˜๊ฒฝ์— ๋งž์ถฐ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ์ž๋™ ์ƒ์„ฑ๋œ Dockerfile์„ ๋นŒ๋“œํ•˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ Image๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ / ๊ฒฝ๋กœ์— ์–ด๋–ค ํŒŒ์ผ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ๋ถ„์„์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
์œ„์—์„œ ์ž๋™ ์ƒ์„ฑ๋œ Dockerfile์„ ๋นŒ๋“œํ•˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ Image๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ / ๊ฒฝ๋กœ์— ์–ด๋–ค ํŒŒ์ผ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ๋ถ„์„์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

 

๐Ÿ”ญ๋งˆ์น˜๋ฉฐ...

์ด๋ฒˆ ์†Œ์‹์ง€์—์„  Dockerfile์„ ์ž๋™ ์ƒ์„ฑํ•ด์ฃผ๋Š” Dedockify์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  Container Image์˜ Layer๋„ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค.

Dedockify์—๋Š” ์•„์ง ์•ž์„œ ์‚ดํŽด๋ณธ ์ œ์•ฝ์‚ฌํ•ญ๋“ค์ด ์žˆ์ง€๋งŒ, ์ด๋ฏธ ์‚ฌ์šฉ์ž์˜ ์ดํ•ด๋„๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋†’์€ Container Image๋ฅผ ๋Œ€์ƒ์œผ๋กœ Dockerfile์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋ฉด ํ™œ์šฉํ• ๋งŒํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“œ๋„ค์š”.๐Ÿ˜‰

ํ˜น์‹œ ์ด๋ฒˆ ๋‚ด์šฉ ๊ด€๋ จํ•ด์„œ ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์•„๋ž˜ ๋ฉ”์ผ๋ฆฌ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.๐Ÿ˜€

๊ทธ๋Ÿผ, ๋‹ค์Œ ์†Œ์‹์ง€์—์„œ ๋ณด๋‹ค ์•Œ์ฐจ๊ณ  ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๊ตฌ๋…์ž๋‹˜ ๐Ÿ˜บ

 

๐Ÿ”—References

 

 

๋‹ค๊ฐ€์˜ฌ ๋‰ด์Šค๋ ˆํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ง€๊ธˆ ๊ตฌ๋…ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”

์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ ์–ด๋– ์…จ๋‚˜์š”?

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€ ๋‹˜์—๊ฒŒ โ˜•๏ธ ์ปคํ”ผ์™€ โœ‰๏ธ ์ชฝ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์„ธ์š”!

๋Œ“๊ธ€

์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”

ํ™•์ธ
์˜๊ฒฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ œ์ผ ๋จผ์ € ๋Œ“๊ธ€์„ ๋‹ฌ์•„๋ณด์„ธ์š” !

ยฉ 2024 DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌธ์˜ : eduukulelekim@gmail.com

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์˜ค๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ œ๋ณด

์„œ๋น„์Šค ์ด์šฉ ๋ฌธ์˜admin@team.maily.so

๋ฉ”์ผ๋ฆฌ (๋Œ€ํ‘œ์ž: ์ดํ•œ๊ฒฐ) | ์‚ฌ์—…์ž๋ฒˆํ˜ธ: 717-47-00705 | ์„œ์šธ ์„œ์ดˆ๊ตฌ ๊ฐ•๋‚จ๋Œ€๋กœ53๊ธธ 8, 8์ธต 11-7ํ˜ธ

์ด์šฉ์•ฝ๊ด€ | ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ | ์ •๊ธฐ๊ฒฐ์ œ ์ด์šฉ์•ฝ๊ด€