VPN ಆನ್ ಆಗಿದೆ, ಬ್ರೌಸರ್ ಆಂತರಿಕ ಸೈಟ್ಗಳನ್ನು ತಲುಪುತ್ತದೆ, ಆದರೆ ಕಂಟೇನರ್ ಇನ್ನೂ ಅದೇ ಹೆಸರುಗಳನ್ನು ಪರಿಹರಿಸಲಾಗದು. ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪನೆ EAI_AGAIN ನಂತಹ ಹೆಸರು-ಪರಿಹಾರ ದೋಷದಿಂದ ಸಾಯುತ್ತದೆ, ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ ಹೋಸ್ಟ್ ಯಂತ್ರವು ಯಾವುದೇ ದೂರಿಲ್ಲದೆ ಪರಿಹರಿಸುವ ಡೇಟಾಬೇಸ್ ಹೋಸ್ಟ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗದು. ಕಂಟೇನರ್ VPN ಸ್ಥಾಪಿಸಿದ ರಿಜಾಲ್ವರ್ ಅನ್ನು ಬಳಸುತ್ತಿಲ್ಲ. ಕಂಟೇನರ್ ರಚಿಸಿದಾಗ Docker ಹೋಸ್ಟ್ನ ರಿಜಾಲ್ವರ್ ಸಂರಚನೆಯನ್ನು ನಕಲಿಸಿತು, ಮತ್ತು ನಂತರ ಯಾವುದೂ ಅದನ್ನು ಮತ್ತೆ ನಕಲಿಸಲಿಲ್ಲ.

ಒಂದೇ ಯಂತ್ರದಲ್ಲಿ ರಿಜಾಲ್ವರ್ನ ಎರಡು ದೃಶ್ಯಗಳು

Linux ನಲ್ಲಿ, Docker ರಚನೆಯ ಕ್ಷಣದಲ್ಲಿ ಪ್ರತಿ ಕಂಟೇನರ್ಗೆ ಹೋಸ್ಟ್ನ ರಿಜಾಲ್ವರ್ ಸಂರಚನೆಯ ನಕಲನ್ನು ನೀಡುತ್ತದೆ, loopback ವಿಳಾಸಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು 127.0.0.11 ನಲ್ಲಿ ಎಂಬೆಡೆಡ್ DNS ಸರ್ವರ್ ಅನ್ನು ಚಲಾಯಿಸುತ್ತದೆ, ಅದು ಪ್ರಶ್ನೆಗಳನ್ನು ಹೊರಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ. ಕಂಟೇನರ್ ಪ್ರಾರಂಭವಾದ ನಂತರ /etc/resolv.conf ಅನ್ನು ಮತ್ತೆ ಬರೆಯುವ VPN ಕ್ಲೈಂಟ್ ಅದರ ಒಳಗೆ ಏನನ್ನೂ ಬದಲಿಸುವುದಿಲ್ಲ. ಕಂಟೇನರ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವುದು ಆ ಕ್ಷಣದಲ್ಲಿ ಹೋಸ್ಟ್ ರಿಜಾಲ್ವರ್ ಆಕಸ್ಮಿಕವಾಗಿ ಸರಿಯಾಗಿದ್ದರೆ ಮಾತ್ರ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

macOS ಅಥವಾ Windows ನಲ್ಲಿ Docker Desktop ಒಂದು ಪದರವನ್ನು ಸೇರಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಡೀಮನ್ ವರ್ಚುವಲ್ ಯಂತ್ರದಲ್ಲಿ ವಾಸಿಸುತ್ತದೆ. ಹೋಸ್ಟ್ನ VPN ರಿಜಾಲ್ವರ್ ಆ VM ಗೆ ಎಂದಿಗೂ ಗೋಚರವಾಗದಿರಬಹುದು, ಆದ್ದರಿಂದ ಮರುಪ್ರಾರಂಭಿಸುವುದು ಏನನ್ನೂ ಬದಲಿಸುವುದಿಲ್ಲ. ಸರಿಪಡಿಸುವಿಕೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಮೊದಲು ಎರಡು ದೃಶ್ಯಗಳನ್ನು ಹೋಲಿಸಿ: ಹೋಸ್ಟ್ನ ರಿಜಾಲ್ವರ್ ಪಟ್ಟಿಯ ಪಕ್ಕದಲ್ಲಿ docker exec mycontainer cat /etc/resolv.conf.

ಹೋಸ್ಟ್ ಆಂತರಿಕ ರಿಜಾಲ್ವರ್ ಪಟ್ಟಿ ಮಾಡುತ್ತಿರುವಾಗ ಕಂಟೇನರ್ ಸಾರ್ವಜನಿಕ ರಿಜಾಲ್ವರ್ ಪಟ್ಟಿ ಮಾಡಿದರೆ ಅದು ಸಾರ್ವಜನಿಕ ಹೆಸರುಗಳನ್ನು ಪರಿಹರಿಸಿ ಆಂತರಿಕ ಹೆಸರುಗಳಲ್ಲಿ ವಿಫಲವಾಗುತ್ತದೆ. ಆ ವಿಭಜನೆಯೇ ಈ ಸಮಸ್ಯೆಯ ಸಹಿ.

ಆಯ್ಕೆ A: ಪ್ರತಿ ಕಂಟೇನರ್ಗೆ ಟನಲ್ ರಿಜಾಲ್ವರ್ ರವಾನಿಸುವುದು

Docker ಪ್ರತಿ ಕಂಟೇನರ್ಗೆ DNS ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಮತ್ತು ಅದು ಕೆಲಸ ಮಾಡುವ ಅತ್ಯಂತ ಚಿಕ್ಕ ಬದಲಾವಣೆ. ಮೊದಲು VPN ನ ರಿಜಾಲ್ವರ್ ವಿಳಾಸಗಳನ್ನು ಓದಿ: macOS ನಲ್ಲಿ scutil --dns, Linux ನಲ್ಲಿ resolvectl status ಅಥವಾ ಕ್ಲೈಂಟ್ನ ಸ್ವಂತ ಸ್ಥಿತಿ ಔಟ್ಪುಟ್. ನಂತರ ಅವುಗಳೊಂದಿಗೆ ಕಂಟೇನರ್ ಪ್ರಾರಂಭಿಸಿ, ಉದಾಹರಣೆಗೆ docker run --dns 192.168.2.1 --dns 192.168.123.1 myimage. Compose ನಲ್ಲಿ ಅದೇ ಸೆಟ್ಟಿಂಗ್ ಸೇವೆಯ ಅಡಿಯಲ್ಲಿ ಪಟ್ಟಿಯಾಗಿದೆ, ಅಲ್ಲಿ ಅದು ಯಾರೋ ಒಬ್ಬರ ಶೆಲ್ ಇತಿಹಾಸದ ಬದಲು ಆವೃತ್ತಿ ನಿಯಂತ್ರಣದಲ್ಲಿ ವಾಸಿಸುತ್ತದೆ.

/etc/docker/daemon.json ನಲ್ಲಿನ dns ಸರಣಿಯು ಪ್ರತಿ ಹೊಸ ಕಂಟೇನರ್ಗೆ ಅನ್ವಯಿಸುತ್ತದೆ, ಇದು ಹೆಚ್ಚು ಅಚ್ಚುಕಟ್ಟಾಗಿ ಕೇಳಿಸುತ್ತದೆ ಮತ್ತು ಹಾಗಿಲ್ಲ. ಟನಲ್ ಆಫ್ ಆಗಿರುವಾಗಲೂ ಇದು ಅನ್ವಯಿಸುತ್ತದೆ, ಮತ್ತು ಆಗ VPN ಮೂಲಕ ಮಾತ್ರ ತಲುಪಬಹುದಾದ ರಿಜಾಲ್ವರ್ ಸಾಮಾನ್ಯ ಇಮೇಜ್ ಎಳೆತವನ್ನು ಮುರಿಯುತ್ತದೆ. ಪ್ರತಿ ಕಂಟೇನರ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಮರ್ಥಿಸುವುದು ಮತ್ತು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವುದು ಸುಲಭ.

ಆಯ್ಕೆ B: ಕಂಟೇನರ್ ಹೋಸ್ಟ್ ನೆಟ್ವರ್ಕ್ ಹಂಚಿಕೊಳ್ಳಲಿ

ಹೋಸ್ಟ್ ನೆಟ್ವರ್ಕಿಂಗ್ ನಕಲನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ತಪ್ಪಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಕಂಟೇನರ್ ಹೋಸ್ಟ್ನ ರಿಜಾಲ್ವರ್ ಮತ್ತು ಹೋಸ್ಟ್ನ ಟನಲ್ ಬಳಸುತ್ತದೆ. ಇದು ನೀವು ಬಯಸಿದ್ದ ನೆಟ್ವರ್ಕ್ ಪ್ರತ್ಯೇಕತೆಯನ್ನೂ ತೆಗೆದುಹಾಕುತ್ತದೆ, ಮತ್ತು Docker Desktop ಅಡಿಯಲ್ಲಿ ಅದೇ ರೀತಿ ವರ್ತಿಸುವುದಿಲ್ಲ. Linux ನಲ್ಲಿ ಆಂತರಿಕ ಹೆಸರುಗಳನ್ನು ಪರಿಹರಿಸಬೇಕಾದ ಒಂದು-ಬಾರಿಯ ಉಪಕರಣಕ್ಕೆ ಇದು ಪ್ರಾಯೋಗಿಕ ಆಯ್ಕೆ.

ಬಿಲ್ಡ್ಗಳಿಗೆ ಎರಡೂ ಆಯ್ಕೆಗಳಲ್ಲಿ ಯಾವುದೂ ಅನ್ವಯಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಬಿಲ್ಡ್ ಹಂತಗಳು ರನ್ಟೈಮ್ ಫ್ಲ್ಯಾಗ್ಗಳನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುವುದಿಲ್ಲ. ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನುಮತಿಸುವಲ್ಲಿ ಹೋಸ್ಟ್ ನೆಟ್ವರ್ಕಿಂಗ್ನೊಂದಿಗೆ ಬಿಲ್ಡ್ ಮಾಡಿ, ಅಥವಾ ಅವಲಂಬನೆ ಸ್ಥಾಪನೆಯನ್ನು ಟನಲ್ ಅಗತ್ಯವಿಲ್ಲದ ಹಂತದಲ್ಲಿ ಇರಿಸಿ.

ಎರಡೂ ಆಯ್ಕೆಗಳು ಸರಿಪಡಿಸದಿರುವುದು

ಕಂಟೇನರ್ಗೆ ಅಲ್ಲಿಗೆ ಮಾರ್ಗವಿಲ್ಲದಿದ್ದರೆ DNS ವಿಳಾಸ ನಿರುಪಯುಕ್ತ. VPN ರಿಜಾಲ್ವರ್ ಸಾಮಾನ್ಯವಾಗಿ ಟನಲ್ನ ವಿಳಾಸ ಸ್ಥಳಾವಕಾಶದೊಳಗೆ ಕುಳಿತಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಕಂಟೇನರ್ಗೆ ಆ ಪ್ರಿಫಿಕ್ಸ್ಗೆ ದಾರಿ ಬೇಕು. Docker ನ ಡೀಫಾಲ್ಟ್ ಬ್ರಿಡ್ಜ್ ಸಾಮಾನ್ಯವಾಗಿ ಹೋಸ್ಟ್ ಮೂಲಕ ಹೊರಕ್ಕೆ ಮಾರ್ಗ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಹೋಸ್ಟ್ಗೆ ಟನಲ್ ಮಾರ್ಗವಿದ್ದು ಫಾರ್ವರ್ಡಿಂಗ್ ಸಕ್ರಿಯವಾಗಿದ್ದರೆ ಅದು ಸಾಕು. ತಮ್ಮದೇ ವಿಳಾಸ ಪೂಲ್ಗಳಿರುವ ಕಸ್ಟಮ್ ಬ್ರಿಡ್ಜ್ ನೆಟ್ವರ್ಕ್ಗಳು VPN ಸಬ್ನೆಟ್ನೊಂದಿಗೆ ಘರ್ಷಿಸಬಹುದು, ಮತ್ತು ಆಗ ಪ್ರಶ್ನೆಗಳು ಸಂಪೂರ್ಣ ಬೇರೆಡೆಗೆ ಹೋಗುತ್ತವೆ.

ರಿಜಾಲ್ವರ್ ಅನ್ನು ಸ್ವತಃ ಡೀಬಗ್ ಮಾಡುವ ಮೊದಲು Docker ನೆಟ್ವರ್ಕ್ನ ಸಬ್ನೆಟ್ ಅನ್ನು VPN ಸಬ್ನೆಟ್ನೊಂದಿಗೆ ಪರಿಶೀಲಿಸಿ. ಅತಿವ್ಯಾಪ್ತಿ ಕೆಟ್ಟ DNS ಸರ್ವರ್ನಂತೆಯೇ ಕಾಣುವ ವೈಫಲ್ಯವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.

ಕಂಟೇನರ್ ಒಳಗೆ ಪರಿಶೀಲಿಸಿ

ಬ್ರೌಸರ್ ಅಥವಾ ಭಾಷಾ ರನ್ಟೈಮ್ ಬದಲು ಕಂಟೇನರ್ ಒಳಗೆ getent hosts db.internal ನೊಂದಿಗೆ ಪರೀಕ್ಷಿಸಿ, ಏಕೆಂದರೆ ಅವು ತಮ್ಮದೇ DNS ನೀತಿ ಮತ್ತು ತಮ್ಮದೇ ಕ್ಯಾಶಿಂಗ್ ಅನ್ನು ಅನ್ವಯಿಸುತ್ತವೆ. getent ಹೆಸರನ್ನು ಪರಿಹರಿಸಿ ಅಪ್ಲಿಕೇಶನ್ ಇನ್ನೂ ವಿಫಲವಾದರೆ, ರಿಜಾಲ್ವರ್ ಈಗ ಸರಿಯಾಗಿದೆ ಮತ್ತು ಉಳಿದ ಸಮಸ್ಯೆ ಅಪ್ಲಿಕೇಶನ್ ಮಟ್ಟದಲ್ಲಿದೆ. ಅದು ಪರಿಹರಿಸದಿದ್ದರೆ, DNS ಹಂತ ಮುಗಿದಿಲ್ಲ.

DNS ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಿಸಿದ ನಂತರ ಕಂಟೇನರ್ ಅನ್ನು ಮತ್ತೆ ರಚಿಸಿ. ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಟೇನರ್ ಒಳಗೆ /etc/resolv.conf ಸಂಪಾದಿಸುವುದು ಅದರೊಂದಿಗೆ ಮಾಯವಾಗುತ್ತದೆ ಮತ್ತು ಸಂರಚನಾ ಸಮಸ್ಯೆಯನ್ನು ಯಾರಾದರೂ ಅದನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ತೆಗೆದುಕೊಳ್ಳುವಷ್ಟೇ ಸಮಯ ಮರೆಮಾಡುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು