CI เช…เชฅเชตเชพ เชŸเซ‡เชธเซเชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ Docker-in-Docker เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชšเชพเชฐเซ‹

CI เช…เชฅเชตเชพ เชŸเซ‡เชธเซเชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ Docker-in-Docker เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชšเชพเชฐเซ‹

เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เช เชตเชฐเซเชšเซเชฏเซเช…เชฒเชพเชˆเชเซเชก เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เช›เซ‡ เชœเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชœ เช•เชจเซเชŸเซ‡เชจเชฐ เชˆเชฎเซ‡เชœเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‡ เช›เซ‡. เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชฎเซเช–เซเชฏ เชนเซ‡เชคเซ เชกเซ‹เช•เชฐเชจเซ‡ เชœ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพเชจเซ‹ เชนเชคเซ‹. เชœเซ‡เชจเช•เชฟเชจเซเชธ เชธเซ€เช†เชˆ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช† เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเช›เซ€ เชธเชฎเชธเซเชฏเชพเช“ เชŠเชญเซ€ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ CI เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชกเซ‹เช•เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชจเซ‡ เชŸเชพเชณเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เชฒเซ‡เช– เชคเชฎเชจเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚. เชœเซ‹ เชคเชฎเชจเซ‡ เชตเชฟเช—เชคเซ‹ เชตเชฟเชจเชพ เช…เช‚เชคเชฟเชฎ เช‰เช•เซ‡เชฒเชฎเชพเช‚ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เชซเช•เซเชค เชฒเซ‡เช–เชจเซ‹ เช›เซ‡เชฒเซเชฒเซ‹ เชตเชฟเชญเชพเช— เชตเชพเช‚เชšเซ‹, "เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ."

CI เช…เชฅเชตเชพ เชŸเซ‡เชธเซเชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ Docker-in-Docker เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชšเชพเชฐเซ‹

เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ: "เชธเชพเชฐเซเช‚"

เชฌเซ‡ เชตเชฐเซเชทเชฅเซ€ เชตเชงเซ เชชเชนเซ‡เชฒเชพเช‚ เชฎเซ‡เช‚ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเซเช‚ เชงเซเชตเชœ - เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เซƒเชค เช…เชจเซ‡ เชฒเช–เซเชฏเซเช‚ เชกเซ€เช‚เชกเชจเซเช‚ เชชเซเชฐเชฅเชฎ เชธเช‚เชธเซเช•เชฐเชฃ. เชงเซเชฏเซ‡เชฏ เชฎเซเช–เซเชฏ เชŸเซ€เชฎเชจเซ‡ เชกเซ‹เช•เชฐเชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพเชจเซ‹ เชนเชคเซ‹. เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เชชเชนเซ‡เชฒเชพเช‚, เชฒเชพเช•เซเชทเชฃเชฟเช• เชตเชฟเช•เชพเชธ เชšเช•เซเชฐ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชคเซเช‚ เชนเชคเซเช‚:

  • เชนเซ‡เช•เซ€เชŸเซ€ เชนเซ‡เช•;
  • เชฌเชพเช‚เชงเชตเซเช‚
  • เชšเชพเชฒเชคเชพ เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจเชจเซ‡ เชฐเซ‹เช•เชตเซเช‚;
  • เชจเชตเซเช‚ เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡;
  • เชชเชฐเซ€เช•เซเชทเชฃ
  • เชšเช•เซเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ‹.

เชœเซ‹ เชคเชฎเซ‡ เชธเซเช‚เชฆเชฐ, เชชเซเชจเชƒเช‰เชคเซเชชเชพเชฆเชจเช•เซเชทเชฎ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚) เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเซ‡ เชตเชงเซ เชœเชŸเชฟเชฒ เชฌเชจเซเชฏเซเช‚:

  • เชนเซ‡เช•เซ€เชŸเซ€ เชนเซ‡เช•;
  • เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชกเซ‹เช•เชฐเชจเซเช‚ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชธเช‚เชธเซเช•เชฐเชฃ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡;
  • เชœเซ‚เชจเชพ เชกเซ‹เช•เชฐ เชธเชพเชฅเซ‡ เชจเชตเซเช‚ เชกเซ‹เช•เชฐ เชฌเชจเชพเชตเซ‹;
  • เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจ เชฐเซ‹เช•เซ‹;
  • เชจเชตเซเช‚ เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจ เชถเชฐเซ‚ เช•เชฐเซ‹;
  • เชชเชฐเซ€เช•เซเชทเชฃ
  • เชจเชตเชพ เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจเชจเซ‡ เชฐเซ‹เช•เซ‹;
  • เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ

เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐเชจเชพ เช†เช—เชฎเชจ เชธเชพเชฅเซ‡, เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชฐเชณ เชฌเชจเซ€ เช›เซ‡:

  • เชนเซ‡เช•เซ€เชŸเซ€ เชนเซ‡เช•;
  • เชเชธเซ‡เชฎเซเชฌเชฒเซ€ + เชเช• เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชฒเซ‹เช‚เชš;
  • เชšเช•เซเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ‹.

เชคเซ‡ เช† เชฐเซ€เชคเซ‡ เชตเชงเซ เชธเชพเชฐเซเช‚ เชจเชฅเซ€?

CI เช…เชฅเชตเชพ เชŸเซ‡เชธเซเชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ Docker-in-Docker เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชšเชพเชฐเซ‹

เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ: "เช–เชฐเชพเชฌ"

เชœเซ‹ เช•เซ‡, เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชฎเชพเชจเซเชฏเชคเชพเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ 100% เชธเซเชŸเชพเชฐเซเชธ, เชŸเชŸเซเชŸเซ เช…เชจเซ‡ เชฏเซเชจเชฟเช•เซ‹เชฐเซเชจ เชจเชฅเซ€. เชฎเชพเชฐเซ‹ เช•เชนเซ‡เชตเชพเชจเซ‹ เชฎเชคเชฒเชฌ เช เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ เช˜เชฃเซ€ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเชจเซ‡ เชœเชพเช—เซƒเชค เชฐเชนเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เชเชฒเชเชธเชเชฎ (เชฒเชฟเชจเช•เซเชธ เชธเชฟเช•เซเชฏเซเชฐเชฟเชŸเซ€ เชฎเซ‹เชกเซเชฏเซเชฒเซเชธ) เชœเซ‡เชตเซ€ เช•เซ‡ เชเชชเช†เชฐเซเชฎเชฐ เช…เชจเซ‡ เชธเซ‡เชฒเชฟเชจเช•เซเชธเชจเซ€ เชšเชฟเช‚เชคเชพ เช•เชฐเซ‡ เช›เซ‡: เชœเซเชฏเชพเชฐเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ "เช†เช‚เชคเชฐเชฟเช• เชกเซ‹เช•เชฐ" เชธเซเชฐเช•เซเชทเชพ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡ "เชฌเชพเชนเซเชฏ เชกเซ‹เช•เชฐ" เชจเซ‡ เชธเช‚เช˜เชฐเซเชท เช•เชฐเชถเซ‡ เช…เชฅเชตเชพ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เชฎเซ‚เช•เชถเซ‡. -เชชเซเชฐเชฟเชตเชฟเชฒเซ‡เชœเซเชก เชงเซเชตเชœเชจเชพ เชฎเซ‚เชณ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชฎเชฐเซเชœ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช† เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซŒเชฅเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เชธเชฎเชธเซเชฏเชพ เช›เซ‡. เชฎเชพเชฐเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชพเชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชฎเชพเชฐเชพ เชกเซ‡เชฌเชฟเชฏเชจ เชฎเชถเซ€เชจ เช…เชจเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชŸเซ‡เชธเซเชŸ VM เชชเชฐ เชชเชธเชพเชฐ เชฅเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฎเชพเชˆเช•เชฒ เช•เซเชฐเซ‹เชธเชฌเซ€เชจเชพ เชฎเชถเซ€เชจ เชชเชฐ เช•เซเชฐเซ‡เชถ เชฅเชˆ เชœเชถเซ‡ เช…เชจเซ‡ เชฌเชณเซ€ เชœเชถเซ‡ (เชฎเชจเซ‡ เชฏเชพเชฆ เช›เซ‡ เชคเซ‡เชฎ เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชซเซ‡เชกเซ‹เชฐเชพ เชนเชคเซ€). เชฎเชจเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชšเซ‹เช•เซเช•เชธ เช•เชพเชฐเชฃ เชฏเชพเชฆ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชเชตเซเช‚ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชฎเชพเชˆเช• เชเช• เชธเชฎเชœเชฆเชพเชฐ เชตเซเชฏเช•เซเชคเชฟ เช›เซ‡ เชœเซ‡ SELINUX=enforce (เชฎเซ‡เช‚ AppArmor เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡) เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเชพเชฐเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ SELinux เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ เชจเชฅเซ€.

เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ: "เชเชตเชฟเชฒ"

เชฌเซ€เชœเซ‹ เชฎเซเชฆเซเชฆเซ‹ เชกเซ‹เช•เชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชกเซเชฐเชพเช‡เชตเชฐเซ‹เชจเซ‹ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เชšเชฒเชพเชตเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชฌเชพเชนเซเชฏ เชกเซ‹เช•เชฐ เชจเชฟเชฏเชฎเชฟเชค เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡ (EXT4, BTRFS, เช…เชฅเชตเชพ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช—เชฎเซ‡ เชคเซ‡ เชนเซ‹เชฏ) เช…เชจเซ‡ เช†เช‚เชคเชฐเชฟเช• เชกเซ‹เช•เชฐ เช•เซ‰เชชเชฟ-เช‘เชจ-เชฐเชพเช‡เชŸ เชธเชฟเชธเซเชŸเชฎ (AUFS, BTRFS, เช‰เชชเช•เชฐเชฃ เชฎเซ‡เชชเชฐ) เชจเซ€ เชŸเซ‹เชš เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡. , เชตเช—เซ‡เชฐเซ‡). , เชฌเชพเชนเซเชฏ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชถเซเช‚ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡). เช† เช˜เชฃเชพ เชธเช‚เชฏเซ‹เชœเชจเซ‹ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ AUFS เชจเซ€ เชŸเซ‹เชš เชชเชฐ AUFS เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅ เชนเชถเซ‹ เชจเชนเซ€เช‚.

เชœเซ‹ เชคเชฎเซ‡ BTRFS เชจเซ€ เชŸเซ‹เชš เชชเชฐ BTRFS เชšเชฒเชพเชตเซ‹ เช›เซ‹, เชคเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช, เชชเชฐเช‚เชคเซ เชเช•เชตเชพเชฐ เชจเซ‡เชธเซเชŸเซ‡เชก เชธเชฌเชตเซ‹เชฒเซเชฏเซเชฎเซเชธ เชนเซ‹เชฏ, เชคเซ‹ เชชเซ‡เชฐเซ‡เช‚เชŸ เชธเชฌเชตเซ‹เชฒเซเชฏเซเชฎ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชจเซเช‚ เชจเชฟเชทเซเชซเชณ เชœเชถเซ‡. เช‰เชชเช•เชฐเชฃ เชฎเซ‡เชชเชฐ เชฎเซ‹เชกเซเชฏเซเชฒ เชชเชพเชธเซ‡ เช•เซ‹เชˆ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชœเซ‹ เชเช• เชœ เชฎเชถเซ€เชจ เชชเชฐ เชฌเชนเซเชตเชฟเชง เชกเซ‹เช•เชฐ เชฆเชพเช–เชฒเชพเช“ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชฌเชงเชพ เชเช•เชฌเซ€เชœเชพ เชชเชฐ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเซ‡เช•เช…เชช เช‰เชชเช•เชฐเชฃเซ‹ เชชเชฐเชจเซ€ เช›เชฌเซ€เช“ เชœเซ‹เชˆ เชถเช•เชถเซ‡ (เช…เชจเซ‡ เชชเซเชฐเชญเชพเชตเชฟเชค) เช•เชฐเซ€ เชถเช•เชถเซ‡. เช† เช–เชฐเชพเชฌ เช›เซ‡.

เช†เชฎเชพเช‚เชจเซ€ เช˜เชฃเซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเชพ เช‰เช•เซ‡เชฒ เชฎเชพเชŸเซ‡ เช‰เช•เซ‡เชฒเซ‹ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ เช†เช‚เชคเชฐเชฟเช• เชกเซ‹เช•เชฐเชฎเชพเช‚ AUFS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชซเช•เซเชค /var/lib/docker เชซเซ‹เชฒเซเชกเชฐเชจเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎเชฎเชพเช‚ เชซเซ‡เชฐเชตเซ‹ เช…เชจเซ‡ เชคเชฎเซ‡ เช เซ€เช• เชฅเชˆ เชœเชถเซ‹. เชกเซ‹เช•เชฐเซ‡ เช‰เชชเช•เชฐเชฃ เชฎเซ‡เชชเชฐเชจเชพ เชฒเช•เซเชทเซเชฏ เชจเชพเชฎเซ‹เชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพเช• เชฌเซ‡เช เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช‰เชฎเซ‡เชฐเซเชฏเชพ เช›เซ‡ เชœเซ‡เชฅเซ€ เชœเซ‹ เชเช• เชœ เชฎเชถเซ€เชจ เชชเชฐ เชฌเชนเซเชตเชฟเชง เชกเซ‹เช•เชฐ เช•เซ‰เชฒเซเชธ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เช“ เชเช•เชฌเซ€เชœเชพ เชชเชฐ เชชเช— เชฎเซ‚เช•เชถเซ‡ เชจเชนเซ€เช‚.

เชœเซ‹ เช•เซ‡, เช†เชตเชพ เชธเซ‡เชŸเช…เชช เชฌเชฟเชฒเช•เซเชฒ เชธเชฐเชณ เชจเชฅเซ€, เชœเซ‡เชฎ เช•เซ‡ เช†เชฎเชพเช‚เชฅเซ€ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡ เชฒเซ‡เช–เซ‹ GitHub เชชเชฐ เชกเซ€เชจเซเชก เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚.

เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ: เชคเซ‡ เชตเชงเซ เช–เชฐเชพเชฌ เชฅเชพเชฏ เช›เซ‡

เชฌเชฟเชฒเซเชก เช•เซ‡เชถ เชตเชฟเชถเซ‡ เชถเซเช‚? เช† เชชเชฃ เชคเชฆเซเชฆเชจ เชฎเซเชถเซเช•เซ‡เชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชฒเซ‹เช•เซ‹ เชฎเชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชชเซ‚เช›เซ‡ เช›เซ‡ เช•เซ‡ "เชœเซ‹ เชนเซเช‚ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚, เชคเซ‹ เชนเซเช‚ เชฎเชพเชฐเชพ เช†เช‚เชคเชฐเชฟเช• เชกเซ‹เช•เชฐเชฎเชพเช‚ เชฌเชงเซเช‚ เชชเชพเช›เซเช‚ เช–เซ‡เช‚เชšเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชฎเชพเชฐเชพ เชนเซ‹เชธเซเชŸ เชชเชฐ เชนเซ‹เชธเซเชŸ เช•เชฐเซ‡เชฒเซ€ เช›เชฌเซ€เช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซเช‚"?

เช•เซ‡เชŸเชฒเชพเช• เชธเชพเชนเชธเชฟเช• เชฒเซ‹เช•เซ‹เช /var/lib/docker เชจเซ‡ เชนเซ‹เชธเซเชŸเชฎเชพเช‚เชฅเซ€ Docker-in-Docker เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช›เซ‡. เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเซ‡เช“ เชฌเชนเซเชตเชฟเชง เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ /var/lib/docker เชถเซ‡เชฐ เช•เชฐเซ‡ เช›เซ‡.

CI เช…เชฅเชตเชพ เชŸเซ‡เชธเซเชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ Docker-in-Docker เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชšเชพเชฐเซ‹
เชถเซเช‚ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ‹ เชกเซ‡เชŸเชพ เชฆเซ‚เชทเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹? เช•เชพเชฐเชฃ เช•เซ‡ เช† เชฌเชฐเชพเชฌเชฐ เชคเชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชจเซเช•เชธเชพเชจ เชชเชนเซ‹เช‚เชšเชพเชกเชถเซ‡!

เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ /var/lib/docker เชฎเชพเชŸเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เช† เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชธเซเชฅเชฟเชค เช•เซ‹เชˆเชชเชฃ เชกเซ‹เช•เชฐ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเชชเชฃ "เชŸเชš, เชชเซ‹เช• เช…เชฅเชตเชพ เชชเซเชฐเซ‹เชก" เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช เชจเชนเซ€เช‚.

เช†เชตเซเช‚ เช•เซ‡เชฎ เช›เซ‡? เช•เชพเชฐเชฃ เช•เซ‡ เช† เชกเซ‹เชŸเช•เซเชฒเชพเช‰เชก เชตเชฟเช•เชธเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชถเซ€เช–เซ‡เชฒเชพ เชธเซŒเชฅเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เชชเชพเช เชฎเชพเช‚เชฅเซ€ เชเช•เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡. เชกเซ‹เชŸเช•เซเชฒเชพเช‰เชก เช•เชจเซเชŸเซ‡เชจเชฐ เชเชจเซเชœเซ€เชจ /var/lib/dotcloud เชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ€ เชฌเชนเซเชตเชฟเชง เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชฆเซเชตเชพเชฐเชพ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เช…เชฃเซ เชซเชพเช‡เชฒ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ (เช‡เชจ-เชชเซเชฒเซ‡เชธ เชเชกเชฟเชŸเชฟเช‚เช—เชจเซ‡ เชฌเชฆเชฒเซ‡), เชเชกเชตเชพเช‡เชเชฐเซ€ เช…เชจเซ‡ เชซเชฐเชœเชฟเชฏเชพเชค เชคเชพเชณเชพเช“ เชธเชพเชฅเซ‡ เชชเซ‡เชชเชฐเชฟเช‚เช— เช•เซ‹เชก เช…เชจเซ‡ SQLite เช…เชจเซ‡ BDB เชœเซ‡เชตเซ€ เชธเซเชฐเช•เซเชทเชฟเชค เชธเชฟเชธเซเชŸเชฎเซ‹ เชธเชพเชฅเซ‡เชจเชพ เช…เชจเซเชฏ เชชเซเชฐเชฏเซ‹เช—เซ‹ เชœเซ‡เชตเซ€ เช˜เชกเชพเชฏเซ‡เชฒ เชฏเซเช•เซเชคเชฟเช“ เชนเช‚เชฎเซ‡เชถเชพ เช•เชพเชฎ เช•เชฐเชคเซ€ เชจ เชนเชคเซ€. เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชเชจเซเชœเชฟเชจเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชกเชฟเชเชพเช‡เชจ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเชคเชพ, เชœเซ‡ เช†เช–เชฐเซ‡ เชกเซ‹เช•เชฐ เชฌเชจเซ€ เช—เชฏเซเช‚ เชนเชคเซเช‚, เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฎ เช•เชจเซเชŸเซ‡เชจเชฐ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เชเช• เชœ เชกเชฟเชฎเชจ เชนเซ‡เช เชณ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพเชจเซ‹ เชเช• เชฎเซ‹เชŸเซ‹ เชจเชฟเชฐเซเชฃเชฏ เชนเชคเซ‹.

เชฎเชจเซ‡ เช–เซ‹เชŸเซ‹ เชจ เชธเชฎเชœเซ‹: เชฌเชนเซเชตเชฟเชง เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช…เชจเซ‡ เช†เชงเซเชจเชฟเช• เชธเชฎเชพเช‚เชคเชฐ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชธเชฎเชพเชตเชฟเชทเซเชŸ เช•เช‚เชˆเช• เชธเชพเชฐเซเช‚, เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช…เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชถเช•เซเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เช…เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชฎเชพเชคเซเชฐ เชชเซเชฒเซ‡เชฏเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ‹เชก เชฒเช–เชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพเชจเซเช‚ เชธเชฐเชณ เช…เชจเซ‡ เชธเชฐเชณ เช›เซ‡.

เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ /var/lib/docker เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชนเซเชตเชฟเชง เชกเซ‹เช•เชฐ เชฆเชพเช–เชฒเชพเช“ เชตเชšเซเชšเซ‡ เชถเซ‡เชฐ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชจเซ‡ เชธเชฎเชธเซเชฏเชพเช“ เชฅเชถเซ‡. เช…เชฒเชฌเชคเซเชค, เช† เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเชจเชพ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชคเชฌเช•เซเช•เชพเชฎเชพเช‚. "เชธเชพเช‚เชญเชณเซ‹, เชฎเชพ, เชนเซเช‚ เชกเซ‹เช•เชฐ เชคเชฐเซ€เช•เซ‡ เช‰เชฌเซเชจเซเชŸเซ เชšเชฒเชพเชตเซ€ เชถเช•เซเช‚ เช›เซเช‚!" เชชเชฐเช‚เชคเซ เช•เช‚เชˆเช• เชตเชงเซ เชœเชŸเชฟเชฒ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹, เชœเซ‡เชฎ เช•เซ‡ เชฌเซ‡ เช…เชฒเช—-เช…เชฒเช— เช‰เชฆเชพเชนเชฐเชฃเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชœ เช›เชฌเซ€ เช–เซ‡เช‚เชšเชตเซ€, เช…เชจเซ‡ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹ เช•เซ‡ เชตเชฟเชถเซเชต เชฌเชณเซ€ เชœเชถเซ‡.

เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เชคเชฎเชพเชฐเซ€ CI เชธเชฟเชธเซเชŸเชฎ เชฌเชฟเชฒเซเชก เช…เชจเซ‡ เชฐเชฟเชฌเชฟเชฒเซเชก เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชฆเชฐ เชตเช–เชคเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเชพ เช•เซ‡เชถเชฎเชพเช‚ เชจเซเชฏเซเช• เชฎเซ‚เช•เชตเชพเชจเซเช‚ เชœเซ‹เช–เชฎ เชฒเซ‹ เช›เซ‹. เช† เชฌเชฟเชฒเช•เซเชฒ เชธเชฐเชธ เชจเชฅเซ€!

เชฎเซเชถเซเช•เซ‡เชฒเซ€เชจเชฟเชตเชพเชฐเชฃ

เชšเชพเชฒเซ‹ เชเช• เชชเช—เชฒเซเช‚ เชชเชพเช›เชณ เชฒเชˆเช. เชถเซเช‚ เชคเชฎเชจเซ‡ เช–เชฐเซ‡เช–เชฐ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชฅเชตเชพ เชถเซเช‚ เชคเชฎเซ‡ เชซเช•เซเชค เชกเซ‹เช•เชฐ เชšเชฒเชพเชตเชตเชพ เช…เชจเซ‡ เชคเชฎเชพเชฐเซ€ CI เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชฌเชจเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹ เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡ CI เชธเชฟเชธเซเชŸเชฎ เชชเซ‹เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชนเซ‹เชฏ?

เชนเซเช‚ เชถเชฐเชค เชฒเช—เชพเชตเซเช‚ เช›เซเช‚ เช•เซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชฒเซ‹เช•เซ‹ เชชเช›เซ€เชจเซ‹ เชตเชฟเช•เชฒเซเชช เช‡เชšเซเช›เซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ เชคเซ‡เช“ เช‡เชšเซเช›เซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชœเซ‡เชตเซ€ CI เชธเชฟเชธเซเชŸเชฎ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเซ‹เชฏ. เช…เชจเซ‡ เช† เช•เชฐเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ เช เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเชพ CI เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชกเซ‹เช•เชฐ เชธเซ‹เช•เซ‡เชŸ เชฆเชพเช–เชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ -v เชซเซเชฒเซ‡เช— เชธเชพเชฅเซ‡ เชธเชพเช‚เช•เชณเซ‹.

เชธเชฐเชณ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซเช‚ CI เช•เชจเซเชŸเซ‡เชจเชฐ (เชœเซ‡เชจเช•เชฟเชจเซเชธ เช…เชฅเชตเชพ เช…เชจเซเชฏ) เชšเชฒเชพเชตเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เชธเชพเชฅเซ‡ เช•เช‚เชˆเช• เชนเซ‡เช• เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชคเซ‡เชจเซ‡ เชฒเชพเช‡เชจเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ‹:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

เช† เช•เชจเซเชŸเซ‡เชจเชฐ เชนเชตเซ‡ เชกเซ‹เช•เชฐ เชธเซ‹เช•เซ‡เชŸเชจเซ€ เชเช•เซเชธเซ‡เชธ เชงเชฐเชพเชตเชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชถเซ‡. เชคเซ‡ เชธเชฟเชตเชพเชฏ "เชšเชพเชˆเชฒเซเชก" เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชคเซ‡ "เชญเชพเชˆ" เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชถเซ‡.

เชธเชคเซเชคเชพเชตเชพเชฐ เชกเซ‹เช•เชฐ เช‡เชฎเซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹ (เชœเซ‡เชฎเชพเช‚ เชกเซ‹เช•เชฐ เชฌเชพเชˆเชจเชฐเซ€ เช›เซ‡):

docker run -v /var/run/docker.sock:/var/run/docker.sock 
           -ti docker

เชคเซ‡ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐเชจเซ€ เชœเซ‡เชฎ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชกเซ‹เช•เชฐ-เช‡เชจ-เชกเซ‹เช•เชฐ เชจเชฅเซ€: เชœเซเชฏเชพเชฐเซ‡ เช† เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชงเชพเชฐเชพเชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เช‰เชšเซเชš-เชธเซเชคเชฐเชจเชพ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชคเชฎเซ‡ เชจเซ‡เชธเซเชŸเชฟเช‚เช—เชจเซ€ เช†เชกเช…เชธเชฐเซ‹เชจเซ‹ เช…เชจเซเชญเชต เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช•เซ‡เชถ เชฌเชนเซเชตเชฟเชง เช•เซ‰เชฒเซเชธเชฎเชพเช‚ เชถเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชจเซ‹เช‚เชง: เช† เชฒเซ‡เช–เชจเชพ เช…เช—เชพเช‰เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เช เชกเซ‹เช•เชฐ เชฌเชพเชˆเชจเชฐเซ€เชจเซ‡ เชนเซ‹เชธเซเชŸเชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช• เช•เชฐเชตเชพเชจเซ€ เชธเชฒเชพเชน เช†เชชเซ€ เชนเชคเซ€. เช† เชนเชตเซ‡ เช…เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชฌเชจเซ€ เช—เชฏเซเช‚ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชกเซ‹เช•เชฐ เชเชจเซเชœเชฟเชจ เชนเชตเซ‡ เชธเซเชฅเชฟเชฐ เช…เชฅเชตเชพ เชจเชœเซ€เช•-เชธเซเชฅเชฟเชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡เชคเซเช‚ เชจเชฅเซ€.

เชคเซ‡เชฅเซ€, เชœเซ‹ เชคเชฎเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชธเซ€เช†เชˆเชฎเชพเช‚เชฅเซ€ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ 2 เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡:
เชฎเซ‚เชณเชญเซ‚เชค เช‡เชฎเซ‡เชœ เชชเซ‡เช•เซ‡เชœเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‹เช•เชฐ CLI เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡ เชœเซ‹ เชคเชฎเชพเชฐเซ€ เช›เชฌเซ€ เชกเซ‡เชฌเชฟเชฏเชจ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡, เชคเซ‹ .deb เชชเซ‡เช•เซ‡เชœเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹), Docker API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡.

เช•เซ‡เชŸเชฒเซ€เช• เชœเชพเชนเซ‡เชฐเชพเชคเซ‹ ๐Ÿ™‚

เช…เชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชฐเชนเซ‡เชตเชพ เชฌเชฆเชฒ เช†เชญเชพเชฐ. เชถเซเช‚ เชคเชฎเชจเซ‡ เช…เชฎเชพเชฐเชพ เชฒเซ‡เช–เซ‹ เช—เชฎเซ‡ เช›เซ‡? เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เชธเชพเชฎเช—เซเชฐเซ€ เชœเซ‹เชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹? เช“เชฐเซเชกเชฐ เช†เชชเซ€เชจเซ‡ เช…เชฅเชตเชพ เชฎเชฟเชคเซเชฐเซ‹เชจเซ‡ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ€เชจเซ‡ เช…เชฎเชจเซ‡ เชŸเซ‡เช•เซ‹ เช†เชชเซ‹, $4.99 เชฅเซ€ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เช•เซเชฒเชพเช‰เชก VPS, เชเชจเซเชŸเซเชฐเซ€-เชฒเซ‡เชตเชฒ เชธเชฐเซเชตเชฐเซเชธเชจเซเช‚ เชเช• เช…เชจเชจเซเชฏ เชเชจเชพเชฒเซ‹เช—, เชœเซ‡เชจเซ€ เชถเซ‹เชง เช…เชฎเชพเชฐเชพ เชฆเซเชตเชพเชฐเชพ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡: VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps เชตเชฟเชถเซ‡เชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเชคเซเชฏ $19 เชฅเซ€ เช…เชฅเชตเชพ เชธเชฐเซเชตเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเซ‡เชฐ เช•เชฐเชตเซเช‚? (RAID1 เช…เชจเซ‡ RAID10 เชธเชพเชฅเซ‡ เช‰เชชเชฒเชฌเซเชง, 24 เช•เซ‹เชฐเซ‹ เชธเซเชงเซ€ เช…เชจเซ‡ 40GB DDR4 เชธเซเชงเซ€).

เชเชฎเซเชธเซเชŸเชฐเชกเซ‡เชฎเชฎเชพเช‚ เช‡เช•เซเชตเชฟเชจเชฟเช•เซเชธ เชŸเชพเชฏเชฐ IV เชกเซ‡เชŸเชพ เชธเซ‡เชจเซเชŸเชฐเชฎเชพเช‚ เชกเซ‡เชฒ R730xd 2 เช—เชฃเซเช‚ เชธเชธเซเชคเซเช‚? เชฎเชพเชคเซเชฐ เช…เชนเซ€เช‚ 2 x เช‡เชจเซเชŸเซ‡เชฒ เชŸเซ‡เชŸเซเชฐเชพเชกเซ‡เช•เชพ-เช•เซ‹เชฐ Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 เชŸเซ€เชตเซ€ $199 เชฅเซ€ เชจเซ‡เชงเชฐเชฒเซ‡เชจเซเชกเชฎเชพเช‚! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 เชฅเซ€! เชตเชฟเชถเซ‡ เชตเชพเช‚เชšเซ‹ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚. เชกเซ‡เชฒ R730xd E5-2650 v4 เชธเชฐเซเชตเชฐเซเชธเชจเชพ เช‰เชชเชฏเซ‹เช— เชธเชพเชฅเซ‡เชจเซ‹ เชตเชฐเซเช— เชเช• เชชเซ‡เชจเซ€ เชฎเชพเชŸเซ‡ 9000 เชฏเซเชฐเซ‹เชจเชพ เชฎเซ‚เชฒเซเชฏเชจเชพ เช›เซ‡?

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹