VM เบซเบผเบท Docker?

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Docker เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™ VM? เบ—เปˆเบฒเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡ เบเบณ เบ™เบปเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเบเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เปเบฅเบฐเบฎเบฒเบ”เปเบง virtual, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ„เบงเบ™เบˆเบฐเบ•เบปเบเบขเบนเปˆเปƒเบ™ VM. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบฐเบšเบปเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ Docker.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ Docker containers เปเบฅเบฐ VMs เปเบกเปˆเบ™เบซเบเบฑเบ‡?

เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเป€เปเบทเบญเบ™ (VM) เป€เบ›เบฑเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบต virtual เบ—เบตเปˆเบกเบตเบญเบธเบ›เบฐเบเบญเบ™ virtual เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบฎเบฒเบ”เบ”เบดเบ” virtual, เป€เบŠเบดเปˆเบ‡เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OS เป€เบญเบเบฐเบฅเบฒเบ”เปƒเบซเบกเปˆเบžเป‰เบญเบกเบเบฑเบšเป„เบ”เป€เบงเบตเบญเบธเบ›เบฐเบเบญเบ™ virtual, เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เป†. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบต virtual เบซเบผเบฒเบเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบซเบ™เบถเปˆเบ‡.
VM เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบ”เบดเบชเบเปŒเบ”เป‰เบงเบเบงเบดเบ—เบตเบ•เปˆเบฒเบ‡เป†:

  • เบžเบทเป‰เบ™เบ—เบตเปˆเบฎเบฒเบ”เบ”เบดเบ”เบ„เบปเบ‡เบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฎเบฒเบ”เบ”เบดเบ” virtual เป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™เปเบฅเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™ fragmentation เป„เบŸเบฅเปŒ;
  • เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ. เป€เบกเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเบกเบฑเบ™เบˆเบปเบ™เบเปˆเบงเบฒเบกเบฑเบ™เบฎเบญเบ”เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบˆเบฑเบ”เบชเบฑเบ™เปƒเบซเป‰เบเบฑเบšเบกเบฑเบ™.

เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบซเบผเบฒเบเบ‚เบถเป‰เบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบผเบฒเบเบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ–เบดเบ‡, เปเบฅเบฐเบเบฑเบ‡เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบ.

Docker เป€เบ›เบฑเบ™เบŠเบญเบšเปเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบšเบฑเบ™เบˆเบธ. เป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual เบกเบตเบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เปเบ•เปˆเป€เบฎเบฑเบ”เบงเบฝเบเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปƒเบŠเป‰เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เป‰เบญเบ, เป€เบžเบฒเบฐเบงเปˆเบฒ เปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบฅเบฐเบšเบปเบšเป‚เบฎเบ”เบซเบผเบฒเบเบเบงเปˆเบฒ VM, เป€เบžเบฒเบฐเบงเปˆเบฒ เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš VM, เบชเบฐเบซเบ™เบญเบ‡ virtualization เปƒเบ™เบฅเบฐเบ”เบฑเบš OS, เบšเปเปˆเปเบกเปˆเบ™เบฎเบฒเบ”เปเบง. เบงเบดเบ—เบตเบ™เบตเป‰เปƒเบซเป‰เบ„เบงเบฒเบกเบˆเบณเปœเป‰เบญเบเบฅเบปเบ‡, เบ™เบณเปƒเบŠเป‰เป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™, เปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบฐเปœเบฒเบ”เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™.

เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบชเบฐเบซเบ™เบญเบ‡เบเบปเบ™เป„เบเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบซเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบš. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ containers เปเบšเปˆเบ‡เบ›เบฑเบ™เบซเบผเบฑเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš, เบšเปˆเบญเบ™เบ—เบตเปˆเปเบ•เปˆเบฅเบฐ containers เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡ OS เบ•เบปเป‰เบ™เบ•เป, เป€เบŠเบดเปˆเบ‡เบกเบตเบŠเบธเบ”เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡ (เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆ virtual เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡). เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆเบชเบฐเป€เปเบทเบญเบ™เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ–เบฑเบ‡เป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบˆเบณเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰.
OS เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบชเปเบฒเบฅเบฑเบš Docker เปเบกเปˆเบ™ Linux (Docker เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ Windows เปเบฅเบฐ MacOS), เบกเบฑเบ™เปƒเบŠเป‰เบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบกเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เปเบšเปˆเบ‡เปเบเปˆเบ™เป„เบ”เป‰. เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง Docker containers เปƒเบ™ Windows เบˆเบฐเบกเบตเบ‚เบถเป‰เบ™เบžเบฒเบเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual Linux. containers เปเบšเปˆเบ‡เบ›เบฑเบ™ OS เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป‚เบฎเบ”เปเบฅเบฐ OS เบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™ Linux.

เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต - เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”?

Container เป€เบ›เบฑเบ™ abstraction เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบชเบฐเป€เบซเบกเบตเบˆเบฒเบเบฎเบนเบšเบžเบฒเบš, เป€เบžเบตเปˆเบกเบŠเบฑเป‰เบ™เป€เบ—เบดเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เป„เบ”เป‰เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบšเบฑเบ™เบˆเบธเบกเบตเบŠเบฑเป‰เบ™เบ‚เบฝเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบŠเบฑเป‰เบ™เบ™เบฑเป‰เบ™, เบซเบผเบฒเบเบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฎเบนเบšเบžเบฒเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ”เบฝเบงเบเบฑเบ™.

เปเบ•เปˆเบฅเบฐเบ–เบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเปˆเบฒเบ™เป„เบŸเบฅเปŒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ docker-compose เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ•เบปเป‰เบ™เบ•เป, docker-compose.yml. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ•เปˆเบฒเบ‡เป†เป€เบŠเบฑเปˆเบ™เบŠเบทเปˆเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, เบžเบญเบ”, เบ•เบปเบงเบฅเบฐเบšเบธ, เบ‚เบตเบ”เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบšเบฑเบ™เบˆเบธเบญเบทเปˆเบ™เป†. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฅเบฐเบšเบธเบŠเบทเปˆ container เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, Docker เบˆเบฐเบชเป‰เบฒเบ‡ container เปƒเบซเบกเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡, เบเปเบฒเบ™เบปเบ”เบŠเบทเปˆเปƒเบซเป‰เบเบฑเบšเบกเบฑเบ™เปเบšเบšเบชเบธเปˆเบก.

เป€เบกเบทเปˆเบญเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบฎเบนเบšเบžเบฒเบš, Docker เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบญเปˆเบฒเบ™ / เบ‚เบฝเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบ•เปˆเบฒเบ‡เป†เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ Docker container เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™.

เป€เบกเบทเปˆเบญ Docker เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเบฑเบ™เบˆเบธเบ—เปเบฒเบญเบดเบ”, เบŠเบฑเป‰เบ™เบเบฒเบ™เบญเปˆเบฒเบ™ / เบ‚เบฝเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบกเปˆเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบŠเบฑเป‰เบ™เบ™เบฑเป‰เบ™; เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ, เป„เบŸเบฅเปŒเบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบ„เบฑเบ”เบฅเบญเบเบˆเบฒเบเบŠเบฑเป‰เบ™เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เป„เบ›เบซเบฒเบŠเบฑเป‰เบ™เบญเปˆเบฒเบ™เบ‚เบฝเบ™.
เป€เบงเบตเบŠเบฑเบ™เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ, เปเบ•เปˆเบ•เบญเบ™เบ™เบตเป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบžเบฒเบเปƒเบ•เป‰เบชเบณเป€เบ™เบปเบฒ. เบ›เบฐเบฅเบดเบกเบฒเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบˆเบธ. เบ›เบฐเบฅเบดเบกเบฒเบ™เปเบกเปˆเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบšเบฑเบ™เบˆเบธเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™.

เบฎเบนเบšเบžเบฒเบšเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปเบ™เบงเปƒเบ”?

เบฎเบนเบšเบžเบฒเบš - เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ–เบฑเบ‡. เบฎเบนเบšเบžเบฒเบšเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบˆเบฒเบ Dockerfile เบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเป€เบ›เบฑเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ (เบŠเบฑเป‰เบ™) เบŠเบฑเป‰เบ™เป€เบ—เบดเบ‡เบ‚เบญเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เปเบฅเบฐเบˆเบฑเบ”เบเบธเปˆเบกเบฎเปˆเบงเบกเบเบฑเบ™, เบกเบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™; เบˆเปเบฒเบ™เบงเบ™เบŠเบฑเป‰เบ™เบชเบนเบ‡เบชเบธเบ”เปเบกเปˆเบ™ 127.

เบซเบปเบงเปƒเบˆเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™เบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ FROM - เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Dockerfile. เปเบ•เปˆเบฅเบฐเบŠเบฑเป‰เบ™เป€เบ›เบฑเบ™เบŠเบฑเป‰เบ™เบ—เบตเปˆเบญเปˆเบฒเบ™เป„เบ”เป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ เปเบฅเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡เป‚เบ”เบเบ„เบณเบชเบฑเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเปเบเป‰เป„เบ‚เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ, เบ‚เบฝเบ™เปƒเบ™ Dockerfile.
เป€เบžเบทเปˆเบญเบฅเบงเบกเบŠเบฑเป‰เบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบ”เบฝเบง, Docker เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ Union เบซเบผเบฒเบเบŠเบฑเป‰เบ™เบ‚เบฑเป‰เบ™เบชเบนเบ‡ (AuFS เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡ UnionFS), เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป„เบŸเบฅเปŒเปเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ•เปˆเบฒเบ‡เป†เบˆเบฒเบเบŠเบฑเป‰เบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเบฒเบกเบฒเบ”เบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™เบขเปˆเบฒเบ‡เป‚เบ›เปˆเบ‡เปƒเบช, เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡.

เบŠเบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เบกเบตเป€เบกเบ•เบฒเป€เบ”เบ•เบฒเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเปˆเบฝเบงเบเบฑเบšเปเบ•เปˆเบฅเบฐเบŠเบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™ เปเบฅเบฐเป€เบงเบฅเบฒเบชเป‰เบฒเบ‡. เปเบ•เปˆเบฅเบฐเบŠเบฑเป‰เบ™เบกเบตเบฅเบดเป‰เบ‡เป„เบ›เบซเบฒเบŠเบฑเป‰เบ™เบ•เปเปˆเป„เบ›, เบ–เป‰เบฒเบŠเบฑเป‰เบ™เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบฑเป‰เบ™เป€เบ—เบดเบ‡เบชเบธเบ”เปƒเบ™เบฎเบนเบš.

Dockerfile เบญเบฒเบ”เบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™:

  • FROM - เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš;
  • MAINTAINER - เบŠเบทเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš;
  • RUN - เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบš;
  • ADD - เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบเบฑเบšเบฎเบนเบšเบžเบฒเบšเปƒเบซเบกเปˆ, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเป„เบŸเบฅเปŒ URL, Docker เบˆเบฐเบ”เบฒเบงเป‚เบซเบฅเบ”เบกเบฑเบ™เปƒเบชเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰;
  • ENV - เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก;
  • CMD - เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบžเบฒเบŠเบฐเบ™เบฐเปƒเบซเบกเปˆเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบฎเบนเบšเบžเบฒเบš;
  • ENTRYPOINT - เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบกเบทเปˆเบญเบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
  • WORKDIR เปเบกเปˆเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ CMD.
  • USER - เบเปเบฒเบ™เบปเบ” UID เบชเปเบฒเบฅเบฑเบš container เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบˆเบฒเบเบฎเบนเบšเบžเบฒเบš.
  • เบ›เบฐเบฅเบดเบกเบฒเบ™ - เบ•เบดเบ”เป„เบ”เป€เบฃเบฑเบเบ—เปเบฃเบตเปเบกเปˆเบ‚เปˆเบฒเบเปƒเบชเปˆเบ–เบฑเบ‡.
  • EXPOSE เปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบžเบญเบ”เบ—เบตเปˆเบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡.

UnionFS เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”?

UnionFS โ€” เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ stack (FS) เบชเปเบฒเบฅเบฑเบš Linux เปเบฅเบฐ FreeBSD. FS เบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ™เป„เบเบเบฒเบ™เบชเปเบฒเป€เบ™เบปเบฒเป€เบ—เบดเบ‡เบ‚เบฝเบ™ (Copy-On-Write, COW). เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ UnionFS เปเบกเปˆเบ™เบŠเบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเบŠเบฑเป‰เบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ•เบฑเบกเบ—เบตเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบกเบตเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบˆเบฒเบเบฎเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. UnionFS เบชเป‰เบฒเบ‡ union mount เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบญเบทเปˆเบ™เป†เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบงเบกเป„เบŸเบฅเปŒเปเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบขเปˆเบฒเบ‡เป‚เบ›เปˆเบ‡เปƒเบชเบˆเบฒเบเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบชเบฒเบ‚เบฒ) เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ”เบฝเบง, เป‚เบ›เปˆเบ‡เปƒเบชเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰.

เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡เบฎเปˆเบงเบกเบเบฑเบ™เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบงเบกเบ”เบฝเบง (เปƒเบ™ namespace เบ”เบฝเบงเบเบฑเบ™) เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

UnionFS เบฅเบงเบกเบŠเบฑเป‰เบ™เบ•เปˆเบฒเบ‡เป†เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบซเบผเบฑเบเบเบฒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบŠเบฑเป‰เบ™เบซเบ™เบถเปˆเบ‡เบเบฒเบเป€เบ›เบฑเบ™เบŠเบฑเป‰เบ™เป€เบ—เบดเบ‡, เบŠเบฑเป‰เบ™เบ—เบตเบชเบญเบ‡เปเบฅเบฐเบ•เปเปˆเบกเบฒเบเบฒเบเป€เบ›เบฑเบ™เบŠเบฑเป‰เบ™เบ•เปˆเปเบฒ;
  • เบงเบฑเบ”เบ–เบธเบŠเบฑเป‰เบ™เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰ "เบˆเบฒเบเป€เบ—เบดเบ‡เบฅเบปเบ‡เบฅเบธเปˆเบก", i.e. เบ–เป‰เบฒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเบขเบนเปˆเปƒเบ™เบŠเบฑเป‰เบ™ "เป€เบ—เบดเบ‡", เบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบŠเบฑเป‰เบ™ "เบ•เปˆเปเบฒ"; เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบงเบฑเบ”เบ–เบธเบŠเบฑเป‰เบ™ "เบฅเบธเปˆเบก" เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™; เบ–เป‰เบฒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเปเบกเปˆเบ™เบšเปเปˆเบกเบตเบซเบผเบทเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” "เบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเบซเบผเบทเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง" เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™;
  • เบŠเบฑเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบกเปˆเบ™ "เป€เบ—เบดเบ‡", เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เบธเบเป†เบเบฒเบ™เบเบฐ เบ—เบณ เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบŠเบฑเป‰เบ™เป€เบ—เบดเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบฅเบธเปˆเบก.

Docker เปเบกเปˆเบ™เป€เบ—เบฑเบเป‚เบ™เป‚เบฅเบเบตเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ containers เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบกเบฑเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™เบ‚เบปเบ‡เป€เบ‚เบ”เบ™เบตเป‰, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™ cgroups เปเบฅเบฐ namespaces เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบ Linux kernel.

Docker เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป‚เบ”เบเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™ OS kernel เบฅเบฐเบซเบงเปˆเบฒเบ‡เบšเบฑเบ™เบˆเบธเบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเปˆเบ™เป€เบ›เบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ OS เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™