ืืื ืฆื ืืืืืึธืืึทืืืฉ ืฉืึทืคึฟื ืงืืืื ืืฉืืง ืืึธืงืงืขืจ ืืืืืขืจ ืคึฟืึทืจ ืืืื ืืึทืจืฃ
ืืืืขืืืืื ืืืขื ืึธืืกืขืกืกืืึธื
ืคึฟืึทืจ ืื ืืขืฆืืข ืคึผืึธืจ ืคืื ืืืฉืื, ืืื ืืื ืึทืืกืขืกื ืืื ืืื ืงืืืื ืึท ืืึธืงืงืขืจ ืืืื ืงืขื ืขื ืืืื ืืื ื ืึธื ืืึธืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืคืืืกื ืืืง?
ืืื ืคึฟืึทืจืฉืืฒ, ืืขืจ ืืขืืึทื ืง ืืื ืืึธืื ืข.
ืืืืืขืจ ืืื ืืึทืงืืืขื ืืื ืื ืืขืืึทืืืก ืืื ืืขืงื ืืงืก, ืืื ืืืึธืื ืืื ืฆื ืืขืจืงืืขืจื ืืืึธืก ืืขื ืคึผืจืึธืืืขื ืืึทืืขืจื ืืืจ ืึทืืื ืคืื, ืืื ืืื ืขืก ืงืึทื ืกืขืจื ื ืืืจ.
ืคืืจืืืืก ืื ืืจืืืก ืืื ืืืืืืืง
ืืืจื ืจืืืืกืื ื ืื ืืื ืืึทืื ืคืื ืื ืืึธืงืงืขืจ ืืืื, ืืืจ ืืขืจืืื ืจืขืืืฆืืจื ืื ืจืฉืืื ืคืื ืืืึทืื ืขืจืึทืืืืืืื. ืืื ืืขืจืฆื, ืืืจ ืืึทืื ืื ืืืืืขืจ ืงืืื ืขืจ, ืืืืึทื ืืื ืึทื ืืืึทืืื ืืืืื ืืืึธืก ืืื ืืืจืฃ ืฆื ืืืืคื ืึทืคึผืืึทืงืืืฉืึทื ื.
ืขืก ืืื ื ืึธื ืึท ืงืืืื ืืืึทืืข - ืืืืืขืจ ืืขื ืขื ืืึทืื ืืึธืืืื ืึท ืืืกื ืคืึทืกืืขืจ, ืึธืืขืจ, ืืื ืืืื ืืืื ืื ื, ืืึธืก ืืื ื ืืฉื ืึทืืื ืืืืืืืง.
ืืืืข ืืึธื: ืืืื ืืืจ ืืขื ื ืืืจืื ืืืขืื ืืจืืืก, ืื ืึทืืคึผืืื ืงืืงื ืืื ืืื ืงืืืื ืืื ืืืขื ืืกืชึผืื ืคึผืึทืกืืง ืืืจ.
ืืืกืืจืึธืืขืกืก ืืืืืขืจ
pip
ะธ apt
ืืืขื ื ืืฉื ืึทืจืืขืื:
FROM gcr.io/distroless/python3
RUN pip3 install numpy
Dockerfile ื ืืฆื Python 3 ืืืกืืจืึธืืขืกืก ืืืื
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/
ืืืืื-ืืื ืข ืคึฟืึทืจืืึทืืืื ื
ืืขืจ ืจืขืืืืืึทื ืืื ืึท ืืืื ืคืื 130 ืื ืืื ืืจืืืก. ื ืืฉื ืฆื ืฉืืขืื! ืคึฟืึทืจ ืคืึทืจืืืืึทื: ืื ืคืขืืืงืืึทื ืคึผืืืืึธื ืืืื ืืืืื 929 ืื, ืืื ืื "ืืื ืขืจ" ืืืื ืขืจ (3,7-slim
) - 179 ืื, ืึทืืคึผืืื ืืืื (3,7-alpine
) ืืื 98,6MB, ืืฉืขืช ืื ืืึทืืข ืืืกืืจืึธืืขืกืก ืืืื ืืขื ืืฆื ืืื ืืขื ืืืึทืฉืคึผืื ืืื 50,9MB.
ืขืก ืืื ืฉืืื ืฆื ืคืื ื ืืืืก ืึทื ืืื ืื ืคืจืืขืจืืืงืข ืืืึทืฉืคึผืื ืืืจ ืงืึทืคึผืืื ื ืึท ืืึทื ืฅ ืืืขืืืืืึทืืขืจ /usr/local/lib/python3.7/site-packages
, ืืืึธืก ืงืขื ืึทื ืืืึทืืื ืืืคึผืขื ืืึทื ืกืื ืืืึธืก ืืืจ ืืึธื ื ืื ืืึทืจืคึฟื. ืืึธืืฉ ืขืก ืืื ืงืืึธืจ ืึทื ืื ืืจืืืก ืืืืืง ืคืื ืึทืืข ืืืืืกืืื ื ืคึผืืืืึธื ืืึทืืข ืืืืืขืจ ืืืขืจืื.
ืืื ืืขืจ ืฆืืื ืคืื ืฉืจืืืื, Google ืืืกืืจืึธืืขืกืก ืฉืืืฆื ื ืืฉื ืคืืืข ืืืืืขืจ: Java ืืื Python ืืขื ืขื ื ืึธื ืืื ืืขืจ ืืงืกืคึผืขืจืืขื ืึทื ืืื ืข, ืืื Python ืืื ืืืืื 2,7 ืืื 3,5.
ืงืืืื ืืฉืืง ืืืืืขืจ
ืฆืืจืืง ืฆื ืืืื ืืึทื ืขืืขื ืืฉ ืืื ืงืจืืืืืื ื ืงืืืื ืืืืืขืจ.
ืืื ืึทืืืขืืืื, ืืื ืืขืืืืื ืฆื ืืขื ืืื ืืืกืืจืึธืืึทืก ืืืืืขืจ ืืขื ืขื ืงืึทื ืกืืจืึทืงืืึทื. ืื ืืืกืืจืืืึทืก ืคึผืจืืืขืงื ื ืืฆื Google ืก ืืืืขื ืืขืฆืืึทื bazel
. ืึธืืขืจ, ืื ืกืืึธืืื ื Bazel ืืื ืฉืจืืืื ืืืื ืืืืืขื ืข ืืืืืขืจ ืืื ืึท ืคึผืืึทืฅ ืคืื ืึทืจืืขื (ืืื ืฆื ืืืื ืขืจืืขื, ืจืืื ืืืขื ืืื ื ืื ืจืึธื ืืื ืฉืคึผืึทืก ืืื ืืืืืื ืืงืจืืื). ืืื ืืขืืืืื ืฆื ืคืึทืจืคึผืึธืฉืขืืขืจื ืื ืฉืึทืคืื ื ืคืื ืงืืขื ืขืจืขืจ ืืืืืขืจ: ืืขืจ ืึทืงื ืคืื ืฉืึทืคึฟื ืึท ืืืื ืืึธื ืืืื ืืึธืจ ืคึผืฉืื, ืืึทื ืึทื. ืึทืืื ืึทื ืขืก ืืขื ืขื ืงืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืขืก ืคึฟืึทืจ ืืืจ, ื ืึธืจ ืืืื ืฉืืจื ืืื ืื ืงืึทื ืกืึธืื: ะฟัะพััะพ ัะพะฑัะฐัั ะพะฑัะฐะท ะดะปั <ะฟัะธะปะพะถะตะฝะธะต>
.
ืึทืืื, ืืืื ืืืจ ืืืืื ืฆื ืืึทืื ืืืื ืืืืืขื ืข ืืืืืขืจ, ืืืืกื: ืขืก ืืื ืึทืืึท ืึท ืืื ืฆืืง ืืึธืงืงืขืจ ืืืื, scratch
. ืงืจืึทืฆื ืืื ืึท "ืืืืืืง" ืืืื, ืขืก ืืขื ืขื ืงืืื ืืขืงืขืก ืืื ืขืก, ืืึธืืฉ ืขืก ืืืืื ืืืจื ืคืขืืืงืืึทื - ืืืึทื! - 77 ืืืืขืก.
FROM scratch
ืงืจืึทืฆื ืืืื
ืืขืจ ืืขืืึทื ืง ืคืื ืึท ืงืจืึทืฆื ืืืื ืืื ืึทื ืืืจ ืงืขื ืขื ื ืึธืืืึทืื ืงืืื ืืืคึผืขื ืืึทื ืกืื ืคืื ืืขืจ ืืึทืืขืืึธืก ืืึทืฉืื ืืื ืขืก ืืื ืึธืืขืจ ื ืืฆื ืืื ืืื ืึท ืืึธืงืงืขืจืคืืืข (ืืึธืก ืืื ืืื ืงืึทืคึผืืื ื ืืื ืฆื apt
ืืื ืื ืกืืึทืืืจื ืคึฟืื ืงืจืึทืฆื), ืึธืืขืจ ืฉืคึผืขืืขืจ ืืืขื ืื ืืึธืงืงืขืจ ืืืื ืืื ืืึทืืืจืืึทืืืืื. ืืึธืก ืึทืืึทืื ืืืจ ืฆื ืืึธืจ ืงืึธื ืืจืึธืืืจื ืื ืืื ืืึทืื ืคืื ืื ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจ, ืืื ืึทืืื ืืึธืจ ืงืึธื ืืจืึธืืืจื ืื ืืจืืืก ืคืื ืืขื ืืืื.
ืืืฆื ืืืจ ืืึทืจืคึฟื ืฆื ืขืคืขืก ืงืืืึทืื ืื ืืืคึผืขื ืืึทื ืกืื. ืืืืืกืืื ื ืืืฉืืจืื ืืื apt
ืืึธืื ืืืจ ืืจืืคืงืืคืืข ืคึผืึทืงืึทืืืฉืึทื, ืึธืืขืจ ืืื ืืขื ืขื ืืืื ืฆื ืื ืงืจืึทื ื ืืึทืฉืื ืืื ื ืึธื ืึทืืข, ืืื ืฉืืืฆื ื ืืฉื Windows ืึธืืขืจ MacOS.
ืึทืืื ืืื ืคึผืืึทื ื ืขื ืฆื ืืืืขื ืืืื ืืืืื ืืขืฆืืึทื ืืืึธืก ืืืึธืื ืืืืืึธืืึทืืืฉ ืืืืขื ืึท ืืึทืืข ืืืื ืคืื ืืขืจ ืงืืขื ืกืืขืจ ืืขืืืขื ืืจืืืก ืืื ืืืื ืืืืคื ืงืืื ืึทืคึผืืึทืงืืืฉืึทื. ืืื ืืขืืืืื ื ืืืื ืื / ืืขืืืึทื ืคึผืึทืงืึทืืืฉืึทื, ืืขืืืื ืึท ืกืขืืขืงืฆืืข (ืืึทืงืืืขื ืคึผืึทืงืึทืืืฉืึทื ืืืืื ืคึฟืื ืื ืจืืคึผืึทืืึทืืึธืจืื) ืืื ืจืขืงืืจืกืืืืื ืืขืคึฟืื ืขื ืืืืขืจ ืืืคึผืขื ืืึทื ืกืื. ืืขืจ ืคึผืจืึธืืจืึทื ืืื ืืขืืืขื ืืขืืืื ื ืฆื ืืืืืึธืืึทืืืฉ ืืจืืคืงืืคืืข ืื ืืขืฆืืข ืกืืึทืืื ืืืขืจืกืืข ืคืื โโโโืืขื ืคึผืขืงื, ืืื ืึทืืืืืื ื ืืืืขืจืืืื ืจืืกืงืก ืืื ืคืื ืืื ืืขืืืขื.
ืืื ืืขืจืืคึฟื ืืขื ืืขืฆืืึทื fetchy
, ืืืืื ืขืจ... ืืขืคืื ื ืืื ืืจืขื ืื... ืืืืก ืืขื ืืืจืฃ [ืคืื ืขื ืืืืฉ "ืืจืขื ืืขื", "ืืจืขื ืืขื" - ืืขืขืจืขื. ืืื ืืข]. ืื ืืขืฆืืึทื ืึทืจืืขื ืืืจื ืึท ืืึทืคึฟืขื ืฉืืจื ืฆืืืื ื, ืึธืืขืจ ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืึธืคืคืขืจืก ืึทื ืึทืคึผื.
ืฆื ืึทืกืขืืืึทื ืึท ืืืื ื ืืฆื fetchy
(ืืึธืืืจ ื ืขืืขื ืึท ืคึผืืืืึธื ืืืื ืืึธืก ืืึธื), ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ื ืืฆื ืื CLI ืืื ืืึธืก: fetchy dockerize python
. ืืืจ ืงืขื ืืืื ืืขืืขืื ืคึฟืึทืจ ืื ืฆืื ืึธืคึผืขืจืืืืื ื ืกืืกืืขื ืืื ืงืึธืืขื ืึทืืข ืืืืึทื fetchy
ืืขืจืืืืึทื ื ืืฆื ืืืืื ืคึผืึทืงืึทืืืฉืึทื ืืืืืจื ืืืืฃ ืืขืืืึทื ืืื ืืืื ืื.
ืืืฆื ืืืจ ืงืขื ืขื ืงืืืึทืื ืืืึธืก ืืืคึผืขื ืืึทื ืกืื ืืขื ืขื ื ืืฉื ืืืจืฃ ืืื ืึทืืข (ืืื ืืื ืืืขืจ ืงืึธื ืืขืงืกื) ืืื ืืืกืฉืืืกื ืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, Python ืืขืคึผืขื ืืก ืืืืฃ ืคึผืขืจื, ืืึธืืฉ ืขืก ืึทืจืืขื ืคืืึทื ืึธื ืคึผืขืจื ืืื ืกืืึทืืืจื.
ืจืขืืืืืึทืื
ืคึผืืืืึธื ืืืื ืืืฉืืคื ืืื ืืขื ืืึทืคึฟืขื fetchy dockerize python3.5
ืืืืื ืืืืื 35MB (ืืื ืืื ืืขืจ ืืื ืืืืขืจ ืึทื ืืื ืืขืจ ืฆืืงืื ืคึฟื ืขืก ืงืขื ืขื ืืืื ืืขืืืื ืืคืืื ืืืืืขืจ). ืขืก ืืืจื ืก ืืืืก ืึทื ืืืจ ืืขืจืืื ืฆื ืืึธืื ืึทืืืขืง ื ืึธื 15 ืืืื ืคืื ืื ืืืกืืจืึธืืึทืก ืืืื.
ืืืจ ืงืขื ืขื ืืขื ืึทืืข ืื ืืืืืขืจ ืืขืืืืื ืืื ืืืฆื
ืคึผืจืึธืืขืงื -
ืืืื ืืืจ ืคืขืื ืคึฟืขืึดืงืืืื, ื ืึธืจ ืืึทืื ืึท ืืงืฉื - ืืื ืืืขื ืืืื ืฆืืคืจืืื ืฆื ืืขืืคื :) ืืคืืื ืืขืจ, ืืื ืืื ืืืฆื ืืจืืขืื ืืืืฃ ืื ืืึทืืจืืืืื ื ืื ืืขืจืข ืคึผืขืงื ืืึทื ืึทืืืฉืขืจื ืืื ืคืขืืฉื, ืึทืืื ืึทื ืขืก ืืื ื ืื ื ืืืืืง ืคึฟืึทืจ ืืึทืืื-ืืื ืข ืืืืขื.
ืืงืืจ: www.habr.com