[๋ฏธ๊ตญ ์ด๋ฆฐ์ด ๋ํ "ํ ์ ์๋ ์์ ์์ง" ์ฐธ์กฐ - ๋๋ต. ๋ ์ธ]*
ํ์์ ๋ฐ๋ผ ์์ Docker ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ
๋น์ ์์ ์ธ ์ง์ฐฉ
์ง๋ ๋ช ๋ฌ ๋์ ์ ๋ Docker ์ด๋ฏธ์ง๊ฐ ์ผ๋ง๋ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ณ์ ์คํ๋ ์ ์๋์ง์ ์ง์ฐฉํ์ต๋๋ค.
์ดํดํฉ๋๋ค. ์์ด๋์ด๊ฐ ์ด์ํฉ๋๋ค.
์ธ๋ถ ์ฌํญ๊ณผ ๊ธฐ์ ์ ์ค๋ช ํ๊ธฐ ์ ์ ์ด ๋ฌธ์ ๊ฐ ์ ์ ๋ฅผ ๊ทธํ ๋ก ๊ดด๋กญํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ๊ฐ ๊ทํ์๊ฒ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ์ค๋ช ํ๊ณ ์ถ์ต๋๋ค.
ํฌ๊ธฐ๊ฐ ์ค์ํ ์ด์
Docker ์ด๋ฏธ์ง์ ๋ด์ฉ์ ์ค์์ผ๋ก์จ ์ทจ์ฝ์ ๋ชฉ๋ก์ ์ค์ ๋๋ค. ๋ํ ์ด๋ฏธ์ง์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ํ์ํ ๊ฒ๋ง ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ ๊น๋ํ๊ฒ ๋ง๋ญ๋๋ค.
์์ ์ด์ ์ด ํ๋ ๋ ์์ต๋๋ค. ์ด๋ฏธ์ง๊ฐ ์กฐ๊ธ ๋ ๋นจ๋ฆฌ ๋ค์ด๋ก๋๋์ง๋ง ์ ์๊ฐ์๋ ์ด๊ฒ์ด ๊ทธ๋ค์ง ์ค์ํ์ง ์์ต๋๋ค.
์ฐธ๊ณ : ํฌ๊ธฐ๊ฐ ๊ฑฑ์ ๋๋ค๋ฉด ์ํ์ธ ๋ฃฉ ์์ฒด๊ฐ ์์ผ๋ฏ๋ก ๊ทํ์๊ฒ ๋ง์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ฌด๋ถ๋ณํ ์ด๋ฏธ์ง
pip
ะธ apt
์๋ ์ ํ ๊ฒ์ด๋ค:
FROM gcr.io/distroless/python3
RUN pip3 install numpy
Python 3 distroless ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ Dockerfile
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM gcr.io/distroless/python3
---> 556d570d5c53
Step 2/2 : RUN pip3 install numpy
---> Running in dbfe5623f125
/bin/sh: 1: pip3: not found
์ด๋ฏธ์ง์ ํ์ด ์์ต๋๋ค
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ ๋ค๋จ๊ณ ๋น๋๋ก ํด๊ฒฐ๋ฉ๋๋ค.
FROM python:3 as builder
RUN pip3 install numpy
FROM gcr.io/distroless/python3
COPY --from=builder /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.5/
๋ค๋จ๊ณ ์กฐ๋ฆฝ
๊ฒฐ๊ณผ๋ 130MB ํฌ๊ธฐ์ ์ด๋ฏธ์ง์
๋๋ค. ๋์์ง ์์! ๋น๊ต๋ฅผ ์ํด ๊ธฐ๋ณธ Python ์ด๋ฏธ์ง์ ๋ฌด๊ฒ๋ 929MB์ด๊ณ "๋ ์์" ์ด๋ฏธ์ง(3,7-slim
) - 179MB, ์ํ์ธ ์ด๋ฏธ์ง(3,7-alpine
)์ 98,6MB์ด๊ณ , ์์ ์ ์ฌ์ฉ๋ ๊ธฐ๋ณธ distroless ์ด๋ฏธ์ง๋ 50,9MB์
๋๋ค.
์ด์ ์์์๋ ์ ์ฒด ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณต์ฌํ๊ณ ์๋ค๋ ์ ์ ์ง์ ํ๋ ๊ฒ์ด ํ๋นํฉ๋๋ค. /usr/local/lib/python3.7/site-packages
, ์ฌ๊ธฐ์๋ ํ์ํ์ง ์์ ์ข
์์ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ๊ธฐ์กด์ ๋ชจ๋ Python ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ํฌ๊ธฐ ์ฐจ์ด๊ฐ ๋ค์ํ๋ค๋ ๊ฒ์ ๋ถ๋ช
ํฉ๋๋ค.
์ด ๊ธ์ ์ฐ๋ ์์ ์์ Google distroless๋ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. Java์ Python์ ์์ง ์คํ ๋จ๊ณ์ ์์ผ๋ฉฐ Python์ 2,7๊ณผ 3,5์ฉ์ผ๋ก๋ง ์กด์ฌํฉ๋๋ค.
์์ ์ด๋ฏธ์ง
์์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ํ ์ง์ฐฉ์ผ๋ก ๋์๊ฐ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ๋ distroless ์ด๋ฏธ์ง๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง ๋ณด๊ณ ์ถ์์ต๋๋ค. distroless ํ๋ก์ ํธ๋ Google์ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. bazel
. ๊ทธ๋ฌ๋ Bazel์ ์ค์นํ๊ณ ์์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ง์ ์์
์ด ํ์ํ์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์์งํ ๋งํด์ ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช
ํ๋ ๊ฒ์ ์ฌ๋ฏธ ์๊ณ ๊ต์ก์ ์
๋๋ค). ์ ๋ ์์ ์ด๋ฏธ์ง ์์ฑ์ ๋จ์ํํ๊ณ ์ถ์์ต๋๋ค. ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋งค์ฐ ๋จ์ํด์ผ ํฉ๋๋ค. ํ๋ฒํ. ๊ตฌ์ฑ ํ์ผ์ด ์์ผ๋ฏ๋ก ์ฝ์์ ํ ์ค๋ง ์
๋ ฅํ๋ฉด ๋ฉ๋๋ค. ะฟัะพััะพ ัะพะฑัะฐัั ะพะฑัะฐะท ะดะปั <ะฟัะธะปะพะถะตะฝะธะต>
.
๋ฐ๋ผ์ ์์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๊ณ ์ ํ ๋์ปค ์ด๋ฏธ์ง๊ฐ ์๋ค๋ ์ ์ ์์๋์ธ์. scratch
. ์คํฌ๋์น๋ "๋น" ์ด๋ฏธ์ง์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌด๊ฒ๋ ์์ง๋ง ํ์ผ์ด ์์ต๋๋ค. ์์ฐ! - 77๋ฐ์ดํธ.
FROM scratch
์คํฌ๋์น ์ด๋ฏธ์ง
์คํฌ๋์น ์ด๋ฏธ์ง์ ์์ด๋์ด๋ ํธ์คํธ ์์คํ
์ ์ข
์์ฑ์ ๋ณต์ฌํ์ฌ Dockerfile ๋ด์์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. apt
์ฒ์๋ถํฐ ์ค์น) ๋๋ ๋์ค์ Docker ์ด๋ฏธ์ง๊ฐ ๊ตฌ์ฒดํ๋ ๋ ์ค์น๋ฉ๋๋ค. ์ด๋ฅผ ํตํด Docker ์ปจํ
์ด๋์ ๋ด์ฉ์ ์์ ํ ์ ์ดํ ์ ์์ผ๋ฏ๋ก ์ด๋ฏธ์ง ํฌ๊ธฐ๋ ์์ ํ ์ ์ดํ ์ ์์ต๋๋ค.
์ด์ ์ด๋ป๊ฒ๋ ์ด๋ฌํ ์ข
์์ฑ์ ์์งํด์ผ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์กด ๋๊ตฌ apt
ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ง๋ง ํ์ฌ ์์คํ
์ ๋ฌถ์ฌ ์๊ณ ๊ฒฐ๊ตญ Windows๋ MacOS๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
๊ทธ๋์ ์ ๋ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ํฌ๊ธฐ์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๊ตฌ์ถํ๊ณ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ์์ฒด ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์์ํ์ต๋๋ค. ์ ๋ Ubuntu/Debian ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ๊ณ (๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ง์ ํจํค์ง ๊ฐ์ ธ์ค๊ธฐ) ์ฌ๊ท์ ์ผ๋ก ํด๋น ์ข ์์ฑ์ ์ฐพ์์ต๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ์ต์ ์์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ์ฌ ๋ณด์ ์ํ์ ์ต๋ํ ์ต์ํํ๋๋ก ๋์ด ์์์ต๋๋ค.
๋๊ตฌ ์ด๋ฆ์ ์ง์ ํ์ต๋๋ค. fetchy
, ์๋ํ๋ฉด ๊ทธ๋... ํ์ํ ๊ฒ์... ์ฐพ์์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์
๋๋ค.์์ด๋ก๋ถํฐ "๊ฐ์ ธ์ค๊ธฐ", "๊ฐ์ ธ์ค๊ธฐ" - ์ฝ. ๋ ์ธ]. ์ด ๋๊ตฌ๋ ๋ช
๋ น์ค ์ธํฐํ์ด์ค๋ฅผ ํตํด ์๋ํ์ง๋ง ๋์์ API๋ ์ ๊ณตํฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์กฐํฉํ๋ ค๋ฉด fetchy
(์ด๋ฒ์๋ Python ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.) ๋ค์๊ณผ ๊ฐ์ด CLI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. fetchy dockerize python
. ๋์ ์ด์ ์ฒด์ ์ ์ฝ๋๋ช
์ ๋ฌป๋ ๋ฉ์์ง๊ฐ ๋ํ๋ ์ ์์ต๋๋ค. fetchy
ํ์ฌ๋ Debian ๋ฐ Ubuntu ๊ธฐ๋ฐ ํจํค์ง๋ง ์ฌ์ฉํฉ๋๋ค.
์ด์ (์ฐ๋ฆฌ์ ๋งฅ๋ฝ์์) ์ ํ ํ์ํ์ง ์์ ์ข ์์ฑ์ ์ ํํ๊ณ ์ ์ธํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Python์ Perl์ ์์กดํ์ง๋ง Perl์ ์ค์นํ์ง ์์๋ ์ ์๋ํฉ๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์์ฑ๋ Python ์ด๋ฏธ์ง fetchy dockerize python3.5
๋ฌด๊ฒ๋ 35MB์ ๋ถ๊ณผํฉ๋๋ค(๋ฏธ๋์๋ ๋ ๊ฐ๋ฒผ์์ง ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค). ์ฐ๋ฆฌ๋ distroless ์ด๋ฏธ์ง์์ ์ถ๊ฐ๋ก 15WW๋ฅผ ์ค์ผ ์ ์์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์ง๊ธ๊น์ง ์์ง๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ค ์ ์์ต๋๋ค
ํ๋ก์ ํธ -
๊ธฐ๋ฅ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ ์์ฒญ์ ์์ฑํ์ธ์. ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค :) ๋์ฑ์ด ์ ๋ ํ์ฌ ๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ fetchy์ ํตํฉํ์ฌ ๋ค๋จ๊ณ ๋น๋๊ฐ ํ์ํ์ง ์๋๋ก ์์ ์ค์ ๋๋ค.
์ถ์ฒ : habr.com