เจกเฉŒเจ•เจฐ เจธเฉเจเจพเจ…: เจ•เจฌเจพเฉœ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‹

เจกเฉŒเจ•เจฐ เจธเฉเจเจพเจ…: เจ•เจฌเจพเฉœ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‹

เจนเฉ‡ เจนเจฌเจฐ! เจฎเฉˆเจ‚ เจฒเฉ‡เจ– เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจคเฉเจนเจพเจกเฉ‡ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚ "เจกเฉŒเจ•เจฐ เจธเฉเจเจพเจ…: เจ†เจชเจฃเฉ€ เจธเจฅเจพเจจเจ• เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‹" เจฒเฉ‡เจ–เจ• Luc Juggery.

เจ…เฉฑเจœ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจกเฉŒเจ•เจฐ เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจน เจตเฉ€ เจชเจคเจพ เจฒเจ—เจพเจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ‡เจธ เจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจจเจพ-เจตเจฐเจคเฉ‡ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ‡ เจธเจ•เฉเจฐเฉˆเจช เจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ–เจพเจฒเฉ€ เจ•เจฐเจจเจพ เจนเฉˆเฅค


เจกเฉŒเจ•เจฐ เจธเฉเจเจพเจ…: เจ•เจฌเจพเฉœ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‹

เจ•เฉเฉฑเจฒ เจ–เจชเจค

เจกเฉŒเจ•เจฐ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจšเฉ€เจœเจผ เจนเฉˆ, เจธเจผเจพเจ‡เจฆ เจ…เฉฑเจœ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจฒเฉ‹เจ• เจ‡เจธ 'เจคเฉ‡ เจธเจผเฉฑเจ• เจ•เจฐเจฆเฉ‡ เจนเจจ. เจ•เฉเจ เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจธ เจ‰เจคเจชเจพเจฆ เจจเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ, เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฆเจพ เจ‡เฉฑเจ• เจฌเจฟเจฒเจ•เฉเจฒ เจจเจตเจพเจ‚ เจคเจฐเฉ€เจ•เจพ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ CPU เจ…เจคเฉ‡ RAM เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ (เจ…เจคเฉ‡ เจ•เฉเจ เจฒเจˆ เจ‡เจน เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจšเฉ€เจœเจผ เจนเฉ‹เจตเฉ‡เจ—เฉ€) เจกเฉŒเจ•เจฐ เจจเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจ‰เจคเจชเจพเจฆเจจ เจตเจพเจคเจพเจตเจฐเจจ เจฆเฉ‡ เจœเฉ€เจตเจจ เจšเฉฑเจ•เจฐ เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจ…เจตเจฟเจธเจผเจตเจพเจธเจผเจฏเฉ‹เจ— เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฐเจฒ เจ…เจคเฉ‡ เจ‡เจ•เจธเจพเจฐ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจนเฉˆ.

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ†เจงเฉเจจเจฟเจ• เจœเฉ€เจตเจจ เจฆเฉ‡ เจ‡เจน เจธเจพเจฐเฉ‡ เจ…เจจเฉฐเจฆ เจ‡เฉฑเจ• เจ•เฉ€เจฎเจค 'เจคเฉ‡ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ. เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ†เจชเจฃเฉ€เจ†เจ‚ เจ–เฉเจฆ เจฆเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจœเจพเจ‚ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจˆเจ•เฉ‹เจธเจฟเจธเจŸเจฎ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฆเฉ‡ เจจเจพเจฒ, เจนเฉ‹เจฐ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ•เจฆเฉ‡ เจจเจนเฉ€เจ‚ เจธเฉ‹เจšเจฟเจ† เจนเฉˆ เจ•เจฟ เจกเฉŒเจ•เจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ€ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจ•เจฟเฉฐเจจเฉ€ เจœเจ—เฉเจนเจพ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจคเฉ‹เจ‚ เจ…เจฃเจœเจพเจฃ เจคเฉŒเจฐ 'เจคเฉ‡ เจนเฉˆเจฐเจพเจจ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

$ docker system df

เจกเฉŒเจ•เจฐ เจธเฉเจเจพเจ…: เจ•เจฌเจพเฉœ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‹

เจ‡เจน เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจฆเจฐเจญเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ เจฆเฉ€ เจกเจฟเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ:

  • เจšเจฟเฉฑเจคเจฐ - เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเจพ เจ•เฉเฉฑเจฒ เจ†เจ•เจพเจฐ เจœเฉ‹ เจšเจฟเฉฑเจคเจฐ เจญเฉฐเจกเจพเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€;
  • เจ•เฉฐเจŸเฉ‡เจจเจฐ - เจšเฉฑเจฒ เจฐเจนเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ€ เจ—เจˆ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจฆเฉ€ เจ•เฉเฉฑเจฒ เจฎเจพเจคเจฐเจพ (เจฎเจคเจฒเจฌ เจธเจพเจฐเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจฐเฉ€เจก-เจฐเจพเจˆเจŸ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฆเฉ€ เจ•เฉเฉฑเจฒ เจฎเจพเจคเจฐเจพ);
  • เจธเจฅเจพเจจเจ• เจตเจพเจฒเฉ€เจ…เจฎ - เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ 'เจคเฉ‡ เจฎเจพเจŠเจ‚เจŸ เจ•เฉ€เจคเฉ‡ เจธเจฅเจพเจจเจ• เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจฎเจพเจคเจฐเจพ;
  • เจฌเจฟเจฒเจก เจ•เฉˆเจธเจผ - เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ…เจธเจฅเจพเจˆ เจซเจพเจˆเจฒเจพเจ‚ (เจฌเจฟเจฒเจกเจ•เจฟเฉฑเจŸ เจŸเฉ‚เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจกเฉŒเจ•เจฐ เจธเฉฐเจธเจ•เจฐเจฃ 18.09 เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจ•เฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉˆ)เฅค

เจฎเฉˆเจ‚ เจธเฉฑเจŸเจพ เจฒเจ—เจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ‡เจธ เจธเจงเจพเจฐเจจ เจคเจฌเจพเจฆเจฒเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจคเฉเจธเฉ€เจ‚ เจ•เฉ‚เฉœเฉ‡ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจกเจฟเจธเจ• เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ•เฉ€เจฎเจคเฉ€ เจ—เฉ€เจ—เจพเจฌเจพเจˆเจŸ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจœเฉ€เจตเจจ เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ‰เจฃ เจฒเจˆ เจ‰เจคเจธเฉเจ• เจนเฉ‹ (เจจเฉ‹เจŸ: เจ–เจพเจธ เจ•เจฐเจ•เฉ‡ เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจนเจฐ เจฎเจนเฉ€เจจเฉ‡ เจ‡เจนเจจเจพเจ‚ เจ—เฉ€เจ—เจพเจฌเจพเจˆเจŸเจพเจ‚ เจฒเจˆ เจ•เจฟเจฐเจพเจ‡เจ† เจฆเจฟเฉฐเจฆเฉ‡ เจนเฉ‹)เฅค

เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจกเจฟเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚

เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, /var/lib/docker เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ•เจˆ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจฌเจฃเจพเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจœเจฟเจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเจจ:

  • เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ /var/lib/docker/containers/container_ID - เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฒเฉŒเจ—เจฟเฉฐเจ— เจกเจฐเจพเจˆเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจตเฉˆเจ‚เจŸ เจฒเฉŒเจ— JSON เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจฒเฉŒเจ—, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจ‰เจน เจฒเฉŒเจ— เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉ‹เจˆ เจจเจนเฉ€เจ‚ เจชเฉœเฉเจนเจฆเจพ เจœเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ, เจ…เจ•เจธเจฐ เจกเจฟเจธเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจญเจฐเจจ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเจฆเฉ‡ เจนเจจเฅค
  • /var/lib/docker/overlay2 เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฐเฉ€เจก-เจฐเจพเจˆเจŸ เจฒเฉ‡เจ…เจฐ เจนเจจ (เจ“เจตเจฐเจฒเฉ‡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)

เจ…เจธเฉ€เจ‚ prune เจธเจฌเจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

$ 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 เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ เจ‰เฉฑเจคเฉ‡ เจธเจฅเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจชเจฐ เจกเฉฑเจฌเฉ‡ เจฆเฉ‡ เจชเฉœเฉเจนเจจ-เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚? เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉ‹เจ‚เจ—เฉ‹เจกเฉ€เจฌเฉ€ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš, /เจกเจพเจŸเจพ/เจกเฉ€เจฌเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ (เจœเจฟเฉฑเจฅเฉ‡ เจฎเฉ‹เจ‚เจ—เฉ‹เจกเฉ€เจฌเฉ€ เจ†เจชเจฃเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ) เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจฒเฉ€เจ…เจฎ เจตเจœเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจกเฉŒเจ•เจฐ เจธเฉเจเจพเจ…: เจ•เจฌเจพเฉœ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‹

เจธเจพเจˆเจก เจจเฉ‹เจŸ: เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŸเจพ เจชเฉˆเจฆเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ‰เจน เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจตเจพเจฒเฉ€เจ…เจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฎเฉ‹เจ‚เจ—เฉ‹เจกเฉ€เจฌเฉ€ เจจเจพเจฒ เจ•เจพเจซเจผเฉ€ เจ–เฉ‡เจกเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฆเฉ‡ เจนเจพเจ‚ (เจœเจพเจ‚ เจธเจผเจพเจ‡เจฆ เจฎเจฟเจŸเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚), เจคเจพเจ‚ เจตเจพเจฒเฉ€เจ…เจฎ เจจเจนเฉ€เจ‚ เจฎเจฟเจŸเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจน เจธเจพเจกเฉ€ เจ•เฉ€เจฎเจคเฉ€ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจฒเฉˆเจฃเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เฉ‡เจ—เจพ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ…เจธเฉ€เจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจฎเจฟเจŸเจพ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเฉ‡:

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

เจ–เฉˆเจฐ, เจœเจพเจ‚ เจ…เจธเฉ€เจ‚ prune เจธเจฌเจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจธเจพเจกเฉ‡ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเฉˆ:

$ 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:~$

เจšเจฟเฉฑเจคเจฐ เจฌเจฟเจฒเจก เจ•เฉˆเจธเจผ เจฒเจˆ เจกเจฟเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจกเฉŒเจ•เจฐ 18.09 เจตเจฟเฉฑเจš, เจฌเจฟเจฒเจกเจ•เจฟเฉฑเจŸ เจŸเฉ‚เจฒ เจฆเฉ‡ เจ•เจพเจฐเจจ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจ•เฉเจ เจฌเจฆเจฒเจพเจ… เจนเฉ‹เจ เจนเจจเฅค เจ‡เจน เจšเฉ€เจœเจผ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจ—เจคเฉ€ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ. เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเจผเจพเจจเจฆเจพเจฐ เจŸเฉ‚เจฒ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡; เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจ‡เจธ เจ—เฉฑเจฒ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ‡เจน เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเจงเจพเจฐเจจ Node.Js เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ:

  • index.js เจซเจพเจˆเจฒ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ HTTP เจธเจฐเจตเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจนเจฐเฉ‡เจ• เจฌเฉ‡เจจเจคเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจจเจพเจฒ เจœเจตเจพเจฌ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:
  • package.json เจซเจพเจˆเจฒ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ HTTP เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจธเจฟเจฐเจซเจผ expressjs เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ:

$ 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"]

เจ†เจ“ เจฌเจฟเจฒเจกเจ•เจฟเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจ†เจฎ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆเจ:

$ 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 .

เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจนเฉเจฃ เจกเจฟเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจฌเจฟเจฒเจก เจ•เฉˆเจธเจผ (buid-cache) เจนเฉเจฃ เจ‰เฉฑเจฅเฉ‡ เจธเจผเจพเจฎเจฒ เจนเฉˆ:

$ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹