ಡಾಕರ್ ಶೇಖರಣಾ ವಲಸೆ ಸಮಸ್ಯೆಯ ಇತಿಹಾಸ (ಡಾಕರ್ ರೂಟ್)

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

ಶುರುವಾಗುತ್ತಿದೆ:

1. ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನ ಎಲ್ಲಾ ಕಂಟೇನರ್‌ಗಳನ್ನು ನಿಲ್ಲಿಸಿ ಮತ್ತು ಕೊಲ್ಲು:

docker-compose down

ಸಾಕಷ್ಟು ಕಂಟೇನರ್‌ಗಳಿದ್ದರೆ ಮತ್ತು ಅವು ವಿಭಿನ್ನ ಸಂಯೋಜನೆಯಲ್ಲಿದ್ದರೆ, ನೀವು ಇದನ್ನು ಮಾಡಬಹುದು:

docker rm -f $(docker ps -q)

2. ಡಾಕರ್ ಡೀಮನ್ ನಿಲ್ಲಿಸಿ:

systemctl stop docker

3. ಡೈರೆಕ್ಟರಿಯನ್ನು ಬಯಸಿದ ಸ್ಥಳಕ್ಕೆ ಸರಿಸಿ:

cp -r /var/lib/docker /docker/data/storage

4. ಹೊಸ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ನೋಡಲು ನಾವು ಡಾಕರ್ ಡೀಮನ್‌ಗೆ ಹೇಳುತ್ತೇವೆ. ಹಲವಾರು ಆಯ್ಕೆಗಳಿವೆ: ಡೀಮನ್ ಅನ್ನು ಹೊಸ ಮಾರ್ಗಕ್ಕೆ ತೋರಿಸಲು -g ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಬಳಸಿ ಅಥವಾ ನಾವು ಬಳಸಿದ systemd configs ಅನ್ನು ಬಳಸಿ. ಅಥವಾ ಸಿಮ್ಲಿಂಕ್. ನಾನು ಇದರ ಬಗ್ಗೆ ಹೆಚ್ಚು ವಿವರವಾಗಿ ಹೋಗುವುದಿಲ್ಲ, ಇದು ಇಂಟರ್ನೆಟ್ನಲ್ಲಿದೆ. ಪೂರ್ಣ ಡಾಕರ್ ರೂಟ್ ಅನ್ನು ಹೊಸ ಸ್ಥಳಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸಲು ಕೈಪಿಡಿಗಳು.

5. ಡಾಕರ್ ಡೀಮನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಅದು ಸರಿಯಾದ ಸ್ಥಳದಲ್ಲಿ ಕಾಣುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ:

systemctl status docker

ಔಟ್ಪುಟ್ ಲೈನ್ಗಳಲ್ಲಿ ಒಂದನ್ನು ನಾವು ನೋಡಬೇಕು:

├─19493 /usr/bin/dockerd --data-root=/docker/data/storage

ಆಯ್ಕೆಯನ್ನು ಡೀಮನ್‌ಗೆ ರವಾನಿಸಲಾಗಿದೆ ಎಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಂಡಿದ್ದೇವೆ, ಈಗ ಅದು ಅನ್ವಯಿಸಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸೋಣ (ಧನ್ಯವಾದಗಳು inkvizitor68sl)!

docker info | awk '/Root Dir/ {print $NF}' 

6. ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸೋಣ:

docker-compose up -d

7. ಪರಿಶೀಲಿಸಿ

ಮತ್ತು ಇಲ್ಲಿ ವಿನೋದವು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, DBMS, MQ, ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿದೆ! ಡೇಟಾಬೇಸ್ ಅಖಂಡವಾಗಿದೆ, ಎಲ್ಲವೂ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ... nginx ಹೊರತುಪಡಿಸಿ. ನಾವು Kerberos ಮತ್ತು ವೇಶ್ಯೆಯರೊಂದಿಗೆ ನಮ್ಮ ಸ್ವಂತ nginx ನಿರ್ಮಾಣವನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಮತ್ತು ಕಂಟೇನರ್ ಲಾಗ್‌ಗಳನ್ನು ನೋಡಿದಾಗ ಅದು /var/tmp ಗೆ ಬರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂದು ಸೂಚಿಸಿದೆ - ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ. ನಾನು ನನ್ನ ಬೆರಳುಗಳಿಂದ ನನ್ನ ದೇವಾಲಯಗಳನ್ನು ಬೆರೆಸುತ್ತೇನೆ ಮತ್ತು ಪರಿಸ್ಥಿತಿಯನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ ... ಇದು ಹೇಗೆ ಸಾಧ್ಯ? ಡಾಕರ್ ಚಿತ್ರ ಬದಲಾಗಿಲ್ಲ. ನಾವು ಡೈರೆಕ್ಟರಿಯನ್ನು ಸರಿಸಿದ್ದೇವೆ. ಇದು ಯಾವಾಗಲೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಇಲ್ಲಿ ಅದು ನಿಮಗಾಗಿ ... ಪ್ರಯೋಗದ ಸಲುವಾಗಿ, ನಾನು ನನ್ನ ಕೈಗಳಿಂದ ಕಂಟೇನರ್ಗೆ ಹೋದೆ ಮತ್ತು ಈ ಡೈರೆಕ್ಟರಿಯ ಹಕ್ಕುಗಳನ್ನು ಬದಲಾಯಿಸಿದೆ, ಇದ್ದವು ಮೂಲ, ಮೂಲ 755, ನೀಡಿದರು ಮೂಲ, ಮೂಲ 777. ಮತ್ತು ಎಲ್ಲವೂ ಪ್ರಾರಂಭವಾಯಿತು ... ಒಂದು ಆಲೋಚನೆಯು ನನ್ನ ತಲೆಯಲ್ಲಿ ಧ್ವನಿಸಲು ಪ್ರಾರಂಭಿಸಿತು - ಕೆಲವು ರೀತಿಯ ಅಸಂಬದ್ಧ ... ನಾನು ಯೋಚಿಸಿದೆ, ಸರಿ, ಬಹುಶಃ ನಾನು ಏನನ್ನಾದರೂ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಿಲ್ಲ ...

ವರ್ಗಾವಣೆಯ ಸಮಯದಲ್ಲಿ ಫೈಲ್‌ಗಳಿಗೆ ಪ್ರವೇಶ ಹಕ್ಕುಗಳೊಂದಿಗೆ ನಾವು ಪ್ರೀತಿಯಲ್ಲಿ ಬೀಳುತ್ತೇವೆ ಎಂದು ನಾನು ನಿರ್ಧರಿಸಿದೆ. ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಲ್ಲಿಸಿದ್ದೇವೆ, ಡಾಕರ್ ಡೀಮನ್, ಹೊಸ ಡೈರೆಕ್ಟರಿಯನ್ನು ಅಳಿಸಿದ್ದೇವೆ ಮತ್ತು /var/lib/docker ಡೈರೆಕ್ಟರಿಯನ್ನು ಬಳಸಿ ನಕಲಿಸಿದ್ದೇವೆ rsync -a.

ಈಗ ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ, ಡಾಕರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೆಚ್ಚಿಸೋಣ.

ಆಂದ್... ಸಮಸ್ಯೆ ಹಾಗೇ ಇತ್ತು... ನನ್ನ ಕಣ್ಣು ಕುಕ್ಕಿತು. ನಾನು ನನ್ನ ವರ್ಚುವಲ್ ಯಂತ್ರದ ಕನ್ಸೋಲ್‌ಗೆ ಧಾವಿಸಿದೆ, ಅಲ್ಲಿ ನಾನು ವಿವಿಧ ಪರೀಕ್ಷೆಗಳನ್ನು ನಡೆಸುತ್ತೇನೆ, ನಾನು ಈ nginx ಇಮೇಜ್ ಅನ್ನು ಹೊಂದಿದ್ದೇನೆ ಮತ್ತು ನಾನು ಕಂಟೇನರ್ ಒಳಗೆ ಏರಿದೆ, ಮತ್ತು ಇಲ್ಲಿ /var/tmp ಡೈರೆಕ್ಟರಿಯ ಹಕ್ಕುಗಳು ರೂಟ್, ರೂಟ್ 777. ಅಂದರೆ, ನಾನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಹೊಂದಿಸಬೇಕಾದಂತೆಯೇ. ಆದರೆ ಚಿತ್ರಗಳು ಒಂದೇ ಆಗಿವೆ!

xfs ಕಡತ ವ್ಯವಸ್ಥೆಯನ್ನು ಎಲ್ಲೆಡೆ ಬಳಸಲಾಗಿದೆ.

ನಾನು ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೋಲಿಸಿದೆ

docker inspect my-nginx:12345

ಎಲ್ಲಾ ಹ್ಯಾಶ್‌ಗಳು ಒಂದೇ ಆಗಿರುತ್ತವೆ, ಎಲ್ಲಾ ಒಂದರಿಂದ ಒಂದಕ್ಕೆ. ಸರ್ವರ್‌ನಲ್ಲಿ ಮತ್ತು ನನ್ನ ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ಎರಡೂ. ನಾನು ಸ್ಥಳೀಯ nginx ಚಿತ್ರವನ್ನು ಅಳಿಸಿದ್ದೇನೆ ಮತ್ತು ಅದನ್ನು ನೋಂದಾವಣೆಯಿಂದ ಮತ್ತೆ ಎಳೆದಿದ್ದೇನೆ, ಇದು ಹಲವಾರು ಕಾರಣಗಳಿಗಾಗಿ ಒಂದೇ ಯಂತ್ರದಲ್ಲಿದೆ. ಮತ್ತು ಸಮಸ್ಯೆ ಅದೇ ... ಈಗ ನನ್ನ ಎರಡನೇ ಕಣ್ಣು ಸೆಳೆತ.

"AAAAAAAAA" ಮತ್ತು ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ ನನ್ನ ತಲೆಯಲ್ಲಿ ಯಾವ ಆಲೋಚನೆಗಳು ಇದ್ದವು ಎಂದು ನನಗೆ ಇನ್ನು ನೆನಪಿಲ್ಲ. ಅದು ಬೆಳಗಿನ ಜಾವ 4 ಗಂಟೆಯಾಗಿತ್ತು ಮತ್ತು ಇಮೇಜ್ ಲೇಯರ್‌ಗಳನ್ನು ಹ್ಯಾಶಿಂಗ್ ಮಾಡುವ ತತ್ವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಡಾಕರ್ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಬಳಸಲಾಯಿತು. ಎನರ್ಜಿ ಡ್ರಿಂಕ್‌ನ ಮೂರನೇ ಡಬ್ಬವನ್ನು ತೆರೆದರು. ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಹ್ಯಾಶಿಂಗ್ ಫೈಲ್, ಅದರ ವಿಷಯಗಳನ್ನು ಮಾತ್ರ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಎಂದು ನನಗೆ ಅರ್ಥವಾಯಿತು, ಆದರೆ ಪ್ರವೇಶ ಹಕ್ಕುಗಳಿಲ್ಲ! ಅಂದರೆ, ಕೆಲವು ನಿಗೂಢ ರೀತಿಯಲ್ಲಿ ನಮ್ಮ ಹಕ್ಕುಗಳು ಕಳೆದುಹೋಗಿವೆ, ಸೆಲಿನಕ್ಸ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಎಸಿಎಲ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಯಾವುದೇ ಜಿಗುಟಾದ ಬಿಟ್ ಇಲ್ಲ.

ನಾನು ಸ್ಥಳೀಯ ಚಿತ್ರವನ್ನು ಅಳಿಸಿದೆ, ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿಯಿಂದ ಚಿತ್ರವನ್ನು ಅಳಿಸಿದೆ ಮತ್ತು ಅದನ್ನು ಮತ್ತೆ ತಳ್ಳಿದೆ. ಮತ್ತು ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡಿದೆ. ವರ್ಗಾವಣೆಯ ಸಮಯದಲ್ಲಿ ಸ್ಥಳೀಯ ಚಿತ್ರದ ಒಳಗೆ ಮತ್ತು ನೋಂದಾವಣೆಯಲ್ಲಿರುವ ಚಿತ್ರದ ಒಳಗೆ ಹಕ್ಕುಗಳು ಕಳೆದುಹೋಗಿವೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ. ನಾನು ಈಗಾಗಲೇ ಹೇಳಿದಂತೆ, ಹಲವಾರು ಕಾರಣಗಳಿಗಾಗಿ ಅದು ಒಂದೇ ಕಾರಿನ ಮೇಲೆ ಇದೆ. ಮತ್ತು ಪರಿಣಾಮವಾಗಿ, ಒಂದು ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ /var/lib/docker.

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

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

ಫಲಿತಾಂಶ: ನಾನು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿದೆ, ನನಗೆ ಇನ್ನೂ ಕಾರಣ ಅರ್ಥವಾಗುತ್ತಿಲ್ಲ =(

ಈ ಸಮಸ್ಯೆಯ ಸಂಭವನೀಯ ಕಾರಣಗಳ ಬಗ್ಗೆ ಯಾರಾದರೂ ತಿಳಿದಿದ್ದರೆ, ಊಹೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ನಿಮ್ಮಿಂದ ಕೇಳಲು ನನಗೆ ತುಂಬಾ ಸಂತೋಷವಾಗುತ್ತದೆ!

ಮೂಲ: www.habr.com

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