#docker
🐋 Docker and OS concepts: similarity
Dockerda imagelar, containerlar, volumelar, o'zini networkingi bor, bilamiz. Shu paytgacha eng kamida shu volume nima o'zi degan odam bo'lsa kerak. Bu tushunchalarni OS orqali tushunishimiz osonroq bo'lar ekan.
Image = Read Only Filesystem snapshot (program). Ya'ni, barcha dependencylar, configurationlar qilingan binary executable file desak bo'ladi. Faqat Docker image immutable.
Container = Process. Ya'ni, running program. Program run qilinganda RAMga yuklanadi va u processga aylanadi. U o'zining address spacega ega. Lekin containerda bu filesystem ko'rinishida, xuddi kichkina linuxcha containerni ichida bordek bo'ladi.
Volume = Persistent storage. Process run bo'lganda uning local datalari process o'chganda "chopiladi'. Chunki processning barcha datalari o'z address spaceda va u RAMga yuklangan, process tugatilganda esa ular memorydan o'chiriladi demak lokal data ham yo'q. Containerda ham xuddi shunday, shu sabab persistent storage sifatida volume directory specify qilishimiz mumkin.
Networking = Interprocess Communication. Processlar o'zaro pipelar, socketlar yoki shared memory orqali muloqot qilishini bilamiz. Dockerda ham containerlar shu kabi o'zaro muloqot qiladi:
- Bridge network processlar socketlar orqali bitta LANda qanday muloqot qilsa shunday;
- Host network processlar bitta host ichida socket orqali muloqot qilishi, container xuddi hostning native processi kabi hostning IP address va portlarini tekkis ishlatadi;
- Overlay network esa distributed IPC. Ya'ni u bir nechta turli hostlardagi containerlar o'rtasida muloqot tashkil qiladi.
@voidplog
🐋 Docker and OS concepts: similarity
Dockerda imagelar, containerlar, volumelar, o'zini networkingi bor, bilamiz. Shu paytgacha eng kamida shu volume nima o'zi degan odam bo'lsa kerak. Bu tushunchalarni OS orqali tushunishimiz osonroq bo'lar ekan.
Image = Read Only Filesystem snapshot (program). Ya'ni, barcha dependencylar, configurationlar qilingan binary executable file desak bo'ladi. Faqat Docker image immutable.
Container = Process. Ya'ni, running program. Program run qilinganda RAMga yuklanadi va u processga aylanadi. U o'zining address spacega ega. Lekin containerda bu filesystem ko'rinishida, xuddi kichkina linuxcha containerni ichida bordek bo'ladi.
Volume = Persistent storage. Process run bo'lganda uning local datalari process o'chganda "chopiladi'. Chunki processning barcha datalari o'z address spaceda va u RAMga yuklangan, process tugatilganda esa ular memorydan o'chiriladi demak lokal data ham yo'q. Containerda ham xuddi shunday, shu sabab persistent storage sifatida volume directory specify qilishimiz mumkin.
Networking = Interprocess Communication. Processlar o'zaro pipelar, socketlar yoki shared memory orqali muloqot qilishini bilamiz. Dockerda ham containerlar shu kabi o'zaro muloqot qiladi:
- Bridge network processlar socketlar orqali bitta LANda qanday muloqot qilsa shunday;
- Host network processlar bitta host ichida socket orqali muloqot qilishi, container xuddi hostning native processi kabi hostning IP address va portlarini tekkis ishlatadi;
- Overlay network esa distributed IPC. Ya'ni u bir nechta turli hostlardagi containerlar o'rtasida muloqot tashkil qiladi.
Docker ham orqa fonda shu OS conceptlarni ishlatadi aslida, lekin ancha chuqur va murakkab. Bu borada butun boshli katta kitoblar va professional maqolalar mavjud.
@voidplog