ಡಾಕರ್ ಸಲಹೆಗಳು: ನಿಮ್ಮ ಯಂತ್ರದ ಜಂಕ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ

ಡಾಕರ್ ಸಲಹೆಗಳು: ನಿಮ್ಮ ಯಂತ್ರದ ಜಂಕ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ

ಹೇ ಹಬ್ರ್! ನಾನು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ಲೇಖನದ ಅನುವಾದವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತೇನೆ "ಡಾಕರ್ ಸಲಹೆಗಳು: ನಿಮ್ಮ ಸ್ಥಳೀಯ ಯಂತ್ರವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ" ಲೇಖಕ ಲಕ್ ಜಗ್ಗರಿ.

ಇಂದು ನಾವು ಹೋಸ್ಟ್ ಯಂತ್ರದ ಡಿಸ್ಕ್ ಜಾಗವನ್ನು ಡಾಕರ್ ಹೇಗೆ ಬಳಸುತ್ತಾರೆ ಎಂಬುದರ ಕುರಿತು ನಾವು ಮಾತನಾಡುತ್ತೇವೆ ಮತ್ತು ಬಳಕೆಯಾಗದ ಚಿತ್ರಗಳು ಮತ್ತು ಕಂಟೇನರ್‌ಗಳ ಸ್ಕ್ರ್ಯಾಪ್‌ಗಳಿಂದ ಈ ಜಾಗವನ್ನು ಹೇಗೆ ಮುಕ್ತಗೊಳಿಸುವುದು ಎಂದು ನಾವು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತೇವೆ.


ಡಾಕರ್ ಸಲಹೆಗಳು: ನಿಮ್ಮ ಯಂತ್ರದ ಜಂಕ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ

ಒಟ್ಟು ಬಳಕೆ

ಡಾಕರ್ ಒಂದು ತಂಪಾದ ವಿಷಯ, ಬಹುಶಃ ಕೆಲವರು ಇಂದು ಇದನ್ನು ಅನುಮಾನಿಸುತ್ತಾರೆ. ಕೆಲವೇ ವರ್ಷಗಳ ಹಿಂದೆ, ಈ ಉತ್ಪನ್ನವು ಯಾವುದೇ ಪರಿಸರವನ್ನು ನಿರ್ಮಿಸಲು, ತಲುಪಿಸಲು ಮತ್ತು ಚಲಾಯಿಸಲು ನಮಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸ ಮಾರ್ಗವನ್ನು ನೀಡಿತು, ಇದು CPU ಮತ್ತು RAM ಸಂಪನ್ಮೂಲಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಉಳಿಸಲು ನಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದರ ಜೊತೆಗೆ (ಮತ್ತು ಕೆಲವರಿಗೆ ಇದು ಅತ್ಯಂತ ಮುಖ್ಯವಾದ ವಿಷಯವಾಗಿದೆ) ನಮ್ಮ ಉತ್ಪಾದನಾ ಪರಿಸರದ ಜೀವನಚಕ್ರ ನಿರ್ವಹಣೆಯನ್ನು ನಂಬಲಾಗದಷ್ಟು ಸರಳಗೊಳಿಸಲು ಮತ್ತು ಏಕೀಕರಿಸಲು ಡಾಕರ್ ನಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟಿದೆ.

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

ನಿಮ್ಮ ಗಣಕದಲ್ಲಿ ಡಾಕರ್ ಎಷ್ಟು ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ನೀವು ಎಂದಿಗೂ ಯೋಚಿಸದಿದ್ದರೆ, ಈ ಆಜ್ಞೆಯ ಔಟ್‌ಪುಟ್‌ನಿಂದ ನಿಮಗೆ ಅಹಿತಕರವಾಗಿ ಆಶ್ಚರ್ಯವಾಗಬಹುದು:

$ docker system df

ಡಾಕರ್ ಸಲಹೆಗಳು: ನಿಮ್ಮ ಯಂತ್ರದ ಜಂಕ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ

ಇದು ವಿಭಿನ್ನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಡಾಕರ್‌ನ ಡಿಸ್ಕ್ ಬಳಕೆಯನ್ನು ತೋರಿಸುತ್ತದೆ:

  • ಚಿತ್ರಗಳು - ಇಮೇಜ್ ರೆಪೊಸಿಟರಿಗಳಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾದ ಮತ್ತು ನಿಮ್ಮ ಸಿಸ್ಟಂನಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ಚಿತ್ರಗಳ ಒಟ್ಟು ಗಾತ್ರ;
  • ಕಂಟೈನರ್‌ಗಳು - ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಟೇನರ್‌ಗಳಿಂದ ಬಳಸಲಾಗುವ ಡಿಸ್ಕ್ ಜಾಗದ ಒಟ್ಟು ಮೊತ್ತ (ಅಂದರೆ ಎಲ್ಲಾ ಕಂಟೈನರ್‌ಗಳ ರೀಡ್-ರೈಟ್ ಲೇಯರ್‌ಗಳ ಒಟ್ಟು ಪರಿಮಾಣ);
  • ಸ್ಥಳೀಯ ಸಂಪುಟಗಳು - ಕಂಟೇನರ್‌ಗಳಿಗೆ ಜೋಡಿಸಲಾದ ಸ್ಥಳೀಯ ಸಂಗ್ರಹಣೆಯ ಪರಿಮಾಣ;
  • ಬಿಲ್ಡ್ ಕ್ಯಾಶ್ - ಇಮೇಜ್ ಬಿಲ್ಡಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಿಂದ ರಚಿಸಲಾದ ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳು (ಬಿಲ್ಡ್‌ಕಿಟ್ ಉಪಕರಣವನ್ನು ಬಳಸಿಕೊಂಡು, ಡಾಕರ್ ಆವೃತ್ತಿ 18.09 ರಿಂದ ಪ್ರಾರಂಭವಾಗಿ ಲಭ್ಯವಿದೆ).

ಈ ಸರಳ ವರ್ಗಾವಣೆಯ ನಂತರ ನಿಮ್ಮ ಕಸದ ಡಿಸ್ಕ್ ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಮತ್ತು ಅಮೂಲ್ಯವಾದ ಗಿಗಾಬೈಟ್‌ಗಳನ್ನು ಮರಳಿ ಜೀವಕ್ಕೆ ತರಲು ನೀವು ಉತ್ಸುಕರಾಗಿದ್ದೀರಿ ಎಂದು ನಾನು ಬಾಜಿ ಮಾಡುತ್ತೇನೆ (ಗಮನಿಸಿ: ವಿಶೇಷವಾಗಿ ನೀವು ಈ ಗಿಗಾಬೈಟ್‌ಗಳಿಗೆ ಪ್ರತಿ ತಿಂಗಳು ಬಾಡಿಗೆಯನ್ನು ಪಾವತಿಸಿದರೆ).

ಕಂಟೇನರ್‌ಗಳಿಂದ ಡಿಸ್ಕ್ ಬಳಕೆ

ಪ್ರತಿ ಬಾರಿ ನೀವು ಹೋಸ್ಟ್ ಗಣಕದಲ್ಲಿ ಕಂಟೇನರ್ ಅನ್ನು ರಚಿಸಿದಾಗ, ಹಲವಾರು ಫೈಲ್‌ಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿಗಳನ್ನು /var/lib/docker ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ರಚಿಸಲಾಗುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಗಮನಿಸುವುದು ಯೋಗ್ಯವಾಗಿದೆ:

  • ಡೈರೆಕ್ಟರಿ /var/lib/docker/containers/container_ID - ಪ್ರಮಾಣಿತ ಲಾಗಿಂಗ್ ಡ್ರೈವರ್ ಅನ್ನು ಬಳಸುವಾಗ, ಈವೆಂಟ್ ಲಾಗ್‌ಗಳನ್ನು JSON ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ. ತುಂಬಾ ವಿವರವಾದ ಲಾಗ್‌ಗಳು, ಹಾಗೆಯೇ ಯಾರೂ ಓದದ ಅಥವಾ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸದ ಲಾಗ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಡಿಸ್ಕ್‌ಗಳು ಪೂರ್ಣಗೊಳ್ಳಲು ಕಾರಣವಾಗುತ್ತವೆ.
  • /var/lib/docker/overlay2 ಡೈರೆಕ್ಟರಿಯು ಕಂಟೈನರ್ ರೀಡ್-ರೈಟ್ ಲೇಯರ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ (ಹೆಚ್ಚಿನ Linux ವಿತರಣೆಗಳಲ್ಲಿ ಓವರ್‌ಲೇ2 ಆದ್ಯತೆಯ ಚಾಲಕವಾಗಿದೆ). ಕಂಟೇನರ್ ಅದರ ಫೈಲ್ ಸಿಸ್ಟಮ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿದರೆ, ಅದನ್ನು ಈ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ.

ಕಂಟೇನರ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಅಥವಾ ಚಿತ್ರಗಳನ್ನು ನಿರ್ಮಿಸಲು ಎಂದಿಗೂ ತೊಡಗಿಸಿಕೊಂಡಿರುವ ಪ್ರಾಚೀನ ಡಾಕರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿದ ವ್ಯವಸ್ಥೆಯನ್ನು ನಾವು ಊಹಿಸೋಣ. ಇದರ ಡಿಸ್ಕ್ ಸ್ಪೇಸ್ ಬಳಕೆಯ ವರದಿಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

$ docker system df
TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         0          0          0B         0B
Containers     0          0          0B         0B
Local Volumes  0          0          0B         0B
Build Cache    0          0          0B         0B

ಕೆಲವು ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸೋಣ, ಉದಾಹರಣೆಗೆ, NGINX:

$ docker container run --name www -d -p 8000:80 nginx:1.16

ಡಿಸ್ಕ್ಗೆ ಏನಾಗುತ್ತದೆ:

  • ಚಿತ್ರಗಳು 126 MB ಆಕ್ರಮಿಸುತ್ತವೆ, ಇದು ನಾವು ಕಂಟೇನರ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿದ ಅದೇ NGINX ಆಗಿದೆ;
  • ಧಾರಕಗಳು ಹಾಸ್ಯಾಸ್ಪದ 2 ಬೈಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ.

$ docker system df
TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         1          1          126M       0B (0%)
Containers     1          1          2B         0B (0%)
Local Volumes  0          0          0B         0B
Build Cache    0          0          0B         0B

ತೀರ್ಮಾನದ ಮೂಲಕ ನಿರ್ಣಯಿಸುವುದು, ನಾವು ಇನ್ನೂ ಮುಕ್ತಗೊಳಿಸಬಹುದಾದ ಯಾವುದೇ ಸ್ಥಳವನ್ನು ಹೊಂದಿಲ್ಲ. 2 ಬೈಟ್‌ಗಳು ಸಂಪೂರ್ಣವಾಗಿ ನಿಷ್ಪ್ರಯೋಜಕವಾಗಿರುವುದರಿಂದ, ನಮ್ಮ NGINX ಅನಿರೀಕ್ಷಿತವಾಗಿ ಎಲ್ಲೋ 100 ಮೆಗಾಬೈಟ್‌ಗಳ ಡೇಟಾವನ್ನು ಬರೆದಿದೆ ಮತ್ತು ಅದರೊಳಗೆ ನಿಖರವಾಗಿ ಈ ಗಾತ್ರದ test.img ಫೈಲ್ ಅನ್ನು ರಚಿಸಿದೆ ಎಂದು ಊಹಿಸೋಣ.

$ docker exec -ti www 
  dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]

ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಡಿಸ್ಕ್ ಸ್ಪೇಸ್ ಬಳಕೆಯನ್ನು ಮತ್ತೊಮ್ಮೆ ಪರಿಶೀಲಿಸೋಣ. ಕಂಟೇನರ್ (ಕಂಟೇನರ್) ಅಲ್ಲಿ 100 ಮೆಗಾಬೈಟ್ಗಳನ್ನು ಆಕ್ರಮಿಸಿಕೊಂಡಿದೆ ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ.

$ docker system df
TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         1          1          126M       0B (0%)
Containers     1          1          104.9MB    0B (0%)
Local Volumes  0          0          0B         0B
Build Cache    0          0          0B         0B

ನಮ್ಮ test.img ಫೈಲ್ ಎಲ್ಲಿದೆ ಎಂದು ನಿಮ್ಮ ಜಿಜ್ಞಾಸೆಯ ಮೆದುಳು ಈಗಾಗಲೇ ಆಶ್ಚರ್ಯ ಪಡುತ್ತಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಅದನ್ನು ಹುಡುಕೋಣ:

$ find /var/lib/docker -type f -name test.img
/var/lib/docker/overlay2/83f177...630078/merged/test.img
/var/lib/docker/overlay2/83f177...630078/diff/test.img

ವಿವರಗಳಿಗೆ ಹೋಗದೆಯೇ, test.img ಫೈಲ್ ಅನ್ನು ಓದಲು-ಬರೆಯುವ ಮಟ್ಟದಲ್ಲಿ ಅನುಕೂಲಕರವಾಗಿ ಇದೆ ಎಂದು ನಾವು ಗಮನಿಸಬಹುದು, ಇದನ್ನು ಓವರ್‌ಲೇ2 ಡ್ರೈವರ್‌ನಿಂದ ನಿಯಂತ್ರಿಸಲಾಗುತ್ತದೆ. ನಾವು ನಮ್ಮ ಕಂಟೇನರ್ ಅನ್ನು ನಿಲ್ಲಿಸಿದರೆ, ಈ ಜಾಗವನ್ನು ತಾತ್ವಿಕವಾಗಿ ಮುಕ್ತಗೊಳಿಸಬಹುದು ಎಂದು ಹೋಸ್ಟ್ ನಮಗೆ ತಿಳಿಸುತ್ತದೆ:

# Stopping the www container
$ docker stop www

# Visualizing the impact on the disk usage
$ docker system df
TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         1          1          126M       0B (0%)
Containers     1          0          104.9MB    104.9MB (100%)
Local Volumes  0          0          0B         0B
Build Cache    0          0          0B         0B

ನಾವು ಇದನ್ನು ಹೇಗೆ ಮಾಡಬಹುದು? ಕಂಟೇನರ್ ಅನ್ನು ಅಳಿಸುವ ಮೂಲಕ, ಇದು ಓದಲು-ಬರೆಯುವ ಮಟ್ಟದಲ್ಲಿ ಅನುಗುಣವಾದ ಜಾಗವನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ.

ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ, ನೀವು ಸ್ಥಾಪಿಸಿದ ಎಲ್ಲಾ ಕಂಟೇನರ್‌ಗಳನ್ನು ಒಂದೇ ಸ್ವೂಪ್‌ನಲ್ಲಿ ತೆಗೆದುಹಾಕಬಹುದು ಮತ್ತು ಅವುಗಳಿಂದ ರಚಿಸಲಾದ ಎಲ್ಲಾ ಓದಲು-ಬರಹ ಫೈಲ್‌ಗಳ ನಿಮ್ಮ ಡಿಸ್ಕ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಬಹುದು:

$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
5e7f8e5097ace9ef5518ebf0c6fc2062ff024efb495f11ccc89df21ec9b4dcc2

Total reclaimed space: 104.9MB

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

$ docker system df
TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         1          0          126M       126M (100%)
Containers     0          0          0B         0B
Local Volumes  0          0          0B         0B
Build Cache    0          0          0B         0B

ಗಮನಿಸಿ: ಚಿತ್ರವು ಕನಿಷ್ಟ ಒಂದು ಕಂಟೇನರ್‌ನಿಂದ ಬಳಕೆಯಲ್ಲಿರುವವರೆಗೆ, ನೀವು ಈ ಟ್ರಿಕ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.

ನಾವು ಮೇಲೆ ಬಳಸಿದ ಪ್ರೂನ್ ಸಬ್‌ಕಮಾಂಡ್ ನಿಲ್ಲಿಸಿದ ಕಂಟೈನರ್‌ಗಳ ಮೇಲೆ ಮಾತ್ರ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ನಾವು ನಿಲ್ಲಿಸಲು ಮಾತ್ರವಲ್ಲದೆ ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಟೇನರ್‌ಗಳನ್ನು ಅಳಿಸಲು ಬಯಸಿದರೆ, ನಾವು ಈ ಆಜ್ಞೆಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸಬೇಕು:

# Historical command
$ docker rm -f $(docker ps –aq)

# More recent command
$ docker container rm -f $(docker container ls -aq)

ಅಡ್ಡ ಟಿಪ್ಪಣಿಗಳು: ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವಾಗ ನೀವು -rm ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು ಬಳಸಿದರೆ, ಅದು ನಿಂತಾಗ, ಅದು ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಎಲ್ಲಾ ಡಿಸ್ಕ್ ಜಾಗವನ್ನು ಮುಕ್ತಗೊಳಿಸಲಾಗುತ್ತದೆ.

ಡಿಸ್ಕ್ ಚಿತ್ರಗಳನ್ನು ಬಳಸುವುದು

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

ಅಂತಿಮ ಬಳಕೆದಾರರಿಗೆ ನೇರವಾಗಿ ಗೋಚರಿಸದ ಹಲವಾರು ರೀತಿಯ ಚಿತ್ರಗಳಿವೆ:

  • ಮಧ್ಯಂತರ ಚಿತ್ರಗಳು, ಅದರ ಆಧಾರದ ಮೇಲೆ ಇತರ ಚಿತ್ರಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ - ನೀವು ಈ "ಇತರ" ಚಿತ್ರಗಳ ಆಧಾರದ ಮೇಲೆ ಧಾರಕಗಳನ್ನು ಬಳಸಿದರೆ ಅವುಗಳನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ;
  • ತೂಗಾಡುವ ಚಿತ್ರಗಳು ಮಧ್ಯಂತರ ಚಿತ್ರಗಳಾಗಿವೆ, ಅವುಗಳು ಚಾಲನೆಯಲ್ಲಿರುವ ಯಾವುದೇ ಕಂಟೈನರ್‌ಗಳಿಂದ ಉಲ್ಲೇಖಿಸಲ್ಪಡುವುದಿಲ್ಲ - ಅವುಗಳನ್ನು ಅಳಿಸಬಹುದು.
  • ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ ನಿಮ್ಮ ಸಿಸ್ಟಂನಲ್ಲಿ ತೂಗಾಡುತ್ತಿರುವ ಚಿತ್ರಗಳನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬಹುದು:

$ docker image ls -f dangling=true
REPOSITORY  TAG      IMAGE ID         CREATED             SIZE
none      none   21e658fe5351     12 minutes ago      71.3MB

ನೀವು ಅವುಗಳನ್ನು ಈ ಕೆಳಗಿನ ರೀತಿಯಲ್ಲಿ ತೆಗೆದುಹಾಕಬಹುದು:

$ docker image rm $(docker image ls -f dangling=true -q)

ನಾವು ಪ್ರೂನ್ ಉಪಕಮಾಂಡ್ ಅನ್ನು ಸಹ ಬಳಸಬಹುದು:

$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:143407a3cb7efa6e95761b8cd6cea25e3f41455be6d5e7cda
deleted: sha256:738010bda9dd34896bac9bbc77b2d60addd7738ad1a95e5cc
deleted: sha256:fa4f0194a1eb829523ecf3bad04b4a7bdce089c8361e2c347
deleted: sha256:c5041938bcb46f78bf2f2a7f0a0df0eea74c4555097cc9197
deleted: sha256:5945bb6e12888cf320828e0fd00728947104da82e3eb4452f

Total reclaimed space: 12.9kB

ಒಂದು ಆಜ್ಞೆಯೊಂದಿಗೆ ನಾವು ಇದ್ದಕ್ಕಿದ್ದಂತೆ ಎಲ್ಲಾ ಚಿತ್ರಗಳನ್ನು ಅಳಿಸಲು ಬಯಸಿದರೆ (ಮತ್ತು ಕೇವಲ ತೂಗಾಡುವುದು ಅಲ್ಲ), ನಂತರ ನಾವು ಇದನ್ನು ಮಾಡಬಹುದು:

$ docker image rm $(docker image ls -q)

ಸಂಪುಟಗಳ ಮೂಲಕ ಡಿಸ್ಕ್ ಬಳಕೆ

ಕಂಟೇನರ್‌ನ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನ ಹೊರಗೆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಸಂಪುಟಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಾವು ಅಪ್ಲಿಕೇಶನ್‌ನ ಫಲಿತಾಂಶಗಳನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಬಳಸಲು ಅವುಗಳನ್ನು ಉಳಿಸಲು ಬಯಸಿದರೆ. ಒಂದು ಸಾಮಾನ್ಯ ಉದಾಹರಣೆ ಡೇಟಾಬೇಸ್ ಆಗಿದೆ.

ನಾವು MongoDB ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸೋಣ, ಕಂಟೇನರ್‌ಗೆ ಬಾಹ್ಯ ಪರಿಮಾಣವನ್ನು ಆರೋಹಿಸೋಣ ಮತ್ತು ಅದರಿಂದ ಡೇಟಾಬೇಸ್ ಬ್ಯಾಕಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸೋಣ (ನಾವು ಅದನ್ನು bck.json ಫೈಲ್‌ನಲ್ಲಿ ಹೊಂದಿದ್ದೇವೆ):

# Running a mongo container
$ docker run --name db -v $PWD:/tmp -p 27017:27017 -d mongo:4.0

# Importing an existing backup (from a huge bck.json file)
$ docker exec -ti db mongoimport 
  --db 'test' 
  --collection 'demo' 
  --file /tmp/bck.json 
  --jsonArray

ಡೇಟಾವು ಹೋಸ್ಟ್ ಗಣಕದಲ್ಲಿ /var/lib/docker/volumes ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಇರುತ್ತದೆ. ಆದರೆ ಧಾರಕದ ಓದು-ಬರಹ ಮಟ್ಟದಲ್ಲಿ ಏಕೆ ಇಲ್ಲ? ಏಕೆಂದರೆ MongoDB ಚಿತ್ರದ ಡಾಕರ್‌ಫೈಲ್‌ನಲ್ಲಿ, /data/db ಡೈರೆಕ್ಟರಿ (ಇಲ್ಲಿ MongoDB ಅದರ ಡೇಟಾವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ) ಒಂದು ಪರಿಮಾಣ ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ.

ಡಾಕರ್ ಸಲಹೆಗಳು: ನಿಮ್ಮ ಯಂತ್ರದ ಜಂಕ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ

ಸೈಡ್ ನೋಟ್: ಡೇಟಾವನ್ನು ಉತ್ಪಾದಿಸಬೇಕಾದ ಅನೇಕ ಚಿತ್ರಗಳು ಆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಸಂಪುಟಗಳನ್ನು ಬಳಸುತ್ತವೆ.

ನಾವು MongoDB ಯೊಂದಿಗೆ ಸಾಕಷ್ಟು ಪ್ಲೇ ಮಾಡಿದಾಗ ಮತ್ತು ಕಂಟೇನರ್ ಅನ್ನು ನಿಲ್ಲಿಸಿದಾಗ (ಅಥವಾ ಅಳಿಸಬಹುದು) ವಾಲ್ಯೂಮ್ ಅನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ. ಈ ರೀತಿಯ ಆಜ್ಞೆಯೊಂದಿಗೆ ನಾವು ಅದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಅಳಿಸುವವರೆಗೆ ಅದು ನಮ್ಮ ಅಮೂಲ್ಯವಾದ ಡಿಸ್ಕ್ ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ:

$ docker volume rm $(docker volume ls -q)

ಸರಿ, ಅಥವಾ ನಾವು ಈಗಾಗಲೇ ನಮಗೆ ಪರಿಚಿತವಾಗಿರುವ ಪ್ರೂನ್ ಉಪಕಮಾಂಡ್ ಅನ್ನು ಬಳಸಬಹುದು:

$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
d50b6402eb75d09ec17a5f57df4ed7b520c448429f70725fc5707334e5ded4d5
8f7a16e1cf117cdfddb6a38d1f4f02b18d21a485b49037e2670753fa34d115fc
599c3dd48d529b2e105eec38537cd16dac1ae6f899a123e2a62ffac6168b2f5f
...
732e610e435c24f6acae827cd340a60ce4132387cfc512452994bc0728dd66df
9a3f39cc8bd0f9ce54dea3421193f752bda4b8846841b6d36f8ee24358a85bae
045a9b534259ec6c0318cb162b7b4fca75b553d4e86fc93faafd0e7c77c79799
c6283fe9f8d2ca105d30ecaad31868410e809aba0909b3e60d68a26e92a094da

Total reclaimed space: 25.82GB
luc@saturn:~$

ಇಮೇಜ್ ಬಿಲ್ಡ್ ಕ್ಯಾಶೆಗಾಗಿ ಡಿಸ್ಕ್ ಅನ್ನು ಬಳಸುವುದು

Docker 18.09 ರಲ್ಲಿ, BuildKit ಟೂಲ್‌ನಿಂದಾಗಿ ಇಮೇಜ್ ರಚನೆ ಪ್ರಕ್ರಿಯೆಯು ಕೆಲವು ಬದಲಾವಣೆಗಳಿಗೆ ಒಳಗಾಗಿದೆ. ಈ ವಿಷಯವು ಪ್ರಕ್ರಿಯೆಯ ವೇಗವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ ಮತ್ತು ಡೇಟಾ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಭದ್ರತಾ ನಿರ್ವಹಣೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸುತ್ತದೆ. ಈ ಅದ್ಭುತ ಸಾಧನದ ಎಲ್ಲಾ ವಿವರಗಳನ್ನು ನಾವು ಇಲ್ಲಿ ಪರಿಗಣಿಸುವುದಿಲ್ಲ; ಡಿಸ್ಕ್ ಸ್ಪೇಸ್ ಬಳಕೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಅದು ಹೇಗೆ ಪರಿಹರಿಸುತ್ತದೆ ಎಂಬುದರ ಮೇಲೆ ಮಾತ್ರ ನಾವು ಗಮನಹರಿಸುತ್ತೇವೆ.

ನಾವು ಸಂಪೂರ್ಣವಾಗಿ ಸರಳವಾದ Node.Js ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಎಂದು ಹೇಳೋಣ:

  • index.js ಫೈಲ್ ಸರಳವಾದ HTTP ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಅದು ಸ್ವೀಕರಿಸಿದ ಪ್ರತಿ ವಿನಂತಿಗೆ ಒಂದು ಸಾಲಿನೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ:
  • ಪ್ಯಾಕೇಜ್.json ಫೈಲ್ ಅವಲಂಬನೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಅದರಲ್ಲಿ HTTP ಸರ್ವರ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಎಕ್ಸ್‌ಪ್ರೆಸ್‌ಜೆಗಳನ್ನು ಮಾತ್ರ ಬಳಸಲಾಗುತ್ತದೆ:

$ cat index.js
var express = require('express');
var util    = require('util');
var app = express();
app.get('/', function(req, res) {
  res.setHeader('Content-Type', 'text/plain');
  res.end(util.format("%s - %s", new Date(), 'Got Request'));
});
app.listen(process.env.PORT || 80);

$ cat package.json
    {
      "name": "testnode",
      "version": "0.0.1",
      "main": "index.js",
      "scripts": {
        "start": "node index.js"
      },
      "dependencies": {
        "express": "^4.14.0"
      }
    }

ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸಲು ಡಾಕರ್‌ಫೈಲ್ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

FROM node:13-alpine
COPY package.json /app/package.json
RUN cd /app && npm install
COPY . /app/
WORKDIR /app
EXPOSE 80
CMD ["npm", "start"]

BuildKit ಅನ್ನು ಬಳಸದೆಯೇ ಚಿತ್ರವನ್ನು ಸಾಮಾನ್ಯ ರೀತಿಯಲ್ಲಿ ನಿರ್ಮಿಸೋಣ:

$ docker build -t app:1.0 .

ನಾವು ಡಿಸ್ಕ್ ಜಾಗದ ಬಳಕೆಯನ್ನು ಪರಿಶೀಲಿಸಿದರೆ, ಮೂಲ ಚಿತ್ರ (ನೋಡ್: 13-ಆಲ್ಪೈನ್) ಮತ್ತು ಗುರಿ ಚಿತ್ರ (ಅಪ್ಲಿಕೇಶನ್: 1.0) ಮಾತ್ರ ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತಿದೆ ಎಂದು ನಾವು ನೋಡಬಹುದು:

TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         2          0          109.3MB    109.3MB (100%)
Containers     0          0          0B         0B
Local Volumes  0          0          0B         0B
Build Cache    0          0          0B         0B

BuildKit ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನ ಎರಡನೇ ಆವೃತ್ತಿಯನ್ನು ನಿರ್ಮಿಸೋಣ. ಇದನ್ನು ಮಾಡಲು, ನಾವು DOCKER_BUILDKIT ವೇರಿಯೇಬಲ್ ಅನ್ನು 1 ಗೆ ಹೊಂದಿಸಬೇಕಾಗಿದೆ:

$ DOCKER_BUILDKIT=1 docker build -t app:2.0 .

ನಾವು ಈಗ ಡಿಸ್ಕ್ ಬಳಕೆಯನ್ನು ಪರಿಶೀಲಿಸಿದರೆ, ಬಿಲ್ಡ್ ಕ್ಯಾಶ್ (ಬಿಡ್-ಕ್ಯಾಶ್) ಈಗ ಅಲ್ಲಿ ತೊಡಗಿಸಿಕೊಂಡಿರುವುದನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ:

$ docker system df
TYPE           TOTAL      ACTIVE     SIZE       RECLAIMABLE
Images         2          0          109.3MB    109.3MB (100%)
Containers     0          0          0B         0B
Local Volumes  0          0          0B         0B
Build Cache    11         0          8.949kB    8.949kB

ಅದನ್ನು ತೆರವುಗೊಳಿಸಲು, ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ:

$ docker builder prune
WARNING! This will remove all dangling build cache.
Are you sure you want to continue? [y/N] y
Deleted build cache objects:
rffq7b06h9t09xe584rn4f91e
ztexgsz949ci8mx8p5tzgdzhe
3z9jeoqbbmj3eftltawvkiayi

Total reclaimed space: 8.949kB

ಎಲ್ಲವನ್ನೂ ತೆಗೆ!

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

$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N]

ಕೆಲವು ಕಾರಣಗಳಿಗಾಗಿ ನೀವು ಡಾಕರ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಯಂತ್ರದಲ್ಲಿ ಡಿಸ್ಕ್ ಜಾಗವನ್ನು ಉಳಿಸುತ್ತಿದ್ದರೆ, ನಿಯತಕಾಲಿಕವಾಗಿ ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸುವುದು ಅಭ್ಯಾಸವಾಗಬೇಕು.

ಮೂಲ: www.habr.com

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