ಡಾಕರ್ ಎಂದರೇನು: ಇತಿಹಾಸ ಮತ್ತು ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿಹಾರ

ಸ್ಲರ್ಮ್‌ನಲ್ಲಿ ಆಗಸ್ಟ್ 10 ರಂದು ಪ್ರಾರಂಭವಾಯಿತು ಡಾಕರ್ ವೀಡಿಯೊ ಕೋರ್ಸ್, ಇದರಲ್ಲಿ ನಾವು ಅದನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ವಿಶ್ಲೇಷಿಸುತ್ತೇವೆ - ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳಿಂದ ನೆಟ್ವರ್ಕ್ ನಿಯತಾಂಕಗಳಿಗೆ.

ಈ ಲೇಖನದಲ್ಲಿ ನಾವು ಡಾಕರ್‌ನ ಇತಿಹಾಸ ಮತ್ತು ಅದರ ಮುಖ್ಯ ಅಮೂರ್ತತೆಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ: ಇಮೇಜ್, ಕ್ಲಿ, ಡಾಕರ್‌ಫೈಲ್. ಉಪನ್ಯಾಸವು ಆರಂಭಿಕರಿಗಾಗಿ ಉದ್ದೇಶಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಅನುಭವಿ ಬಳಕೆದಾರರಿಗೆ ಇದು ಆಸಕ್ತಿಕರವಾಗಿರಲು ಅಸಂಭವವಾಗಿದೆ. ರಕ್ತ, ಅನುಬಂಧ ಅಥವಾ ಆಳವಾದ ಮುಳುಗುವಿಕೆ ಇರುವುದಿಲ್ಲ. ಅತ್ಯಂತ ಮೂಲಭೂತ ಅಂಶಗಳು.

ಡಾಕರ್ ಎಂದರೇನು: ಇತಿಹಾಸ ಮತ್ತು ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿಹಾರ

ಡಾಕರ್ ಎಂದರೇನು

ವಿಕಿಪೀಡಿಯಾದಿಂದ ಡಾಕರ್‌ನ ವ್ಯಾಖ್ಯಾನವನ್ನು ನೋಡೋಣ.

ಧಾರಕ ಪರಿಸರದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ನಿಯೋಜನೆ ಮತ್ತು ನಿರ್ವಹಣೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ಡಾಕರ್ ಸಾಫ್ಟ್‌ವೇರ್ ಆಗಿದೆ.

ಈ ವ್ಯಾಖ್ಯಾನದಿಂದ ಏನೂ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ. "ಧಾರಕೀಕರಣವನ್ನು ಬೆಂಬಲಿಸುವ ಪರಿಸರದಲ್ಲಿ" ಎಂದರೆ ಏನು ಎಂಬುದು ವಿಶೇಷವಾಗಿ ಅಸ್ಪಷ್ಟವಾಗಿದೆ. ಕಂಡುಹಿಡಿಯಲು, ನಾವು ಸಮಯಕ್ಕೆ ಹಿಂತಿರುಗಿ ನೋಡೋಣ. ನಾನು ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ "ಏಕಶಿಲೆಯ ಯುಗ" ಎಂದು ಕರೆಯುವ ಯುಗದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸೋಣ.

ಏಕಶಿಲೆಯ ಯುಗ

ಏಕಶಿಲೆಯ ಯುಗವು 2000 ರ ದಶಕದ ಆರಂಭದಲ್ಲಿ, ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಏಕಶಿಲೆಯಾಗಿದ್ದಾಗ, ಅವಲಂಬನೆಗಳ ಗುಂಪನ್ನು ಹೊಂದಿದೆ. ಅಭಿವೃದ್ಧಿಗೆ ಬಹಳ ಸಮಯ ಹಿಡಿಯಿತು. ಅದೇ ಸಮಯದಲ್ಲಿ, ಹೆಚ್ಚಿನ ಸರ್ವರ್‌ಗಳು ಇರಲಿಲ್ಲ; ನಾವು ಅವೆಲ್ಲವನ್ನೂ ಹೆಸರಿನಿಂದ ತಿಳಿದಿದ್ದೇವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿದ್ದೇವೆ. ಅಂತಹ ತಮಾಷೆಯ ಹೋಲಿಕೆ ಇದೆ:

ಸಾಕುಪ್ರಾಣಿಗಳು ಸಾಕು ಪ್ರಾಣಿಗಳು. ಏಕಶಿಲೆಯ ಯುಗದಲ್ಲಿ, ನಾವು ನಮ್ಮ ಸರ್ವರ್‌ಗಳನ್ನು ಸಾಕುಪ್ರಾಣಿಗಳಂತೆ ಪರಿಗಣಿಸಿದ್ದೇವೆ, ಅಂದ ಮಾಡಿಕೊಂಡ ಮತ್ತು ಪಾಲಿಸಿದ, ಧೂಳಿನ ಚುಕ್ಕೆಗಳನ್ನು ಹಾರಿಬಿಡುತ್ತೇವೆ. ಮತ್ತು ಉತ್ತಮ ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಗಾಗಿ, ನಾವು ವರ್ಚುವಲೈಸೇಶನ್ ಅನ್ನು ಬಳಸಿದ್ದೇವೆ: ನಾವು ಸರ್ವರ್ ಅನ್ನು ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ಹಲವಾರು ವರ್ಚುವಲ್ ಯಂತ್ರಗಳಾಗಿ ಕತ್ತರಿಸಿದ್ದೇವೆ, ಇದರಿಂದಾಗಿ ಪರಿಸರದ ಪ್ರತ್ಯೇಕತೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ.

ಹೈಪರ್ವೈಸರ್ ಆಧಾರಿತ ವರ್ಚುವಲೈಸೇಶನ್ ಸಿಸ್ಟಮ್ಸ್

ವರ್ಚುವಲೈಸೇಶನ್ ಸಿಸ್ಟಮ್‌ಗಳ ಬಗ್ಗೆ ಪ್ರತಿಯೊಬ್ಬರೂ ಬಹುಶಃ ಕೇಳಿರಬಹುದು: VMware, VirtualBox, Hyper-V, Qemu KVM, ಇತ್ಯಾದಿ. ಅವರು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತ್ಯೇಕತೆ ಮತ್ತು ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತಾರೆ, ಆದರೆ ಅವುಗಳು ಅನಾನುಕೂಲಗಳನ್ನು ಹೊಂದಿವೆ. ವರ್ಚುವಲೈಸೇಶನ್ ಮಾಡಲು, ನಿಮಗೆ ಹೈಪರ್ವೈಸರ್ ಅಗತ್ಯವಿದೆ. ಮತ್ತು ಹೈಪರ್ವೈಸರ್ ಒಂದು ಸಂಪನ್ಮೂಲ ಓವರ್ಹೆಡ್ ಆಗಿದೆ. ಮತ್ತು ವರ್ಚುವಲ್ ಯಂತ್ರವು ಸಾಮಾನ್ಯವಾಗಿ ಸಂಪೂರ್ಣ ಕೋಲೋಸಸ್ ಆಗಿದೆ - ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್, Nginx, Apache, ಮತ್ತು ಬಹುಶಃ MySQL ಅನ್ನು ಹೊಂದಿರುವ ಭಾರೀ ಚಿತ್ರ. ಚಿತ್ರವು ದೊಡ್ಡದಾಗಿದೆ ಮತ್ತು ವರ್ಚುವಲ್ ಯಂತ್ರವು ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅನಾನುಕೂಲವಾಗಿದೆ. ಪರಿಣಾಮವಾಗಿ, ವರ್ಚುವಲ್ ಯಂತ್ರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ನಿಧಾನವಾಗಬಹುದು. ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು, ವರ್ಚುವಲೈಸೇಶನ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಕರ್ನಲ್ ಮಟ್ಟದಲ್ಲಿ ರಚಿಸಲಾಗಿದೆ.

ಕರ್ನಲ್-ಮಟ್ಟದ ವರ್ಚುವಲೈಸೇಶನ್ ಸಿಸ್ಟಮ್ಸ್

ಕರ್ನಲ್-ಮಟ್ಟದ ವರ್ಚುವಲೈಸೇಶನ್ ಅನ್ನು OpenVZ, Systemd-nspawn, LXC ಸಿಸ್ಟಮ್‌ಗಳು ಬೆಂಬಲಿಸುತ್ತವೆ. ಅಂತಹ ವರ್ಚುವಲೈಸೇಶನ್‌ಗೆ ಗಮನಾರ್ಹ ಉದಾಹರಣೆಯೆಂದರೆ LXC (ಲಿನಕ್ಸ್ ಕಂಟೈನರ್‌ಗಳು).

LXC ಎನ್ನುವುದು ಒಂದೇ ನೋಡ್‌ನಲ್ಲಿ ಲಿನಕ್ಸ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನ ಅನೇಕ ಪ್ರತ್ಯೇಕ ನಿದರ್ಶನಗಳನ್ನು ಚಲಾಯಿಸಲು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್-ಮಟ್ಟದ ವರ್ಚುವಲೈಸೇಶನ್ ಸಿಸ್ಟಮ್ ಆಗಿದೆ. LXC ವರ್ಚುವಲ್ ಯಂತ್ರಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಆದರೆ ತನ್ನದೇ ಆದ ಪ್ರಕ್ರಿಯೆ ಸ್ಥಳ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಸ್ಟಾಕ್ನೊಂದಿಗೆ ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ.

ಮೂಲಭೂತವಾಗಿ LXC ಧಾರಕಗಳನ್ನು ರಚಿಸುತ್ತದೆ. ವರ್ಚುವಲ್ ಯಂತ್ರಗಳು ಮತ್ತು ಕಂಟೈನರ್‌ಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವೇನು?

ಡಾಕರ್ ಎಂದರೇನು: ಇತಿಹಾಸ ಮತ್ತು ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿಹಾರ

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

ವರ್ಚುವಲೈಸೇಶನ್ ಮತ್ತು ಕಂಟೈನರೈಸೇಶನ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳನ್ನು ರೇಖಾಚಿತ್ರದಲ್ಲಿ ಕಾಣಬಹುದು.
ಹಾರ್ಡ್‌ವೇರ್ ಹೈಪರ್‌ವೈಸರ್‌ಗಳು, ಓಎಸ್‌ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹೈಪರ್‌ವೈಸರ್‌ಗಳು ಮತ್ತು ಕಂಟೈನರ್‌ಗಳಿವೆ.

ಡಾಕರ್ ಎಂದರೇನು: ಇತಿಹಾಸ ಮತ್ತು ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿಹಾರ

ನೀವು ನಿಜವಾಗಿಯೂ ಏನನ್ನಾದರೂ ಪ್ರತ್ಯೇಕಿಸಲು ಬಯಸಿದರೆ ಹಾರ್ಡ್‌ವೇರ್ ಹೈಪರ್‌ವೈಸರ್‌ಗಳು ತಂಪಾಗಿರುತ್ತವೆ. ಏಕೆಂದರೆ ಮೆಮೊರಿ ಪುಟಗಳು ಮತ್ತು ಪ್ರೊಸೆಸರ್ಗಳ ಮಟ್ಟದಲ್ಲಿ ಪ್ರತ್ಯೇಕಿಸಲು ಸಾಧ್ಯವಿದೆ.

ಪ್ರೋಗ್ರಾಂ ಆಗಿ ಹೈಪರ್ವೈಸರ್ಗಳಿವೆ, ಮತ್ತು ಧಾರಕಗಳಿವೆ, ಮತ್ತು ನಾವು ಅವುಗಳ ಬಗ್ಗೆ ಮತ್ತಷ್ಟು ಮಾತನಾಡುತ್ತೇವೆ. ಕಂಟೈನರೈಸೇಶನ್ ಸಿಸ್ಟಮ್‌ಗಳು ಹೈಪರ್‌ವೈಸರ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ, ಆದರೆ ಕಂಟೇನರ್‌ಗಳನ್ನು ರಚಿಸುವ ಮತ್ತು ನಿರ್ವಹಿಸುವ ಕಂಟೈನರ್ ಎಂಜಿನ್ ಇದೆ. ಈ ವಿಷಯವು ಹೆಚ್ಚು ಹಗುರವಾಗಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಕೋರ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದರಿಂದ ಕಡಿಮೆ ಓವರ್ಹೆಡ್ ಅಥವಾ ಯಾವುದೂ ಇಲ್ಲ.

ಕರ್ನಲ್ ಮಟ್ಟದಲ್ಲಿ ಧಾರಕೀಕರಣಕ್ಕಾಗಿ ಏನು ಬಳಸಲಾಗುತ್ತದೆ

ಇತರ ಪ್ರಕ್ರಿಯೆಗಳಿಂದ ಪ್ರತ್ಯೇಕವಾದ ಧಾರಕವನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಮುಖ್ಯ ತಂತ್ರಜ್ಞಾನಗಳು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳು ಮತ್ತು ನಿಯಂತ್ರಣ ಗುಂಪುಗಳು.

ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳು: PID, ನೆಟ್‌ವರ್ಕಿಂಗ್, ಮೌಂಟ್ ಮತ್ತು ಬಳಕೆದಾರ. ಇನ್ನೂ ಹೆಚ್ಚಿನವುಗಳಿವೆ, ಆದರೆ ಸುಲಭವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಾವು ಇವುಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತೇವೆ.

PID ನೇಮ್‌ಸ್ಪೇಸ್ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಾವು PID ನೇಮ್‌ಸ್ಪೇಸ್ ಅನ್ನು ರಚಿಸಿದಾಗ ಮತ್ತು ಅಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಇರಿಸಿದಾಗ, ಅದು PID 1 ನೊಂದಿಗೆ ಆಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ PID 1 ಎಂಬುದು systemd ಅಥವಾ init ಆಗಿದೆ. ಅದರಂತೆ, ನಾವು ಹೊಸ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಇರಿಸಿದಾಗ, ಅದು PID 1 ಅನ್ನು ಸಹ ಪಡೆಯುತ್ತದೆ.

ನೆಟ್‌ವರ್ಕಿಂಗ್ ನೇಮ್‌ಸ್ಪೇಸ್ ನಿಮಗೆ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಮಿತಿಗೊಳಿಸಲು/ಪ್ರತ್ಯೇಕಿಸಲು ಮತ್ತು ನಿಮ್ಮ ಸ್ವಂತ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಒಳಗೆ ಇರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಮೌಂಟ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಮಿತಿಯಾಗಿದೆ. ಬಳಕೆದಾರ-ಬಳಕೆದಾರರ ಮೇಲಿನ ನಿರ್ಬಂಧ.

ನಿಯಂತ್ರಣ ಗುಂಪುಗಳು: ಮೆಮೊರಿ, CPU, IOPS, ನೆಟ್‌ವರ್ಕ್ - ಒಟ್ಟು 12 ಸೆಟ್ಟಿಂಗ್‌ಗಳು. ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳನ್ನು Cgroups ("C-ಗುಂಪುಗಳು") ಎಂದೂ ಕರೆಯುತ್ತಾರೆ.

ಕಂಟೇನರ್‌ಗಾಗಿ ನಿಯಂತ್ರಣ ಗುಂಪುಗಳು ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಕಂಟ್ರೋಲ್ ಗ್ರೂಪ್‌ಗಳ ಮೂಲಕ ಧಾರಕವು ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹೆಚ್ಚು ಬಳಸಬಾರದು ಎಂದು ನಾವು ಹೇಳಬಹುದು.

ಕಂಟೈನರೈಸೇಶನ್ ಸಂಪೂರ್ಣವಾಗಿ ಕೆಲಸ ಮಾಡಲು, ಹೆಚ್ಚುವರಿ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ: ಸಾಮರ್ಥ್ಯಗಳು, ಕಾಪಿ-ಆನ್-ರೈಟ್ ಮತ್ತು ಇತರರು.

ಒಂದು ಪ್ರಕ್ರಿಯೆಗೆ ಅದು ಏನು ಮಾಡಬಹುದು ಮತ್ತು ಏನು ಮಾಡಬಾರದು ಎಂಬುದನ್ನು ನಾವು ಹೇಳಿದಾಗ ಸಾಮರ್ಥ್ಯಗಳು. ಕರ್ನಲ್ ಮಟ್ಟದಲ್ಲಿ, ಇವುಗಳು ಅನೇಕ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಸರಳವಾಗಿ ಬಿಟ್ಮ್ಯಾಪ್ಗಳಾಗಿವೆ. ಉದಾಹರಣೆಗೆ, ರೂಟ್ ಬಳಕೆದಾರರು ಸಂಪೂರ್ಣ ಸವಲತ್ತುಗಳನ್ನು ಹೊಂದಿದ್ದಾರೆ ಮತ್ತು ಎಲ್ಲವನ್ನೂ ಮಾಡಬಹುದು. ಟೈಮ್ ಸರ್ವರ್ ಸಿಸ್ಟಮ್ ಸಮಯವನ್ನು ಬದಲಾಯಿಸಬಹುದು: ಇದು ಟೈಮ್ ಕ್ಯಾಪ್ಸುಲ್‌ನಲ್ಲಿ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ಅದು ಇಲ್ಲಿದೆ. ಸವಲತ್ತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ನೀವು ಪ್ರಕ್ರಿಯೆಗಳಿಗೆ ನಿರ್ಬಂಧಗಳನ್ನು ಮೃದುವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು ಮತ್ತು ಆ ಮೂಲಕ ನಿಮ್ಮನ್ನು ರಕ್ಷಿಸಿಕೊಳ್ಳಬಹುದು.

ಕಾಪಿ-ಆನ್-ರೈಟ್ ಸಿಸ್ಟಮ್ ಡಾಕರ್ ಚಿತ್ರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಮತ್ತು ಅವುಗಳನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.

ಡಾಕರ್ ಪ್ರಸ್ತುತ Cgroups v2 ನೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಹೊಂದಿದೆ, ಆದ್ದರಿಂದ ಈ ಲೇಖನವು ನಿರ್ದಿಷ್ಟವಾಗಿ Cgroups v1 ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ.

ಆದರೆ ಇತಿಹಾಸಕ್ಕೆ ಹಿಂತಿರುಗಿ ನೋಡೋಣ.

ವರ್ಚುವಲೈಸೇಶನ್ ವ್ಯವಸ್ಥೆಗಳು ಕರ್ನಲ್ ಮಟ್ಟದಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಾಗ, ಅವುಗಳನ್ನು ಸಕ್ರಿಯವಾಗಿ ಬಳಸಲಾರಂಭಿಸಿತು. ಹೈಪರ್ವೈಸರ್ ಮೇಲಿನ ಓವರ್ಹೆಡ್ ಕಣ್ಮರೆಯಾಯಿತು, ಆದರೆ ಕೆಲವು ಸಮಸ್ಯೆಗಳು ಉಳಿದಿವೆ:

  • ದೊಡ್ಡ ಚಿತ್ರಗಳು: ಅವರು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್, ಲೈಬ್ರರಿಗಳು, ವಿಭಿನ್ನ ಸಾಫ್ಟ್‌ವೇರ್‌ಗಳ ಗುಂಪನ್ನು ಒಂದೇ OpenVZ ಗೆ ತಳ್ಳುತ್ತಾರೆ ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಚಿತ್ರವು ಇನ್ನೂ ದೊಡ್ಡದಾಗಿದೆ;
  • ಪ್ಯಾಕೇಜಿಂಗ್ ಮತ್ತು ವಿತರಣೆಗೆ ಯಾವುದೇ ಸಾಮಾನ್ಯ ಮಾನದಂಡವಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವಲಂಬನೆಗಳ ಸಮಸ್ಯೆ ಉಳಿದಿದೆ. ಎರಡು ಕೋಡ್ ತುಣುಕುಗಳು ಒಂದೇ ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುವಾಗ ಸಂದರ್ಭಗಳಿವೆ, ಆದರೆ ವಿಭಿನ್ನ ಆವೃತ್ತಿಗಳೊಂದಿಗೆ. ಅವರ ನಡುವೆ ಘರ್ಷಣೆ ಇರಬಹುದು.

ಈ ಎಲ್ಲಾ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು, ಮುಂದಿನ ಯುಗ ಬಂದಿದೆ.

ಕಂಟೈನರ್ ಯುಗ

ಧಾರಕಗಳ ಯುಗವು ಬಂದಾಗ, ಅವರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ತತ್ವವು ಬದಲಾಯಿತು:

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

ಸಾಕುಪ್ರಾಣಿಗಳು ಮತ್ತು ಜಾನುವಾರುಗಳ ಬಗ್ಗೆ ನಾನು ಹೇಳಿದ್ದು ನೆನಪಿದೆಯೇ? ಹಿಂದೆ, ನಿದರ್ಶನಗಳು ಸಾಕುಪ್ರಾಣಿಗಳಂತೆ, ಆದರೆ ಈಗ ಅವು ದನಗಳಂತೆ ಮಾರ್ಪಟ್ಟಿವೆ. ಹಿಂದೆ, ಒಂದು ಏಕಶಿಲೆ ಇತ್ತು - ಒಂದು ಅಪ್ಲಿಕೇಶನ್. ಈಗ ಅದು 100 ಮೈಕ್ರೋ ಸರ್ವೀಸ್, 100 ಕಂಟೈನರ್‌ಗಳು. ಕೆಲವು ಪಾತ್ರೆಗಳು 2-3 ಪ್ರತಿಕೃತಿಗಳನ್ನು ಹೊಂದಿರಬಹುದು. ಪ್ರತಿ ಕಂಟೇನರ್ ಅನ್ನು ನಿಯಂತ್ರಿಸುವುದು ನಮಗೆ ಕಡಿಮೆ ಮುಖ್ಯವಾಗುತ್ತದೆ. ಸೇವೆಯ ಲಭ್ಯತೆಯೇ ನಮಗೆ ಹೆಚ್ಚು ಮುಖ್ಯವಾದುದು: ಈ ಕಂಟೈನರ್‌ಗಳ ಸೆಟ್ ಏನು ಮಾಡುತ್ತದೆ. ಇದು ಮೇಲ್ವಿಚಾರಣೆಯ ವಿಧಾನಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ.

2014-2015ರಲ್ಲಿ, ಡಾಕರ್ ಪ್ರವರ್ಧಮಾನಕ್ಕೆ ಬಂದಿತು - ನಾವು ಈಗ ಮಾತನಾಡುವ ತಂತ್ರಜ್ಞಾನ.

ಡಾಕರ್ ತತ್ವಶಾಸ್ತ್ರ ಮತ್ತು ಪ್ರಮಾಣಿತ ಅಪ್ಲಿಕೇಶನ್ ಪ್ಯಾಕೇಜಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸಿದರು. ಡಾಕರ್ ಬಳಸಿ, ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ಯಾಕೇಜ್ ಮಾಡಬಹುದು, ಅದನ್ನು ರೆಪೊಸಿಟರಿಗೆ ಕಳುಹಿಸಬಹುದು, ಅಲ್ಲಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು ಮತ್ತು ಅದನ್ನು ನಿಯೋಜಿಸಬಹುದು.

ನಮಗೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲವನ್ನೂ ಡಾಕರ್ ಕಂಟೇನರ್‌ಗೆ ಹಾಕುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಅವಲಂಬನೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗುತ್ತದೆ. ಡಾಕರ್ ಪುನರುತ್ಪಾದನೆಯನ್ನು ಖಾತರಿಪಡಿಸುತ್ತದೆ. ಅನೇಕ ಜನರು ಅನುತ್ಪಾದಕತೆಯನ್ನು ಎದುರಿಸಿದ್ದಾರೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ: ಎಲ್ಲವೂ ನಿಮಗಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ನೀವು ಅದನ್ನು ಉತ್ಪಾದನೆಗೆ ತಳ್ಳುತ್ತೀರಿ ಮತ್ತು ಅಲ್ಲಿ ಅದು ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ. ಡಾಕರ್‌ನೊಂದಿಗೆ ಈ ಸಮಸ್ಯೆ ದೂರವಾಗುತ್ತದೆ. ನಿಮ್ಮ ಡಾಕರ್ ಕಂಟೇನರ್ ಪ್ರಾರಂಭವಾದರೆ ಮತ್ತು ಅದು ಏನು ಮಾಡಬೇಕೋ ಅದನ್ನು ಮಾಡಿದರೆ, ಹೆಚ್ಚಿನ ಮಟ್ಟದ ಸಂಭವನೀಯತೆಯೊಂದಿಗೆ ಅದು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಅಲ್ಲಿಯೂ ಅದೇ ರೀತಿ ಮಾಡುತ್ತದೆ.

ಓವರ್ಹೆಡ್ ಬಗ್ಗೆ ವ್ಯತಿರಿಕ್ತತೆ

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

ಮತ್ತೊಂದೆಡೆ, ನೀವು ಆಳವಾಗಿ ಹೋದರೆ, ಡಾಕರ್‌ನಲ್ಲಿ ವಾಸ್ತವವಾಗಿ ಹಲವಾರು ವಿಷಯಗಳಿವೆ, ಅದನ್ನು ವಿಸ್ತರಿಸುವುದರೊಂದಿಗೆ, ಓವರ್ಹೆಡ್ ಎಂದು ಹೇಳಬಹುದು.

ಮೊದಲನೆಯದು PID ನೇಮ್‌ಸ್ಪೇಸ್. ನಾವು ಒಂದು ಪ್ರಕ್ರಿಯೆಯನ್ನು ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಇರಿಸಿದಾಗ, ಅದಕ್ಕೆ PID 1 ಅನ್ನು ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಈ ಪ್ರಕ್ರಿಯೆಯು ಮತ್ತೊಂದು PID ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇದು ಕಂಟೇನರ್‌ನ ಹೊರಗೆ ಹೋಸ್ಟ್ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿದೆ. ಉದಾಹರಣೆಗೆ, ನಾವು ಕಂಟೇನರ್‌ನಲ್ಲಿ Nginx ಅನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ, ಅದು PID 1 (ಮಾಸ್ಟರ್ ಪ್ರಕ್ರಿಯೆ) ಆಯಿತು. ಮತ್ತು ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಇದು PID 12623 ಅನ್ನು ಹೊಂದಿದೆ. ಮತ್ತು ಅದು ಎಷ್ಟು ಓವರ್‌ಹೆಡ್ ಎಂದು ಹೇಳುವುದು ಕಷ್ಟ.

ಎರಡನೆಯ ವಿಷಯವೆಂದರೆ Cgroups. Cgroups ಅನ್ನು ಮೆಮೊರಿಯಿಂದ ತೆಗೆದುಕೊಳ್ಳೋಣ, ಅಂದರೆ, ಕಂಟೇನರ್‌ನ ಮೆಮೊರಿಯನ್ನು ಮಿತಿಗೊಳಿಸುವ ಸಾಮರ್ಥ್ಯ. ಇದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಕೌಂಟರ್‌ಗಳು ಮತ್ತು ಮೆಮೊರಿ ಅಕೌಂಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ: ಈ ಕಂಟೇನರ್‌ಗೆ ಎಷ್ಟು ಪುಟಗಳನ್ನು ನಿಯೋಜಿಸಲಾಗಿದೆ ಮತ್ತು ಎಷ್ಟು ಇನ್ನೂ ಉಚಿತವಾಗಿದೆ ಎಂಬುದನ್ನು ಕರ್ನಲ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಇದು ಬಹುಶಃ ಓವರ್ಹೆಡ್ ಆಗಿದೆ, ಆದರೆ ಇದು ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಹೇಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ಯಾವುದೇ ನಿಖರವಾದ ಅಧ್ಯಯನಗಳನ್ನು ನಾನು ನೋಡಿಲ್ಲ. ಮತ್ತು ಡಾಕರ್‌ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಇದ್ದಕ್ಕಿದ್ದಂತೆ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ತೀವ್ರ ನಷ್ಟವನ್ನು ಅನುಭವಿಸಿದೆ ಎಂದು ನಾನು ಗಮನಿಸಲಿಲ್ಲ.

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

ಡಾಕರ್ ಪರಿಕಲ್ಪನೆಯ ಬಗ್ಗೆ

ಡಾಕರ್ ಹಲವಾರು ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:

  1. ಡಾಕರ್ ಡೀಮನ್ ಅದೇ ಕಂಟೈನರ್ ಎಂಜಿನ್ ಆಗಿದೆ; ಧಾರಕಗಳನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ.
  2. ಡಾಕರ್ CII ಒಂದು ಡಾಕರ್ ನಿರ್ವಹಣಾ ಉಪಯುಕ್ತತೆಯಾಗಿದೆ.
  3. ಡಾಕರ್‌ಫೈಲ್ - ಚಿತ್ರವನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಸೂಚನೆಗಳು.
  4. ಚಿತ್ರ - ಧಾರಕವನ್ನು ಹೊರತೆಗೆದ ಚಿತ್ರ.
  5. ಕಂಟೇನರ್.
  6. ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿಯು ಇಮೇಜ್ ರೆಪೊಸಿಟರಿಯಾಗಿದೆ.

ಕ್ರಮಬದ್ಧವಾಗಿ ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಡಾಕರ್ ಎಂದರೇನು: ಇತಿಹಾಸ ಮತ್ತು ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿಹಾರ

ಡಾಕರ್ ಡೀಮನ್ ಡಾಕರ್_ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ ಮತ್ತು ಕಂಟೇನರ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆಜ್ಞೆಗಳನ್ನು ಕಳುಹಿಸುವ ಕ್ಲೈಂಟ್ ಇದೆ: ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸಿ, ಚಿತ್ರವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ, ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ. ಡಾಕರ್ ಡೀಮನ್ ನೋಂದಾವಣೆಗೆ ಹೋಗುತ್ತಾನೆ ಮತ್ತು ಅವುಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತಾನೆ. ಡಾಕರ್ ಕ್ಲೈಂಟ್ ಸ್ಥಳೀಯವಾಗಿ (ಯುನಿಕ್ಸ್ ಸಾಕೆಟ್‌ಗೆ) ಮತ್ತು ರಿಮೋಟ್ ಹೋಸ್ಟ್‌ನಿಂದ TCP ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದು.

ಪ್ರತಿಯೊಂದು ಘಟಕಗಳ ಮೂಲಕ ಹೋಗೋಣ.

ಡಾಕರ್ ಡೀಮನ್ - ಇದು ಸರ್ವರ್ ಭಾಗವಾಗಿದೆ, ಇದು ಹೋಸ್ಟ್ ಯಂತ್ರದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ: ಚಿತ್ರಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅವುಗಳಿಂದ ಕಂಟೇನರ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಕಂಟೇನರ್‌ಗಳ ನಡುವೆ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಲಾಗ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. "ಚಿತ್ರವನ್ನು ರಚಿಸಿ" ಎಂದು ನಾವು ಹೇಳಿದಾಗ, ರಾಕ್ಷಸನು ಅದನ್ನು ಮಾಡುತ್ತಾನೆ.

ಡಾಕರ್ CLI - ಡಾಕರ್ ಕ್ಲೈಂಟ್ ಭಾಗ, ಡೀಮನ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕನ್ಸೋಲ್ ಉಪಯುಕ್ತತೆ. ನಾನು ಪುನರಾವರ್ತಿಸುತ್ತೇನೆ, ಇದು ಸ್ಥಳೀಯವಾಗಿ ಮಾತ್ರವಲ್ಲದೆ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿಯೂ ಕೆಲಸ ಮಾಡಬಹುದು.

ಮೂಲ ಆಜ್ಞೆಗಳು:

ಡಾಕರ್ ps - ಪ್ರಸ್ತುತ ಡಾಕರ್ ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಟೇನರ್‌ಗಳನ್ನು ತೋರಿಸಿ.
ಡಾಕರ್ ಚಿತ್ರಗಳು - ಸ್ಥಳೀಯವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಚಿತ್ರಗಳನ್ನು ತೋರಿಸಿ.
ಡಾಕರ್ ಹುಡುಕಾಟ <> - ನೋಂದಾವಣೆಯಲ್ಲಿ ಚಿತ್ರಕ್ಕಾಗಿ ಹುಡುಕಿ.
ಡಾಕರ್ ಪುಲ್ <> - ರಿಜಿಸ್ಟ್ರಿಯಿಂದ ಯಂತ್ರಕ್ಕೆ ಚಿತ್ರವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ.
ಡಾಕರ್ ಬಿಲ್ಡ್ < > - ಚಿತ್ರವನ್ನು ಸಂಗ್ರಹಿಸಿ.
ಡಾಕರ್ ರನ್ <> - ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ.
ಡಾಕರ್ ಆರ್ಎಮ್ <> - ಧಾರಕವನ್ನು ತೆಗೆದುಹಾಕಿ.
ಡಾಕರ್ ಲಾಗ್‌ಗಳು <> - ಕಂಟೇನರ್ ಲಾಗ್‌ಗಳು
ಡಾಕರ್ ಪ್ರಾರಂಭ/ನಿಲ್ಲಿಸು/ಮರುಪ್ರಾರಂಭಿಸಿ <> - ಕಂಟೇನರ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು

ನೀವು ಈ ಆಜ್ಞೆಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಂಡರೆ ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸುವಲ್ಲಿ ವಿಶ್ವಾಸವಿದ್ದರೆ, ಬಳಕೆದಾರರ ಮಟ್ಟದಲ್ಲಿ ಡಾಕರ್‌ನಲ್ಲಿ 70% ಪ್ರವೀಣರಾಗಿ ನಿಮ್ಮನ್ನು ಪರಿಗಣಿಸಿ.

ಡಾಕರ್‌ಫೈಲ್ - ಚಿತ್ರವನ್ನು ರಚಿಸಲು ಸೂಚನೆಗಳು. ಪ್ರತಿಯೊಂದು ಸೂಚನಾ ಆಜ್ಞೆಯು ಹೊಸ ಪದರವಾಗಿದೆ. ಒಂದು ಉದಾಹರಣೆಯನ್ನು ನೋಡೋಣ.

ಡಾಕರ್ ಎಂದರೇನು: ಇತಿಹಾಸ ಮತ್ತು ಮೂಲಭೂತ ಅಮೂರ್ತತೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿಹಾರ

ಡಾಕರ್‌ಫೈಲ್ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ: ಎಡಭಾಗದಲ್ಲಿ ಆಜ್ಞೆಗಳು, ಬಲಭಾಗದಲ್ಲಿ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳು. ಇಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಆಜ್ಞೆಯು (ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಡಾಕರ್‌ಫೈಲ್‌ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ) ಚಿತ್ರದಲ್ಲಿ ಹೊಸ ಪದರವನ್ನು ರಚಿಸುತ್ತದೆ.

ಎಡಭಾಗವನ್ನು ನೋಡಿದರೂ ಸಹ, ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೀವು ಸ್ಥೂಲವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು. ನಾವು ಹೇಳುತ್ತೇವೆ: "ನಮಗಾಗಿ ಫೋಲ್ಡರ್ ರಚಿಸಿ" - ಇದು ಒಂದು ಪದರವಾಗಿದೆ. "ಫೋಲ್ಡರ್ ಕೆಲಸ ಮಾಡು" ಮತ್ತೊಂದು ಪದರ, ಇತ್ಯಾದಿ. ಲೇಯರ್ ಕೇಕ್ ಜೀವನವನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ನಾನು ಇನ್ನೊಂದು ಡಾಕರ್‌ಫೈಲ್ ಅನ್ನು ರಚಿಸಿದರೆ ಮತ್ತು ಕೊನೆಯ ಸಾಲಿನಲ್ಲಿ ಏನನ್ನಾದರೂ ಬದಲಾಯಿಸಿದರೆ - ನಾನು "ಪೈಥಾನ್" "main.py" ಅನ್ನು ಹೊರತುಪಡಿಸಿ ಬೇರೆ ಯಾವುದನ್ನಾದರೂ ರನ್ ಮಾಡುತ್ತೇನೆ, ಅಥವಾ ಇನ್ನೊಂದು ಫೈಲ್‌ನಿಂದ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇನೆ - ನಂತರ ಹಿಂದಿನ ಲೇಯರ್‌ಗಳನ್ನು ಸಂಗ್ರಹವಾಗಿ ಮರುಬಳಕೆ ಮಾಡಲಾಗುತ್ತದೆ.

ಚಿತ್ರ - ಇದು ಕಂಟೇನರ್ ಪ್ಯಾಕೇಜಿಂಗ್ ಆಗಿದೆ; ಧಾರಕಗಳನ್ನು ಚಿತ್ರದಿಂದ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ. ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ನ ದೃಷ್ಟಿಕೋನದಿಂದ ನಾವು ಡಾಕರ್ ಅನ್ನು ನೋಡಿದರೆ (ನಾವು deb ಅಥವಾ rpm ಪ್ಯಾಕೇಜ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿರುವಂತೆ), ನಂತರ ಚಿತ್ರವು ಮೂಲಭೂತವಾಗಿ rpm ಪ್ಯಾಕೇಜ್ ಆಗಿದೆ. yum ಅನುಸ್ಥಾಪನೆಯ ಮೂಲಕ ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬಹುದು, ಅದನ್ನು ಅಳಿಸಬಹುದು, ಅದನ್ನು ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯಬಹುದು ಮತ್ತು ಅದನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು. ಇದು ಇಲ್ಲಿ ಒಂದೇ ಆಗಿರುತ್ತದೆ: ಚಿತ್ರದಿಂದ ಕಂಟೇನರ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ, ಅವುಗಳನ್ನು ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ (yum ಅನ್ನು ಹೋಲುತ್ತದೆ, ರೆಪೊಸಿಟರಿಯಲ್ಲಿ), ಮತ್ತು ಪ್ರತಿ ಚಿತ್ರವು SHA-256 ಹ್ಯಾಶ್, ಹೆಸರು ಮತ್ತು ಟ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ.

ಡಾಕರ್‌ಫೈಲ್‌ನ ಸೂಚನೆಗಳ ಪ್ರಕಾರ ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸಲಾಗಿದೆ. ಡಾಕರ್‌ಫೈಲ್‌ನಿಂದ ಪ್ರತಿಯೊಂದು ಸೂಚನೆಯು ಹೊಸ ಲೇಯರ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ. ಪದರಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದು.

ಡಾಕರ್ ನೋಂದಾವಣೆ ಡಾಕರ್ ಇಮೇಜ್ ರೆಪೊಸಿಟರಿಯಾಗಿದೆ. OS ನಂತೆಯೇ, ಡಾಕರ್ ಸಾರ್ವಜನಿಕ ಗುಣಮಟ್ಟದ ನೋಂದಣಿಯನ್ನು ಹೊಂದಿದೆ - ಡಾಕರ್‌ಹಬ್. ಆದರೆ ನೀವು ನಿಮ್ಮ ಸ್ವಂತ ರೆಪೊಸಿಟರಿಯನ್ನು, ನಿಮ್ಮ ಸ್ವಂತ ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿಯನ್ನು ನಿರ್ಮಿಸಬಹುದು.

ಕಂಟೇನರ್ - ಚಿತ್ರದಿಂದ ಏನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ. ಡಾಕರ್‌ಫೈಲ್‌ನ ಸೂಚನೆಗಳ ಪ್ರಕಾರ ನಾವು ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸಿದ್ದೇವೆ, ನಂತರ ನಾವು ಅದನ್ನು ಈ ಚಿತ್ರದಿಂದ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ. ಈ ಕಂಟೇನರ್ ಅನ್ನು ಇತರ ಕಂಟೈನರ್‌ಗಳಿಂದ ಪ್ರತ್ಯೇಕಿಸಲಾಗಿದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲವನ್ನೂ ಹೊಂದಿರಬೇಕು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಒಂದು ಧಾರಕ - ಒಂದು ಪ್ರಕ್ರಿಯೆ. ನೀವು ಎರಡು ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಮಾಡಬೇಕಾಗಿದೆ ಎಂದು ಅದು ಸಂಭವಿಸುತ್ತದೆ, ಆದರೆ ಇದು ಡಾಕರ್ ಸಿದ್ಧಾಂತಕ್ಕೆ ಸ್ವಲ್ಪ ವಿರುದ್ಧವಾಗಿದೆ.

"ಒಂದು ಕಂಟೇನರ್, ಒಂದು ಪ್ರಕ್ರಿಯೆ" ಅವಶ್ಯಕತೆಯು PID ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ಸಂಬಂಧಿಸಿದೆ. ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ PID 1 ನೊಂದಿಗೆ ಪ್ರಕ್ರಿಯೆಯು ಪ್ರಾರಂಭವಾದಾಗ, ಅದು ಹಠಾತ್ತನೆ ಸತ್ತರೆ, ನಂತರ ಸಂಪೂರ್ಣ ಕಂಟೇನರ್ ಸಹ ಸಾಯುತ್ತದೆ. ಎರಡು ಪ್ರಕ್ರಿಯೆಗಳು ಅಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ: ಒಂದು ಜೀವಂತವಾಗಿದೆ ಮತ್ತು ಇನ್ನೊಂದು ಸತ್ತಿದೆ, ನಂತರ ಕಂಟೇನರ್ ಇನ್ನೂ ಜೀವಂತವಾಗಿರುತ್ತದೆ. ಆದರೆ ಇದು ಅತ್ಯುತ್ತಮ ಅಭ್ಯಾಸಗಳ ಪ್ರಶ್ನೆಯಾಗಿದೆ, ನಾವು ಅವುಗಳನ್ನು ಇತರ ವಸ್ತುಗಳಲ್ಲಿ ಮಾತನಾಡುತ್ತೇವೆ.

ಕೋರ್ಸ್‌ನ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಪೂರ್ಣ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಹೆಚ್ಚು ವಿವರವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಲು, ದಯವಿಟ್ಟು ಲಿಂಕ್ ಅನ್ನು ಅನುಸರಿಸಿ: "ಡಾಕರ್ ವೀಡಿಯೊ ಕೋರ್ಸ್».

ಲೇಖಕ: ಮಾರ್ಸೆಲ್ ಇಬ್ರೇವ್, ಪ್ರಮಾಣೀಕೃತ ಕುಬರ್ನೆಟ್ಸ್ ನಿರ್ವಾಹಕರು, ಸೌತ್‌ಬ್ರಿಡ್ಜ್‌ನಲ್ಲಿ ಅಭ್ಯಾಸ ಎಂಜಿನಿಯರ್, ಸ್ಲರ್ಮ್ ಕೋರ್ಸ್‌ಗಳ ಸ್ಪೀಕರ್ ಮತ್ತು ಡೆವಲಪರ್.

ಮೂಲ: www.habr.com

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