Docker гэж юу вэ? Түүний хэрэглээ
Өнөөдөр дэлхий дээр docker , container зэрэг үгсийн талаар сонсоогүй хөгжүүлэгч үгүй биз ээ.
Арга ч үгүй биз, өнөөдөр энэхүү технологийн ачаар маш олон гайхалтай боломжууд шинэ үүд хаалга нээгдэж байна.
Жишээлбэл ганц docker л суулгасан байхад та ямар ч програмыг заавал өөрийнхөө компьютер дээр суулгалгүйгээр ажиллуулах боломжтой болсон. Мөн Google-с гаргасан Open Source болох Kubernetes-ийг ашиглан маш олон виртуал серверүүдийг ямар ч зовлонгүйгээр яг л нэг аварга том сервер мэт ажиллуулах болсон нь тун гайхалтай. Үүний ачаар систем администраторууд болон хөгжүүлэгч нарын нуруун дээрээс маш том ачааг хөнгөлж байгаа. (Kubernetes-ийн талаар дараа нь өөр бичлэгт оруулах болно)
2013 онд анхны хувилбараа гаргаснаас хойш өдгөө нийт хөгжүүлэгчдийн 80-аас дээш хувь нь өдөр тутамдаа docker-ийг ашигладаг гэсэн судалгаа бий. Гэхдээ docker анхны container технологи уу? гэвэл үгүй юм. Түүхийн мөрөөр орвол анх тэртээ 1979 онд Unix v7 үйлдлийн системд анх нэвтэрсэн chroot програм маань уг технологийн үндсийг тавьсан юм байна. Харин хожим 2008 онд хөгжүүлэгдсэн LXC container технологи нь өнөөгийн container технологиудын үндсийг тавьсан юм.
Docker-оос гадна rkt болон сүүлийн үед хүчээ авч буй cri-o гэх мэт технологиуд байдаг.
Docker ашигласны давуу талууд:
- Ямар ч програмыг заавал өөрийн компьютер суулгаж ашиглах шаардлагагүй. Хэрэгтэй үедээ ашиглачихаад буцаагаад image-ээ устгахад л тухайн програм ул мөргүй алга болно.
- Миний компьютер дээр зүгээр л байна шдээ?? Энэ хөгжүүлэгч нарын дунд тулгардаг хамгийн түгээмэл асуудал байх. Тэгвэл бүгд яг адилхан image хэрэглэснээр энэхүү асуудал шийдэгдэнэ.
- Дахин хэрэглэх боломжтой. dockerfile л байхад тухайн image-ийг эхнээс нь хэдэн ч удаа дахин build хийж болно.
- Maintenance хийхэд амар болно. Docker image-үүд ихэвчлэн маш жижиг хэмжээтэй байдаг учир түүнийгээ дагаад үүсэх асуудлууд ч ойлгомжтой энгийн байдаг.
- Deployment хийхэд илүү түргэн амар болно. Шинээр сервер үүсгээд үйлдлийн систем суулгаад хэрэгтэй package-уудаа суулгаад бүх тохиргоог нь хийж цаг алдахгүй.
- Програм хоорондын салангид байдал. Танд 2 ширхэг 80 порт дээр ажилладаг програм байлаа гэж бодъё. Гэхдээ тэр 2 програмыг тус тусад нь ажиллуулснаар хоорондоо порт давхцах ямар ч асуудал үүсэхгүй.
Гэх зэрэг маш том давуу талуудыг бидний өдөр тутмын ажилд олгож байна.
Docker vs Virtual Machine
Дараах зургаар docker болон virtual machine-ий гол ялгааг товч тайлбарлавал:
- Virtual Machine нь өөр дээрээ бүтэн үйлдлийн систем болон package суулгах шаардлага гарна.
- Host буюу virtual machine-ийг ажиллуулж буй компьютерийнхээ resource буюу хүчин чадлыг хуваах замаар ажиллана.
- Hypervisor буюу virtual machine үүсгэгч програм хангамжийн дагуу ажиллана.
- Docker нь тухайн компьютерийг ажиллуулж буй үйлдлийн системийг kernel-ийг хуваах замаар ажиллах тул асч унтрахдаа энгийн програм ажиллуулж буй мэт хурдан байна. Гэхдээ docker-ийг virtual machine-ий зорилгоор ашиглах хэрэггүй гэж зөвлөх байна.
- Docker нь Virtual Machine-ий орон зайг эзлэх үү? гэвэл үгүй юм. Учир нь physical буюу dedicated сервер дээр virtual machine-ууд үүсгэдгээрээ үүсгээд харин түүн дээр docker container orchestrator-ууд жижиг жижиг container-ууд үүсгэж эдгээр технологиуд нь гайхалтай хослон ажиллах юм.