
ನಿಮ್ಮ ಅಗತ್ಯಗಳಿಗಾಗಿ ಸಣ್ಣ ಡಾಕರ್ ಚಿತ್ರಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೇಗೆ ರಚಿಸುವುದು
ಅಸಾಮಾನ್ಯ ಗೀಳು.
ಕಳೆದ ಎರಡು ತಿಂಗಳುಗಳಿಂದ, ನಾನು ಈ ಆಲೋಚನೆಯೊಂದಿಗೆ ಗೀಳಾಗಿದ್ದೇನೆ: ಡಾಕರ್ ಇಮೇಜ್ ಎಷ್ಟು ಚಿಕ್ಕದಾಗಿರಬಹುದು ಮತ್ತು ಇನ್ನೂ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವಂತೆ ಮಾಡಬಹುದು?
ನನಗೆ ಅರ್ಥವಾಯಿತು, ಈ ಕಲ್ಪನೆ ವಿಚಿತ್ರವಾಗಿದೆ.
ನಾನು ವಿವರಗಳು ಮತ್ತು ತಾಂತ್ರಿಕತೆಗಳಿಗೆ ಹೋಗುವ ಮೊದಲು, ಈ ವಿಷಯವು ನನಗೆ ಏಕೆ ಇಷ್ಟೊಂದು ಆಸಕ್ತಿಯನ್ನುಂಟುಮಾಡಿದೆ ಮತ್ತು ಅದು ನಿಮ್ಮ ಮೇಲೆ ಹೇಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ ಎಂಬುದನ್ನು ವಿವರಿಸಲು ಬಯಸುತ್ತೇನೆ.
ಗಾತ್ರ ಏಕೆ ಮುಖ್ಯ
ಡಾಕರ್ ಚಿತ್ರದ ವಿಷಯಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ, ನಾವು ದುರ್ಬಲತೆಗಳ ಪಟ್ಟಿಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತೇವೆ. ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಚಲಾಯಿಸಲು ಅಗತ್ಯವಿರುವದನ್ನು ಮಾತ್ರ ಅವು ಒಳಗೊಂಡಿರುವುದರಿಂದ ನಾವು ಚಿತ್ರಗಳನ್ನು ಸಹ ಸ್ವಚ್ಛಗೊಳಿಸುತ್ತೇವೆ.
ಇನ್ನೂ ಒಂದು ಸಣ್ಣ ಪ್ರಯೋಜನವಿದೆ - ಚಿತ್ರಗಳು ಸ್ವಲ್ಪ ವೇಗವಾಗಿ ಡೌನ್ಲೋಡ್ ಆಗುತ್ತವೆ, ಆದರೆ ನನ್ನ ಅಭಿಪ್ರಾಯದಲ್ಲಿ ಇದು ಅಷ್ಟು ಮುಖ್ಯವಲ್ಲ.
ದಯವಿಟ್ಟು ಗಮನಿಸಿ: ನೀವು ಗಾತ್ರದ ಬಗ್ಗೆ ಕಾಳಜಿ ವಹಿಸುತ್ತಿದ್ದರೆ, ಆಲ್ಪೈನ್ ಚಿತ್ರಗಳು ಚಿಕ್ಕದಾಗಿರುತ್ತವೆ ಮತ್ತು ನಿಮಗೆ ಸರಿಹೊಂದುತ್ತವೆ.
ಡಿಸ್ಟ್ರೋಲೆಸ್ ಚಿತ್ರಗಳು
ಮೂಲಭೂತ "ಡಿಸ್ಟ್ರೋಲೆಸ್" ಚಿತ್ರಗಳ ಆಯ್ಕೆಯನ್ನು ನೀಡುತ್ತದೆ; ಅವು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗಳು, ಶೆಲ್ಗಳು ಅಥವಾ ನೀವು ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ ನೋಡಲು ಒಗ್ಗಿಕೊಂಡಿರುವ ಇತರ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ. ಪರಿಣಾಮವಾಗಿ, ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗಳನ್ನು ಬಳಸುವುದು pip и apt ಅದು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ:
FROM gcr.io/distroless/python3
RUN pip3 install numpyಪೈಥಾನ್ 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/ಬಹು-ಹಂತದ ಜೋಡಣೆ
ಫಲಿತಾಂಶದ ಚಿತ್ರವು 130MB ಗಾತ್ರದಲ್ಲಿದೆ. ಅಷ್ಟೇನೂ ಕೆಟ್ಟದ್ದಲ್ಲ! ಹೋಲಿಕೆಗಾಗಿ, ಡೀಫಾಲ್ಟ್ ಪೈಥಾನ್ ಚಿತ್ರವು 929MB ತೂಗುತ್ತದೆ, ಮತ್ತು "ಸ್ಲಿಮ್ಡ್ ಡೌನ್" ಚಿತ್ರವು (3,7-slim) - 179MB, ಆಲ್ಪೈನ್ ಚಿತ್ರ (3,7-alpine) — 98,6 MB, ಆದರೆ ಉದಾಹರಣೆಯಲ್ಲಿ ಬಳಸಲಾದ ಮೂಲ ಡಿಸ್ಟ್ರೋಲೆಸ್ ಚಿತ್ರವು 50,9 MB ಆಗಿದೆ.
ಹಿಂದಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ನಾವು ಸಂಪೂರ್ಣ ಡೈರೆಕ್ಟರಿಯನ್ನು ನಕಲಿಸುತ್ತಿದ್ದೇವೆ ಎಂದು ಸರಿಯಾಗಿ ಸೂಚಿಸಬಹುದು. /usr/local/lib/python3.7/site-packages, ಇದು ನಮಗೆ ಅಗತ್ಯವಿಲ್ಲದ ಅವಲಂಬನೆಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಆದಾಗ್ಯೂ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಎಲ್ಲಾ ಪೈಥಾನ್ ಬೇಸ್ ಚಿತ್ರಗಳ ನಡುವಿನ ಗಾತ್ರದ ವ್ಯತ್ಯಾಸವು ಏರಿಳಿತಗೊಳ್ಳುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿದೆ.
ಈ ಲೇಖನ ಬರೆಯುವ ಸಮಯದಲ್ಲಿ, ಗೂಗಲ್ ಡಿಸ್ಟ್ರೋಲೆಸ್ ಹೆಚ್ಚಿನ ಚಿತ್ರಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ: ಜಾವಾ ಮತ್ತು ಪೈಥಾನ್ ಇನ್ನೂ ಪ್ರಾಯೋಗಿಕವಾಗಿವೆ, ಮತ್ತು ಪೈಥಾನ್ 2,7 ಮತ್ತು 3,5 ಕ್ಕೆ ಮಾತ್ರ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.
ಸಣ್ಣ ಚಿತ್ರಗಳು
ಸಣ್ಣ ಚಿತ್ರಗಳನ್ನು ರಚಿಸುವ ನನ್ನ ಗೀಳಿಗೆ ಹಿಂತಿರುಗಿ ನೋಡೋಣ.
ಡಿಸ್ಟ್ರೋಲೆಸ್ ಇಮೇಜ್ಗಳನ್ನು ಹೇಗೆ ರಚಿಸಲಾಗಿದೆ ಎಂದು ನೋಡಲು ನಾನು ನಿಜವಾಗಿಯೂ ಬಯಸಿದ್ದೆ. ಡಿಸ್ಟ್ರೋಲೆಸ್ ಯೋಜನೆಯು Google ನ ಬಿಲ್ಡ್ ಟೂಲ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. bazelಆದಾಗ್ಯೂ, ಬಾಜೆಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು ಮತ್ತು ನನ್ನ ಸ್ವಂತ ಚಿತ್ರಗಳನ್ನು ರಚಿಸುವುದು ಸ್ವಲ್ಪ ಪ್ರಯತ್ನವನ್ನು ತೆಗೆದುಕೊಂಡಿತು (ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಪ್ರಾಮಾಣಿಕವಾಗಿ ಹೇಳಬೇಕೆಂದರೆ, ಚಕ್ರವನ್ನು ಮರುಶೋಧಿಸುವುದು ಮೋಜಿನ ಮತ್ತು ಶೈಕ್ಷಣಿಕವಾಗಿದೆ). ಸ್ಕೇಲ್ಡ್-ಡೌನ್ ಚಿತ್ರಗಳ ರಚನೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ: ಚಿತ್ರವನ್ನು ರಚಿಸುವ ಕ್ರಿಯೆ ಅತ್ಯಂತ ಸರಳವಾಗಿರಬೇಕು, ನೀರಸಆದ್ದರಿಂದ ನಿಮಗಾಗಿ ಯಾವುದೇ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳಿಲ್ಲ, ಕನ್ಸೋಲ್ನಲ್ಲಿ ಕೇವಲ ಒಂದು ಸಾಲು: просто собрать образ для <приложение>.
ಆದ್ದರಿಂದ, ನೀವು ನಿಮ್ಮ ಸ್ವಂತ ಚಿತ್ರಗಳನ್ನು ರಚಿಸಲು ಬಯಸಿದರೆ, ಅಂತಹ ವಿಶಿಷ್ಟವಾದ ಡಾಕರ್ ಚಿತ್ರವಿದೆ ಎಂದು ತಿಳಿಯಿರಿ, scratchಸ್ಕ್ರ್ಯಾಚ್ ಒಂದು "ಖಾಲಿ" ಚಿತ್ರ; ಅದು ಯಾವುದೇ ಫೈಲ್ಗಳನ್ನು ಹೊಂದಿಲ್ಲ, ಆದರೂ ಅದು ತೂಕ - ವಾಹ್! - ಡೀಫಾಲ್ಟ್ ಆಗಿ 77 ಬೈಟ್ಗಳು.
FROM scratchಸ್ಕ್ರ್ಯಾಚ್ ಚಿತ್ರ
ಸ್ಕ್ರ್ಯಾಚ್ ಇಮೇಜ್ನ ಹಿಂದಿನ ಉದ್ದೇಶವೆಂದರೆ ನೀವು ಹೋಸ್ಟ್ ಯಂತ್ರದಿಂದ ಯಾವುದೇ ಅವಲಂಬನೆಗಳನ್ನು ಅದಕ್ಕೆ ನಕಲಿಸಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಡಾಕರ್ಫೈಲ್ ಒಳಗೆ ಬಳಸಬಹುದು (ಅದು ಅವುಗಳನ್ನು ನಕಲಿಸಿದಂತೆ apt ಮತ್ತು ಮೊದಲಿನಿಂದ ಸ್ಥಾಪಿಸಿ), ಅಥವಾ ನಂತರ, ಡಾಕರ್ ಚಿತ್ರವು ಕಾರ್ಯರೂಪಕ್ಕೆ ಬಂದ ನಂತರ. ಇದು ಡಾಕರ್ ಕಂಟೇನರ್ನ ವಿಷಯಗಳ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣವನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಹೀಗಾಗಿ ಚಿತ್ರದ ಗಾತ್ರದ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತದೆ.
ಈಗ ನಾವು ಈ ಅವಲಂಬನೆಗಳನ್ನು ಹೇಗಾದರೂ ಸಂಗ್ರಹಿಸಬೇಕಾಗಿದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪರಿಕರಗಳು apt ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಅವು ಪ್ರಸ್ತುತ ಯಂತ್ರಕ್ಕೆ ಸಂಬಂಧಿಸಿವೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ, ವಿಂಡೋಸ್ ಅಥವಾ ಮ್ಯಾಕೋಸ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.
ಹಾಗಾಗಿ ನಾನು ಸಾಧ್ಯವಾದಷ್ಟು ಚಿಕ್ಕ ಗಾತ್ರದ ಬೇಸ್ ಇಮೇಜ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಮಿಸುವ ಮತ್ತು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಚಲಾಯಿಸುವ ನನ್ನ ಸ್ವಂತ ಸಾಧನವನ್ನು ನಿರ್ಮಿಸಲು ನಿರ್ಧರಿಸಿದೆ. ನಾನು ಉಬುಂಟು/ಡೆಬಿಯನ್ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಬಳಸಿದ್ದೇನೆ, ಆಯ್ಕೆಯನ್ನು ರಚಿಸಿದೆ (ರೆಪೊಸಿಟರಿಗಳಿಂದ ನೇರವಾಗಿ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಹಿಂಪಡೆಯುವುದು), ಮತ್ತು ಪುನರಾವರ್ತಿತವಾಗಿ ಅವುಗಳ ಅವಲಂಬನೆಗಳನ್ನು ಕಂಡುಕೊಂಡೆ. ಪ್ರೋಗ್ರಾಂ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ಯಾಕೇಜ್ನ ಇತ್ತೀಚಿನ ಸ್ಥಿರ ಆವೃತ್ತಿಯನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಬೇಕಾಗಿತ್ತು, ಭದ್ರತಾ ಅಪಾಯಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಬೇಕಾಗಿತ್ತು.
ನಾನು ವಾದ್ಯಕ್ಕೆ ಹೆಸರಿಟ್ಟಿದ್ದೇನೆ. fetchy, ಏಕೆಂದರೆ ಅವನು... ಹುಡುಕುತ್ತಾನೆ ಮತ್ತು ತರುತ್ತಾನೆ... ಬೇಕಾದುದನ್ನು [ಇಂಗ್ಲಿಷ್ ನಿಂದ "ತರಲು", "ತರಲು" — ಅನುವಾದ. ಗಮನಿಸಿ]. ಈ ಉಪಕರಣವು ಆಜ್ಞಾ ಸಾಲಿನ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ API ಅನ್ನು ಸಹ ನೀಡುತ್ತದೆ.
ಚಿತ್ರವನ್ನು ಜೋಡಿಸಲು, ಬಳಸಿ fetchy (ಈ ಬಾರಿ ಪೈಥಾನ್ ಚಿತ್ರವನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ), ನೀವು CLI ಅನ್ನು ಈ ರೀತಿ ಬಳಸಬೇಕು: fetchy dockerize pythonನಿಮ್ಮಿಂದ ಗುರಿ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಕೋಡ್ ಹೆಸರನ್ನು ಕೇಳಬಹುದು ಏಕೆಂದರೆ fetchy ಪ್ರಸ್ತುತ ಡೆಬಿಯನ್ ಮತ್ತು ಉಬುಂಟು ಆಧಾರಿತ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತದೆ.
ಈಗ ನೀವು ಯಾವ ಅವಲಂಬನೆಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಅನಗತ್ಯ ಎಂಬುದನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು (ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ) ಮತ್ತು ಅವುಗಳನ್ನು ಹೊರಗಿಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ಪೈಥಾನ್ ಪರ್ಲ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಆದರೂ ಅದು ಪರ್ಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸದೆ ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ರೆಸೆಲ್ಯೂಟ್ಸ್
ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಪೈಥಾನ್ ಚಿತ್ರವನ್ನು ರಚಿಸಲಾಗಿದೆ. fetchy dockerize python3.5 ಇದರ ತೂಕ ಕೇವಲ 35MB (ಭವಿಷ್ಯದಲ್ಲಿ ಇದನ್ನು ಇನ್ನೂ ಹಗುರಗೊಳಿಸಬಹುದು ಎಂದು ನನಗೆ ಖಚಿತವಾಗಿದೆ). ಆದ್ದರಿಂದ, ನಾವು ಡಿಸ್ಟ್ರೋಲೆಸ್ ಇಮೇಜ್ನಿಂದ ಇನ್ನೂ 15MB ಅನ್ನು ತೆಗೆದುಹಾಕುವಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿದ್ದೇವೆ.
ಇಲ್ಲಿಯವರೆಗೆ ಸಂಗ್ರಹಿಸಲಾದ ಎಲ್ಲಾ ಚಿತ್ರಗಳನ್ನು ನೀವು ವೀಕ್ಷಿಸಬಹುದು. .
ಯೋಜನೆ - .
ನೀವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಳೆದುಕೊಂಡಿದ್ದರೆ, ವಿನಂತಿಯನ್ನು ರಚಿಸಿ—ನಾನು ಸಹಾಯ ಮಾಡಲು ಸಂತೋಷಪಡುತ್ತೇನೆ :) ಇದಲ್ಲದೆ, ನಾನು ಪ್ರಸ್ತುತ ಇತರ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗಳನ್ನು ಫೆಚಿಗೆ ಸಂಯೋಜಿಸುವ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇನೆ, ಆದ್ದರಿಂದ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣಗಳು ಅಗತ್ಯವಿರುವುದಿಲ್ಲ.
ಮೂಲ: www.habr.com
