03. Docker - Containers

 Containers 



නැවක බඩු ප්‍රවාහනය සලකමු.Containers යනුවෙන් දෙයක් නැත්නම් නැවක බාන්ඩ ප්‍රවාහනය effective ලෙස කරගත නොහැකිය.මක්නිසාද යත්, toys transport කරනන් ඕනෙනම් කරන්න වෙන්නේ ඒවා ගෝනිවලා වගේ දාලා අදාළ උපරකන භාවිතයෙන් ඒවා නැවට පටවලා නැවේ අසුරන්න එක.ගෝනි එක උඩ එක දන්න පුළුවන් සීමාවක් ද තියනවා.වාහන ද transport කරනන් ඕනෙනම් එකටත් කරන්න වෙන්නේ කලින් කල දේවල්ම තමා.නමුත් වාහන නැව ලගට ගෙන ඒමට,නැවට පටවන්න, නැවේ අසුරන්න ඕනේකරන tools වෙනම ඒවා වෙනවා.toys වලට ගත්ත ඒවා ගන්න බැ.වෙන වෙන දේවල් transport කරන්න ඕනේ උනත් ඒවාට අදාළ tools සහ process වෙනස් වෙන්න පුවන්.ඒ වගේම තමා නැවේ තිබෙන ඉඩෙන් උපරිම බඩු ප්‍රමාණයක් transport කරගන්නත් බැ වගේම තමා නැවේදී පටවපු බඩු maintain කරන්නත් ලේසි නෑ.නැවෙන් ගිහින් බඩු වෙනත් fort එකකට බාද්දී උනත් ප්‍රශ්න ගොඩකට මුහුණ දෙන්න සිදු වෙනවා.

මෙන්න මේ නිසා නැවෙන් කරන්නේ මොකද්ද, container කියලා එකක් හදුන්වලා දෙනවා.එවන සෑම දෙයක්ම මෙම container එකට දාලා නැවට එවන්න ඕනේ.ඉතකොට fort එකේ කරන්නේ container handle කරන එක විතරයි.container handle කරන්න ඕනේ tools ටික තමා mainly ඕනේ වෙන්නේ.දැන් නැවට වැඩේ ලේසි වගේම තමා නැවේ තියන area එකන් maximum බඩු ප්‍රමාණයක් වඩා effective ලෙස transport කරගන්න පුළුවන් ද වෙනවා.නැව responsible වෙන්නේ container transport කරන එක ගැන විතරයි.ඒවාට බඩු අසිරිම, ඒවගේ තියන බඩු මොනාද,කොහොමද තියෙන්නේ අරව මේවා වැඩක් නැ.ඒවා ගෙන worry වෙන්නේ සහ responsible වෙන්නේ ඒවාට බඩු අසුරන අය.නැව කරන්නේ container එකක් අවොත් එක transport කරන එක විතරයි.

Software ලෝකෙත් ඒ වැඩේ ඒ වගේම තමා වෙන්නේ.කලින් example එකේ බාන්ඩ, software වලදී software එකක් වෙනවා.ඉතාකොට කරන්නේ software එකක් run වෙන්න ඕනේ කරන සියලුම දේවල් (dependencies, runtime environment වගේ සියලුම දේවල්) container එකකට දාලා තනි container එකක් එලියට දීම තමා කරන්නේ.මෙවිට software එක කුමන language එකකින් කුමන architecture එකකින් build කරල දුන්නත් ප්‍රශ්නයක් නෑ.මොකද අවසානයේ එලියට දෙන්නේ එම software එක සහ ඒක run වෙන්න ඕනේ සියලුම දේවල් එකට දාල හදන container එකක් නිසා (Polyglot හෙවත් එක එක technology වලින් ලියපුcomponents සමජාතීය ලෙස සලකන්නු ලබයි).නැවට container එක ඇතුලේ තියෙන්නේ මොනවද කියලා වැඩක් නැ  එය  container එක transport කරනවා වගේ, container run කරන්න පුළුවන් environment එකකට ගිහින් මෙම software එක අඩංගු container එක එක එම environment එක මගින් එම container එක run කරවනවා.

මෙම containers හදල දෙනෙන් ඒවා  manage කරන්නේ docker, containerd වගේ ඒවා මගින් වන අතර ඒවා එම container, container runtime environment එකකට ගිහින් දාලා run කරවාන්න පුළුවන්.


Advantage of docker

Efficient – resource utilization විදිහට efficient.

Container user කරන්නේ නැත්තම්, එක එක language වලින් application develop කරලා run කරද්දී අපිට ඒ ඒ language run වෙන්න අදාලව environment same machine එකක් හෝ different machine වල හදල maintain කරන්න සිද්ද වෙනවා.example ලෙස java application එකක් run කරන්න java තියන server machine එකක run කරන්න සිද්ද වෙනවා, node application නම් node තියන server machine එකක run කරන්න සිද්ද වෙනවා , C# application නම් C# තියන server machine එකක run කරන්න සිද්ද වෙනවා.එත් container බාවිතයේදී එහෙම ප්‍රශ්නයක් වෙන්නේ නැ මොකද different technology වලින් different architecture වලින් ලියපු multiple application container එකකට ඔබලා දෙන නිසා එකම machine එකේ විවිද technology වලින් ලියපු multiple applications  run කරවන්න පුළුවන් container runtime environment එකක් හරහා.(එය machine එකේ os එකේ kernel එක access කරනුලබයි).තවද containers වලදී isolate කරලා තියන්න පුළුවන් එයට ගන්න පුළුවන් CPU එකේ ප්‍රමාණය memory  වගේ ඒවා.එම නිසා resource utilization එකක් වෙනවා

Portable 

Application එක container එකක් ඇතුලේ තියන නිසා ඕනෙම තැනක container runtime environment එකක් උඩ run කරන්න පුළුවන්.එම container එක test server, staging server, live server, aws, google cloud, ms cloud වල දැම්මත් එක වගේ වැඩ.මෙහිදී අපිට dependencies දදා configuration කර කර දාගන්ලන්න  දෙයක් නැ

Easy to scale

Light weigh නිසා easily deploy කරන්න පුළුවන්.තවද, Container එකක් ලෙස තිබෙන නිසා එම application එක run වෙන්න ඕනේ machine එකකම මේක deploy කරන්න ඕනේ කියා කියා දාගන්ලන්න දෙයක් නැ. Container runtime environment තියන ඕනෙම machine එකක මේක deploy කරන්න පුළුවන්. 

Security

Container එක කඩන් ගිහින් OS එකට attack කරලා CPU එක හෝ memory එක වැඩිපුර අරන් system එකම අවුල්කරනන් බැ.Docker container orchestrate කරන අතර එම orchestrate කරන එක පාලනය කරන්නේ Kubernetes වලින්ය.

Comments

Popular posts from this blog

02. Spring – Creating spring project clone it with GIT step by step.

02.What is MicroService?

06.Mongo DB - Query part 2 (Aggregation)