ತಮ್ಮನ್ನೇ ನಂಬಿದ ಪುಟ್ಟ ಡಾಕರ್ ಚಿತ್ರಗಳು*

[ಅಮೆರಿಕನ್ ಮಕ್ಕಳ ಕಾಲ್ಪನಿಕ ಕಥೆ "ದಿ ಲಿಟಲ್ ಇಂಜಿನ್ ದಟ್ ಕುಡ್" ಗೆ ಉಲ್ಲೇಖ - ಅಂದಾಜು. ಲೇನ್]*

ತಮ್ಮನ್ನೇ ನಂಬಿದ ಪುಟ್ಟ ಡಾಕರ್ ಚಿತ್ರಗಳು*

ನಿಮ್ಮ ಅಗತ್ಯಗಳಿಗಾಗಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಣ್ಣ ಡಾಕರ್ ಚಿತ್ರಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು

ಅಸಾಮಾನ್ಯ ಗೀಳು

ಕಳೆದ ಎರಡು ತಿಂಗಳುಗಳಿಂದ, ಡಾಕರ್ ಚಿತ್ರವು ಎಷ್ಟು ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಇನ್ನೂ ಅಪ್ಲಿಕೇಶನ್ ಚಾಲನೆಯಲ್ಲಿದೆ ಎಂದು ನಾನು ಗೀಳನ್ನು ಹೊಂದಿದ್ದೇನೆ?

ನಾನು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇನೆ, ಕಲ್ಪನೆಯು ವಿಚಿತ್ರವಾಗಿದೆ.

ನಾನು ವಿವರಗಳು ಮತ್ತು ತಾಂತ್ರಿಕತೆಗಳಿಗೆ ಪ್ರವೇಶಿಸುವ ಮೊದಲು, ಈ ಸಮಸ್ಯೆಯು ನನ್ನನ್ನು ಏಕೆ ತುಂಬಾ ಕಾಡಿತು ಮತ್ತು ಅದು ನಿಮಗೆ ಹೇಗೆ ಸಂಬಂಧಿಸಿದೆ ಎಂಬುದನ್ನು ವಿವರಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ.

ಗಾತ್ರ ಏಕೆ ಮುಖ್ಯವಾಗಿದೆ

ಡಾಕರ್ ಚಿತ್ರದ ವಿಷಯಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ, ನಾವು ದುರ್ಬಲತೆಗಳ ಪಟ್ಟಿಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತೇವೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಾವು ಚಿತ್ರಗಳನ್ನು ಕ್ಲೀನರ್ ಮಾಡುತ್ತೇವೆ, ಏಕೆಂದರೆ ಅವುಗಳು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಚಲಾಯಿಸಲು ಬೇಕಾದುದನ್ನು ಮಾತ್ರ ಹೊಂದಿರುತ್ತವೆ.

ಇನ್ನೂ ಒಂದು ಸಣ್ಣ ಪ್ರಯೋಜನವಿದೆ - ಚಿತ್ರಗಳನ್ನು ಸ್ವಲ್ಪ ವೇಗವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ, ಆದರೆ, ನನ್ನ ಅಭಿಪ್ರಾಯದಲ್ಲಿ, ಇದು ಅಷ್ಟು ಮುಖ್ಯವಲ್ಲ.

ದಯವಿಟ್ಟು ಗಮನಿಸಿ: ನೀವು ಗಾತ್ರದ ಬಗ್ಗೆ ಕಾಳಜಿವಹಿಸಿದರೆ, ಆಲ್ಪೈನ್ ಸ್ವತಃ ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ನಿಮಗೆ ಸರಿಹೊಂದುತ್ತದೆ.

ಡಿಸ್ಟ್ರೋಲೆಸ್ ಚಿತ್ರಗಳು

ಪ್ರಾಜೆಕ್ಟ್ ಡಿಸ್ಟ್ರೋಲೆಸ್ ಮೂಲಭೂತ "ಡಿಸ್ಟ್ರೊಲೆಸ್" ಚಿತ್ರಗಳ ಆಯ್ಕೆಯನ್ನು ನೀಡುತ್ತದೆ, ಅವುಗಳು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ಗಳು, ಶೆಲ್‌ಗಳು ಮತ್ತು ನೀವು ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ ನೋಡಲು ಬಳಸುವ ಇತರ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ. ಪರಿಣಾಮವಾಗಿ, ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ಗಳನ್ನು ಬಳಸಿ 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,6MB ಆಗಿದೆ, ಆದರೆ ಉದಾಹರಣೆಯಲ್ಲಿ ಬಳಸಲಾದ ಬೇಸ್ ಡಿಸ್ಟ್ರೋಲೆಸ್ ಇಮೇಜ್ 50,9MB ಆಗಿದೆ.

ಹಿಂದಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ನಾವು ಸಂಪೂರ್ಣ ಡೈರೆಕ್ಟರಿಯನ್ನು ನಕಲಿಸುತ್ತಿದ್ದೇವೆ ಎಂದು ಎತ್ತಿ ತೋರಿಸುವುದು ನ್ಯಾಯೋಚಿತವಾಗಿದೆ /usr/local/lib/python3.7/site-packages, ಇದು ನಮಗೆ ಅಗತ್ಯವಿಲ್ಲದ ಅವಲಂಬನೆಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಎಲ್ಲಾ ಪೈಥಾನ್ ಮೂಲ ಚಿತ್ರಗಳ ಗಾತ್ರದ ವ್ಯತ್ಯಾಸವು ಬದಲಾಗುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾದರೂ.

ಬರೆಯುವ ಸಮಯದಲ್ಲಿ, ಗೂಗಲ್ ಡಿಸ್ಟ್ರೋಲೆಸ್ ಅನೇಕ ಚಿತ್ರಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ: ಜಾವಾ ಮತ್ತು ಪೈಥಾನ್ ಇನ್ನೂ ಪ್ರಾಯೋಗಿಕ ಹಂತದಲ್ಲಿದೆ ಮತ್ತು ಪೈಥಾನ್ 2,7 ಮತ್ತು 3,5 ಕ್ಕೆ ಮಾತ್ರ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.

ಚಿಕ್ಕ ಚಿತ್ರಗಳು

ಸಣ್ಣ ಚಿತ್ರಗಳನ್ನು ರಚಿಸುವ ನನ್ನ ಗೀಳಿಗೆ ಹಿಂತಿರುಗಿ.

ಸಾಮಾನ್ಯವಾಗಿ, ಡಿಸ್ಟ್ರೋಲೆಸ್ ಚಿತ್ರಗಳನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನೋಡಲು ನಾನು ಬಯಸುತ್ತೇನೆ. ಡಿಸ್ಟ್ರೋಲೆಸ್ ಯೋಜನೆಯು Google ನ ನಿರ್ಮಾಣ ಸಾಧನವನ್ನು ಬಳಸುತ್ತದೆ bazel. ಆದಾಗ್ಯೂ, Bazel ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು ಮತ್ತು ನಿಮ್ಮ ಸ್ವಂತ ಚಿತ್ರಗಳನ್ನು ಬರೆಯುವುದು ಬಹಳಷ್ಟು ಕೆಲಸವನ್ನು ತೆಗೆದುಕೊಂಡಿತು (ಮತ್ತು ಪ್ರಾಮಾಣಿಕವಾಗಿ ಹೇಳಬೇಕೆಂದರೆ, ಚಕ್ರವನ್ನು ಮರುಶೋಧಿಸುವುದು ವಿನೋದ ಮತ್ತು ಶೈಕ್ಷಣಿಕವಾಗಿದೆ). ನಾನು ಚಿಕ್ಕ ಚಿತ್ರಗಳ ರಚನೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ಬಯಸುತ್ತೇನೆ: ಚಿತ್ರವನ್ನು ರಚಿಸುವ ಕ್ರಿಯೆಯು ಅತ್ಯಂತ ಸರಳವಾಗಿರಬೇಕು, ನೀರಸ. ಆದ್ದರಿಂದ ನಿಮಗಾಗಿ ಯಾವುದೇ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ಗಳಿಲ್ಲ, ಕನ್ಸೋಲ್‌ನಲ್ಲಿ ಕೇವಲ ಒಂದು ಸಾಲು: просто собрать образ для <приложение>.

ಆದ್ದರಿಂದ, ನೀವು ನಿಮ್ಮ ಸ್ವಂತ ಚಿತ್ರಗಳನ್ನು ರಚಿಸಲು ಬಯಸಿದರೆ, ನಂತರ ತಿಳಿಯಿರಿ: ಅಂತಹ ವಿಶಿಷ್ಟವಾದ ಡಾಕರ್ ಚಿತ್ರವಿದೆ, scratch. ಸ್ಕ್ರ್ಯಾಚ್ ಒಂದು "ಖಾಲಿ" ಚಿತ್ರವಾಗಿದೆ, ಅದರಲ್ಲಿ ಯಾವುದೇ ಫೈಲ್‌ಗಳಿಲ್ಲ, ಆದರೂ ಇದು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ತೂಗುತ್ತದೆ - ವಾಹ್! - 77 ಬೈಟ್‌ಗಳು.

FROM scratch

ಸ್ಕ್ರಾಚ್ ಚಿತ್ರ

ಸ್ಕ್ರ್ಯಾಚ್ ಇಮೇಜ್‌ನ ಕಲ್ಪನೆಯೆಂದರೆ ನೀವು ಹೋಸ್ಟ್ ಯಂತ್ರದಿಂದ ಯಾವುದೇ ಅವಲಂಬನೆಗಳನ್ನು ನಕಲಿಸಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಡಾಕರ್‌ಫೈಲ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು (ಇದು ಅವುಗಳನ್ನು ನಕಲಿಸುವಂತಿದೆ apt ಮತ್ತು ಮೊದಲಿನಿಂದ ಸ್ಥಾಪಿಸಿ), ಅಥವಾ ನಂತರ ಡಾಕರ್ ಚಿತ್ರವು ಕಾರ್ಯರೂಪಕ್ಕೆ ಬಂದಾಗ. ಡಾಕರ್ ಕಂಟೇನರ್‌ನ ವಿಷಯಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿಯಂತ್ರಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಹೀಗಾಗಿ ಚಿತ್ರದ ಗಾತ್ರವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿಯಂತ್ರಿಸುತ್ತದೆ.

ಈಗ ನಾವು ಹೇಗಾದರೂ ಈ ಅವಲಂಬನೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಬೇಕಾಗಿದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಉಪಕರಣಗಳು ಹಾಗೆ apt ಪ್ಯಾಕೇಜುಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ, ಆದರೆ ಅವುಗಳು ಪ್ರಸ್ತುತ ಯಂತ್ರಕ್ಕೆ ಸಂಬಂಧಿಸಿವೆ ಮತ್ತು ಎಲ್ಲಾ ನಂತರ, Windows ಅಥವಾ MacOS ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.

ಆದ್ದರಿಂದ ನಾನು ನನ್ನ ಸ್ವಂತ ಸಾಧನವನ್ನು ನಿರ್ಮಿಸಲು ಹೊರಟಿದ್ದೇನೆ ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಾಧ್ಯವಾದಷ್ಟು ಚಿಕ್ಕ ಗಾತ್ರದ ಮೂಲ ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ ಮತ್ತು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ನಾನು ಉಬುಂಟು/ಡೆಬಿಯನ್ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಬಳಸಿದ್ದೇನೆ, ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ (ರೆಪೊಸಿಟರಿಗಳಿಂದ ನೇರವಾಗಿ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಪಡೆಯುತ್ತಿದ್ದೇನೆ) ಮತ್ತು ಪುನರಾವರ್ತಿತವಾಗಿ ಅವುಗಳ ಅವಲಂಬನೆಗಳನ್ನು ಕಂಡುಕೊಂಡೆ. ಪ್ರೋಗ್ರಾಂ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ಯಾಕೇಜ್‌ನ ಇತ್ತೀಚಿನ ಸ್ಥಿರ ಆವೃತ್ತಿಯನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬೇಕಾಗಿತ್ತು, ಭದ್ರತಾ ಅಪಾಯಗಳನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ನಾನು ಉಪಕರಣವನ್ನು ಹೆಸರಿಸಿದೆ fetchy, ಏಕೆಂದರೆ ಅವನು ... ಹುಡುಕುತ್ತಾನೆ ಮತ್ತು ತರುತ್ತಾನೆ ... ಏನು ಬೇಕು [ಇಂಗ್ಲೀಷ್ ನಿಂದ "ತರಲು", "ತರಲು" - ಅಂದಾಜು. ಲೇನ್]. ಉಪಕರಣವು ಆಜ್ಞಾ ಸಾಲಿನ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ ಅದೇ ಸಮಯದಲ್ಲಿ API ಅನ್ನು ನೀಡುತ್ತದೆ.

ಬಳಸಿ ಚಿತ್ರವನ್ನು ಜೋಡಿಸಲು fetchy (ಈ ಸಮಯದಲ್ಲಿ ಪೈಥಾನ್ ಚಿತ್ರವನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ), ನೀವು ಈ ರೀತಿಯ CLI ಅನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ: fetchy dockerize python. ನೀವು ಗುರಿ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಸಂಕೇತನಾಮವನ್ನು ಕೇಳಬಹುದು ಏಕೆಂದರೆ fetchy ಪ್ರಸ್ತುತ ಡೆಬಿಯನ್ ಮತ್ತು ಉಬುಂಟು ಆಧಾರಿತ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತದೆ.

ಈಗ ನೀವು ಯಾವ ಅವಲಂಬನೆಗಳ ಅಗತ್ಯವಿಲ್ಲ ಎಂಬುದನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು (ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ) ಮತ್ತು ಅವುಗಳನ್ನು ಹೊರಗಿಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ಪೈಥಾನ್ ಪರ್ಲ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಆದರೂ ಪರ್ಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸದೆಯೇ ಅದು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ರೆಸೆಲ್ಯೂಟ್ಸ್

ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಪೈಥಾನ್ ಚಿತ್ರವನ್ನು ರಚಿಸಲಾಗಿದೆ fetchy dockerize python3.5 ಕೇವಲ 35MB ತೂಗುತ್ತದೆ (ಭವಿಷ್ಯದಲ್ಲಿ ಅದನ್ನು ಇನ್ನಷ್ಟು ಹಗುರಗೊಳಿಸಬಹುದು ಎಂದು ನನಗೆ ಖಚಿತವಾಗಿದೆ). ಡಿಸ್ಟ್ರೋಲೆಸ್ ಚಿತ್ರದಿಂದ ನಾವು ಇನ್ನೊಂದು 15 WW ಅನ್ನು ಕ್ಷೌರ ಮಾಡಲು ನಿರ್ವಹಿಸುತ್ತಿದ್ದೇವೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ.

ಇಲ್ಲಿಯವರೆಗೆ ಸಂಗ್ರಹಿಸಿದ ಎಲ್ಲಾ ಚಿತ್ರಗಳನ್ನು ನೀವು ನೋಡಬಹುದು ಇಲ್ಲಿ.

ಯೋಜನೆ - ಇಲ್ಲಿ.

ನೀವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಳೆದುಕೊಂಡಿದ್ದರೆ, ಕೇವಲ ವಿನಂತಿಯನ್ನು ರಚಿಸಿ - ಸಹಾಯ ಮಾಡಲು ನಾನು ಸಂತೋಷಪಡುತ್ತೇನೆ :) ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ, ನಾನು ಪ್ರಸ್ತುತ ಇತರ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ಗಳನ್ನು ಫೆಚಿಗೆ ಸಂಯೋಜಿಸಲು ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇನೆ, ಇದರಿಂದ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣಗಳ ಅಗತ್ಯವಿಲ್ಲ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ