Docker គឺជា open source platform សម្រាប់ build, deploy និងគ្រប់គ្រង containerized application។
វាអាចជួយឱ្យ developer ផ្តោតទៅលើការសរសេរកូដ និង អភិវឌ្ឍ ជាងការមានកង្វល់ទៅលើ system ឬ OS ណាមួយដែល application នោះនឹងដំណើរការទៅលើ។
Real World Analogy
Virtual Machines
ក្នុងបរិបទ របស់ Vms យើងត្រូវមានបណ្ណបើកបរគ្រប់សណ្ឋាន(ច្រើន)នៃយានយន្តទើបអាចមានសិទ្ធិបើកបរបាន។
Containers
ក្នុងបរិបទ របស់ Containers វិញយើងមានតែបណ្ណបើកបរមួយគឺអាចមានសិទ្ធិបើកបរបានគ្រប់សណ្ឋាននៃយានយន្ត។
ដូច្នេះ បើយើងធ្វើការប្រៀបនៅរូបភាពមុននេះ ទៅលើឧទាហរណ៍ នៃការបើកបរ នោះយើងនឹងឃើញថា រវាងបរិបទនៅក្នុង Containers មានភាពងាយស្រួល និង លឿនរហ័សជាង Virtual Machines។
តើវានឹងខុសគ្នាបែបណា នៅក្នុង បរិបទ Technology វិញ?
Architecture
Virtual Machine (VM) នីមួយៗមាន OS រៀងៗខ្លួន ហើយវាផ្ទុកនូវbinaries, libraries និង applications ដែលជា service របស់វា។ VM អាចមានទំហំទៅដល់ gigabytes។
Containers គឺវាប្រើប្រាស់resource តិចជាងដោយសារតែ containers ទាំងនោះប្រើប្រាស់នូវ OS រួមហើយ កាត់បន្ថយពេលវេលាក្នុងការដោះស្រាយបញ្ហា។ វាអាចមានទំហំត្រឹម megabtyes និងប្រើប្រាស់ពេលខ្លីដើម្បី start។
សរុបខ្លីៗមក Containers និង Virtual Machines មានភាពខុសគ្នាច្រើន តែអ្វីដែលសំខាន់គឺស្ថិតនៅត្រង់ containers អាចផ្តល់លទ្ធភាពឱ្យធ្វើការ virtualization OS ដែលការងារទាំងនោះអាចធ្វើបានដោយចំណាយនៅលើតែ OS មួយប៉ុណ្ណោះ។
អត្ថប្រយោជន៍សំខាន់ៗដែល Docker ផ្តល់ឱ្យ Developers
- Docker for Everyone: វាមានភាពងាយស្រួលក្នុងការចាប់ផ្តើម សូម្បីតែ non-tech ក៏អាចចាប់ផ្តើមបានដែរ ជាមួយនឹង commands ខ្លីៗស្រួលយល់។
- Environment Isolation: ក្នុងការ configure environments សម្រាប់ verison software ផ្សេងៗគ្នានៅលើ machine តែមួយពិតជាពិបាកណាស់។ តែពេលនេះ ជាមួយនឹង docker containers គឺ environments ទាំងនោះនឹងនៅដាច់ៗពីគ្នា ធ្វើឱ្យមានភាពងាយស្រួលមិន conflict គ្នាទៅវិញទៅមកទេ។
- OS Independent Apps: ជាមួយនឹង docker container យើងអាចដាក់ applications របស់យើងឱ្យប្រើប្រាស់បាននៅលើ OS ដូចជា Linux, macOS, Windows or ARM-based platforms។
- Rapid Development & Development: Docker ជួយកាត់បន្ថយពេលវេលាឱ្យយើងបានច្រើនបើសិនជាយើមានការងារដែលធ្វើជា repetitive tasks។ Docker គឺត្រូវបានគេប្រើប្រាស់ច្រើនជាមួយនឹង Continuous Integrations និង Continuous Delivery (CI/CD) workflows ផងដែរ។
- Scalability & Flexibility Made Easier: Containers ដែលយើងធ្វើការ configure រួចហើយគឺត្រូវបានវេចខ្ចប់នៅក្នុងនោះ ហើយវានឹងផ្តល់ភាពងាយស្រួលក្នុងការ scale និងមានភាព flexible ផងដែរ។ បើសិនជាមានការផ្លាស់ប្តូរ configurations យើងគ្រាន់តែដូរនៅក្នុង docker images តែប៉ុណ្ណោះ។
- No More Security Issues: Docker containers មានសុវត្ថិភាពជាង app ធម្មតា ដោយសារតែ containers មិនអាចធ្វើការ access ទិន្នន័យ នៃ containers ផ្សេងបានទេជា defaults លុះត្រាតែមានការផ្តល់សិទ្ធិ។ ហើយលើសពីនេះ យើងក៏អាចធ្វើការ បន្ថែមនូវ security layers ពីលើនេះបានផងដែរ។
- Ship Anytime, Anywhere: ការ Migrate និង Shipment App មិនមែន ជាភាពងាយស្រួលដែលត្រូវការតែ human resource នោះទេគឺថែមទាំងតម្រូវឱ្យមានវិជ្ជាជីវ:ខ្ពស់ ក្នុងការ configure និង setup ផងដែរ។ Docker គឺជាអ្នកសម្រាលបន្ទុកទាំងនេះ ដោយយើងអាចធ្វើការ ship app គ្រប់ទីកន្លែងនិងគ្រប់ពេលវេលា។
អ្វីដែលយើងត្រូវការគឺ តំឡើង docker នៅលើ target machine និង run commands ដើម្បីឱ្យ project run នៅក្នុងរយ:ពេលដ៏ខ្លី។
- Dependency Management Made Easier: បើយើងមិនប្រើប្រាស់ docker យើងត្រូវ តំឡើងរាល់ libraries, configs និង services ដូចជា database ឬ cache នៅពេលយើងចង់តំឡើង application លើ server ផ្សេងឬ ទីតាំងផ្សេង។ ជាមួយនឹង Docker ដោយសារតែ វាមាន dependencies management
នោះគ្រប់ app ឬ project អាច isolate dependencies ទាំងនោះទៅតាមរាល់ container និងអាចដំណើរការ app ដដែលនោះបានច្រើននៅលើ machine តែមួយ។