์๋ ํ์ธ์ ๊ตฌ๋ ์๋, DevOps ์์๊ณผ ๊ธฐ์ ์ง์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ณด๋ฉด ๋ ๋ฆฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋์ ํ๊ฒฝ์ ์ํด Container Image๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ์.
ํนํ ์ฒ์๋ถํฐ ์ง์ Dockerfile์ ์์ฑํด์ ๋น๋ํ Image๊ฐ ์๋, ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ๋น๋ํด์ ๋ฐฐํฌํ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ํด๋น Image์ Dockerfile์ ๋ฐ๋ก ๊ตฌํด์ผ Image๋ฅผ ์์ ํ๊ฑฐ๋ ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ ํธํ๊ฒ ์ฃ .
๊ทธ๋ฐ๋ฐ ์ฌ์ฉ ์ค์ธ Image์ Dockerfile์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด... ์ด๋ฌํ ์์ ์ ๋์ฑ ์ด๋ ค์์ง ์๋ฐ์ ์๋๋ฐ์.
์ด๋ฐ ๋ถํธํจ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋ ํด์ด ๋ฐ๋ก, Dedockify์ ๋๋ค.
๐ฌImage์ ๊ตฌ์ฑ์์๋ฅผ ์ญ์ถ์ ํด์ Dockerfile ์์ฑ!
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๊ฐ ๋๋ ๊ฒ์ ๋๋ค.
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๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๋ค์์ Dockerfile์ ์์ฑํ๋ ค๋ Image์ ID๋ฅผ ํ์ธํฉ๋๋ค. Dedockify๋ฅผ CLI์์ ์คํํ ๋ ๋์ Image์ ID๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ Dedockify์ Image๋ฅผ ์คํํฉ๋๋ค.
- docker run --rm -v {๋ก์ปฌ ๋ด docker.sock์ ๊ฒฝ๋ก}:/var/run/docker.sock dedockify {๋์ Image ID}
์์ ๊ฐ์ด 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์ ์๋ ์์ฑํด์ฃผ๋ Dedockify์ ๋ํด ์์๋ณด๊ณ Container Image์ Layer๋ ๊ฐ๋ตํ ์ดํด๋ดค์ต๋๋ค.
Dedockify์๋ ์์ง ์์ ์ดํด๋ณธ ์ ์ฝ์ฌํญ๋ค์ด ์์ง๋ง, ์ด๋ฏธ ์ฌ์ฉ์์ ์ดํด๋๊ฐ ์ถฉ๋ถํ ๋์ Container Image๋ฅผ ๋์์ผ๋ก Dockerfile์ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด ํ์ฉํ ๋งํ๋ค๋ ์๊ฐ์ด ๋๋ค์.๐
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
์ค๋๋ ๊ฐ์ฌํฉ๋๋ค, ๊ตฌ๋ ์๋ ๐บ
๐References
๋๊ธ
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์