Slurm ááœáẠááŒáá¯áẠáá áááºá á
áááºáá²á·áááºá
á€áá±á¬ááºážáá«ážááœáẠDocker ááááá¯ááºážááŒá±á¬ááºážááŸáá·áº áááºážáá¡áááá¡ááŸá áºáá¬ááá»á¬áž- Imageá Cliá Dockerfile á¡ááŒá±á¬ááºážááŒá±á¬áá«áááºá áá±á¬ááŒá±á¬ááœá²ááẠá¡á ááŒá¯áá°áá»á¬ážá¡ááœáẠáááºááœááºáá¬ážáá±á¬ááŒá±á¬áá·áº á¡ááœá±á·á¡ááŒá¯á¶ááŸáá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡ááœáẠá áááºáááºá á¬ážááœááºáááŸááá«á ááœá±ážá á¡á°á¡ááẠááá¯á·ááá¯áẠáááºááŸáá¯ááºážá áœá¬ ááŸá áºááŒáŸá¯ááºááŒááºáž ááŸááááºááá¯ááºáá«á á¡ááœááºá¡ááŒá±áá¶áá»áááºá
Docker ááá¯áá¬áá¬áá²
Wikipedia á០Docker áá¡áááá¹áá«ááºááᯠááŒáá·áºááŒáá«á áá¯á·á
Docker ááẠááœááºááááºáá¬á¡ááœááºážááŸá áááºáááºážáá»ááºáá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážáá»á¬áž ááŒáá·áºáá»ááºááŒááºážááŸáá·áº á á®áá¶ááá·áºááœá²ááŒááºážááá¯á·ááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá±á¬á·ááºáá²ááŒá áºáááºá
áá®á¡áááá¹áá«ááºá áá¬ááŸááŸááºážááŸááºážáááºážáááºážáááŸááá«áá°ážá á¡áá°ážáááŒáá·áº âááœááºááááºáá¬ááŒá¯áá¯ááºááŒááºážááᯠáá¶á·ááá¯ážáá±ážááá·áº áááºáááºážáá»ááºááœááºâ áá°ááẠá¡áááºá¡áá¬ááá¯ááá¯ááá¯áááºááᯠá¡áá°ážááŸááºážáááºážá áœá¬ áááááá«á áááá»ááºááẠá¡áá»áááºááᯠááŒááºááŒáá·áºáá¡á±á¬ááºá ááááá¯ážáá» âMonolithic Eraâ ááá¯á· áá±á«áºáá²á· áá±ááºáá²á· á ááá¯ááºáá¡á±á¬ááºá
Monolithic áá±ááº
áá áºáá¯áááºážáá±á¬áá±ááºááẠá¡ááá®áá±ážááŸááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŸá®ááá¯ááŸá¯áá»á¬ážá áœá¬ááŒáá·áº monolithic ááŒá áºáá±á¬á¡áá«á monolithic áá±ááºááŒá áºáááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á á¡áá»áááºá¡áá±á¬áºááŒá¬áá²á·áá«áááºá áá áºáá»áááºáááºážááŸá¬áááºá áá¬áá¬áá»á¬ážá áœá¬áááŸááá«á áááºážááá¯á·á¡á¬ážáá¯á¶ážááᯠáá»áœááºá¯ááºááá¯á·ááááŒá®áž áááºážááá¯á·ááᯠá á±á¬áá·áºááŒáá·áºáá²á·áááºá á¡á²ááᯠáááºá áá¬áá±á¬ááºážáá²á· ááŸáá¯ááºážááŸá¥áºááŸá¯áá»áá¯áž ááŸááááºá
á¡áááºááœá±ážáááá á¹áá¬ááºáá»á¬ážááẠá¡áááºááœá±ážáááá á¹áá¬ááºáá»á¬ážááŒá áºáááºá monolithic áá±ááºááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááá¬áá¬áá»á¬ážááᯠá¡áááºááœá±ážáááá á¹áá¬ááºáá»á¬ážáá²á·ááá¯á· áááºáá¶ááŒá®áž áá¯ááºááŸá¯áá·áºá¡ááŸá¯ááºá¡ááœáŸá¬ážáá»á¬ážááᯠááŸá¯ááºáá¯ááºáá¬á ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ á¡áááºážá¡ááŒá áºá á®áá¶ááá·áºááœá²ááŸá¯á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠvirtualization ááá¯á¡áá¯á¶ážááŒá¯áááº- áá»áœááºá¯ááºááá¯á·ááẠáá¬áá¬áá áºáá¯ááá¯áá°áᬠáááºážááᯠvirtual machines á¡áá»á¬ážá¡ááŒá¬ážááá¯á· ááŒááºáá±á¬ááºááŒááºážááŒáá·áº áááºáááºážáá»ááºááᯠáá®ážááŒá¬ážááœá²áá¯ááºááŒá±á¬ááºáž áá±áá»á¬á á±áááºá
Hypervisor-based virtualization á áá áºáá»á¬áž
Virtualization á áá áºáá»á¬áž- VMwareá VirtualBoxá Hyper-Vá Qemu KVM á¡á ááŸááááºááá¯á·ááᯠáá°ááá¯ááºážááŒá¬ážáá°ážááŒáá±áááºá áááºážááá¯á·ááẠá¡ááá®áá±ážááŸááºážááᯠáá®ážááŒá¬ážááœá²áá¯ááºááŒááºážááŸáá·áº á¡áááºážá¡ááŒá áºá á®áá¶ááá·áºááœá²ááŸá¯ááᯠáá±ážá áœááºážáá±á¬áºáááºáž áááºážááá¯á·ááœáẠá¡á¬ážáááºážáá»ááºáá»á¬ážááŸááááºá virtualization ááŒá¯áá¯ááºáááºá áááºááẠhypervisor ááá¯á¡ááºáááºá hypervisor ááẠá¡áááºážá¡ááŒá áºáá áºáá¯ááŒá áºáááºá virtual machine ááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº áá áºáá¯áá¯á¶ážááᯠcolossus ááŒá áºááẠ- á ááºáááºáááºááŸá¯á áá áºá Nginxá Apache ááŸáá·áº MySQL ááŒá áºááá¯ááºááá·áº áá±ážáá¶áá±á¬áá¯á¶áá«ááŸááááºá áá¯á¶ááẠááŒá®ážáá¬ážááŒá®áž virtual machine áááºáááºááẠá¡áááºáááŒá±áá«á ááááºá¡áá±ááŒáá·áº virtual machines áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáá¬ááœááºááŸá±ážááœá±ážááá¯ááºáááºá á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááºá virtualization á áá áºáá»á¬ážááᯠkernel á¡ááá·áºááœáẠáááºáá®ážáá¬ážáááºá
Kernel á¡ááá·áº virtualization á áá áºáá»á¬áž
Kernel-level virtualization ááᯠOpenVZá Systemd-nspawná LXC á áá áºáá»á¬ážááŒáá·áº áá¶á·ááá¯ážáá¬ážáááºá ááá¯áá²á·ááá¯á·áá±á¬ virtualization ááá°ážááŒá¬ážáá±á¬á¥ááá¬áá áºáá¯ááŸá¬ LXC (Linux Containers) ááŒá áºáááºá
LXC ááẠnode áá áºáá¯áááºážááœáẠLinux áááºáááºááŸá¯á áá áºá áá®ážááŒá¬ážááœá²áá¯ááºáá¬ážáá±á¬ ááŒá áºáááºáá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠáááºáááºááŸá¯á áá áºá¡ááá·áº virtualization á áá áºáá áºáá¯ááŒá áºáááºá LXC ááẠvirtual machines áá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áá±á¬áºáááºáž áááºážáááá¯ááºááá¯áẠprocess space ááŸáá·áº network stack ááŒáá·áº virtual environment ááᯠáááºáá®ážáá«áááºá
á¡áááá¡á¬ážááŒáá·áº LXC ááẠááœááºááááºáá¬áá»á¬ážááᯠáááºáá®ážáááºá virtual machines ááŸáá·áº containers á¡ááŒá¬ážááœá¬ááŒá¬ážáá»ááºááá¬áá²á
ááœááºááááºáá¬ááẠáá®ážááŒá¬ážáá¯ááºáááºážá ááºáá»á¬ážá¡ááœáẠáááá·áºáá»á±á¬áºáá«- ááœááºááááºáá¬á០áááºáá¶áá°áᶠááœááºááŒá±á¬ááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºááá·áº kernel á¡ááá·áºááŸá virtualization á áá áºáá»á¬ážááœáẠá¡á¬ážáááºážáá»ááºáá»á¬ážááᯠááœá±á·ááŸááá«áááºá ááá¯á·ááŒá±á¬áá·áº áá áºá á¯á¶áá áºáá¯ááᯠááœá²áá¯ááºááẠááá¯á¡ááºáá«áá virtual machine ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯áá±á¬ááºážáá«áááºá
Virtualization ááŸáá·áº containerization á¡ááŒá¬áž ááŒá¬ážáá¬ážáá»ááºáá»á¬ážááᯠáá¯á¶ááŒááºážááœáẠááœá±á·ááá¯ááºáá«áááºá
OS áááááºááœáẠáá¬á·ááºáá² ááá¯ááºáá«áá®áá¬áá»á¬ážá hypervisors áá»á¬ážááŸáá·áº ááœááºááááºáá¬áá»á¬ážááŸááááºá
áá áºáá¯áá¯ááᯠááááºááœá²áá¯ááºáá»ááºáááºááá¯áááºáá±á¬á· Hardware hypervisors ááœá±á áá±á¬ááºážáá«áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áááºážááẠáááºááá¯áá®á á¬áá»ááºááŸá¬áá»á¬ážááŸáá·áº áááá¯áááºáá¬áá»á¬ážá¡ááá·áºááœáẠáá®ážááŒá¬ážááœá²áá¬ážááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
áááá¯ááááºáá áºáá¯á¡áá±ááŒáá·áº hypervisors áá»á¬ážááŸáááŒá®áž ááœááºááááºáá¬áá»á¬ážáá«ááŸáááŒá®áž áááºážááá¯á·á¡ááŒá±á¬ááºážááᯠáááºáááºááŒá±á¬ááŒáá«áááºá Containerization á áá áºáá»á¬ážááœáẠhypervisor áááŸááá±á¬áºáááºáž ááœááºááááºáá¬áá»á¬ážááᯠáááºáá®ážá á á®áá¶ááá·áºááœá²áá±á¬ ááœááºááááºáá¬á¡ááºáá»ááºáá áºáᯠááŸááá«áááºá á€á¡áá¬ááẠááá¯ááá¯áá±á«á·áá«ážáá±á¬ááŒá±á¬áá·áº core ááŸáá·áºá¡áá¯ááºáá¯ááºááŒááºážááŒá±á¬áá·áº overhead áááºážáá«ážááẠááá¯á·ááá¯áẠáá¯á¶ážááááŸááá±á
kernel á¡ááá·áºááœáẠááœááºááááºáá¬ááŒá¯áá¯ááºááŒááºážá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬
á¡ááŒá¬ážáá¯ááºáááºážá ááºáá»á¬ážá០áá®ážááŒá¬ážááœááºááááºáá¬áá áºáá¯ááᯠáááºáá®ážááá¯ááºá á±ááá·áº á¡ááááááºážááá¬áá»á¬ážááŸá¬ Namespaces ááŸáá·áº Control Groups áá»á¬ážááŒá áºáááºá
Namespaces- PIDá Networkingá Mount and Userá áá®áááºááááŸááá±ááá·áº áá¬ážáááºáááœááºá¡á±á¬áẠáá«ááœá±ááᯠá¡á¬áá¯á¶á áá¯ááºáá«áááºá
PID Namespace ááẠáá¯ááºáááºážá ááºáá»á¬ážááᯠááá·áºáááºáá¬ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠPID Namespace ááá¯áááºáá®ážááŒá®áž áá¯ááºáááºážá ááºáá áºáá¯ááᯠááá¯áá±áá¬ááœáẠáá¬ážááŸááá±á¬á¡áá«á áááºážááẠPID 1 ááŒáá·áº ááŒá áºáá¬áááºá á¡áá»á¬ážá¡á¬ážááŒáá·áº á áá áºáá»á¬ážááœáẠPID 1 ááẠsystemd ááá¯á·ááá¯áẠinit ááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠnamespace á¡áá áºááœáẠáá¯ááºáááºážá ááºáá áºáá¯ááᯠááá·áºáá±á¬á¡áá«á áááºážááẠPID 1 ááᯠáááºáá¶áááŸáááẠá
Networking Namespace ááẠááá·áºá¡á¬áž ááœááºáááºááᯠááá·áºáááº/ááœá²áá¯ááºáááºááŸáá·áº ááá·áºááá¯ááºááá¯ááºá¡ááºáá¬áá±á·á áºáá»á¬ážá¡ááœááºážá áá±áá¬áá»ááá¯ááºá á±áá«áááºá Mount ááẠááá¯ááºá áá Ạááá·áºáááºáá»ááºáá áºáá¯ááŒá áºáááºá á¡áá¯á¶ážááŒá¯áá°âá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡áá±á«áº ááá·áºáááºáá»ááºá
ááááºážáá»á¯ááºáá±ážá¡ááœá²á·áá»á¬áž- áááºááá¯áá®á CPUá IOPSá ááœááºááẠ- á á¯á á¯áá±á«ááºáž áááºááẠáá áá¯ááá·áºá ááá¯ááºáá«á áááºážááá¯á·ááᯠCgroups (âC-groupsâ) áá¯áá±á«áºáááºá
ááááºážáá»á¯ááºáá±ážá¡ááœá²á·áá»á¬ážááẠááœááºááááºáá¬áá áºáá¯á¡ááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá Control Groups ááŸáááá·áº ááœááºááááºáá¬ááẠáááºááŸááºáá¬ážáá±á¬ á¡áááºážá¡ááŒá áºááá¬áááẠááá¯áá á¬ážáá¯á¶ážááá·áºáᯠáá»áœááºá¯ááºááá¯á·ááŒá±á¬ááá¯ááºáááºá
ááœááºááááºáá¬ááŒá¯áá¯ááºááŒááºážááᯠá¡ááŒáá·áºá¡ááá¯ááºáá±á¬ááºáááºá¡ááœááºá á¡ááá¯áááºážááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááº- á áœááºážáááºáá»á¬ážá áá°ážáá°áá±ážáá¬ážááŒááºážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
áá¯ááºááá¯ááºá áœááºážááá¯áᬠáá¯ááºáááºážá ááºáá áºáá¯ááᯠáá¯ááºááá¯ááºáááºá ááá¯ááºááá¯ááºáá°ážááá¯áá¬ááᯠááŒá±á¬áá²á·á¡áá«á kernel á¡ááá·áºááœááºá áááºážááá¯á·ááẠáá±á¬ááºáá»á¬ážá áœá¬ááŸááá±á¬ ááá¯ážááŸááºážáá±á¬ bitmap áá»á¬ážááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá root á¡áá¯á¶ážááŒá¯áá°ááœáẠá¡ááœáá·áºáá°ážáá»á¬áž á¡ááŒáá·áºááŸáááŒá®áž á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºááá¯ááºáááºá á¡áá»áááºáá¬áá¬ááẠá áá áºá¡áá»áááºááᯠááŒá±á¬ááºážáá²ááá¯ááºáááº- áááºážááœáẠTime Capsule ááœáẠá áœááºážáá±á¬ááºááá¯ááºáááºá áááºážááŸá¬ áááºážááŒá áºáááºá á¡ááœáá·áºáá°ážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá¯ááºáááºážá ááºáá»á¬ážá¡ááœáẠááá·áºáááºáá»ááºáá»á¬ážááᯠááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºá¡á±á¬áẠááŒááºáááºáááºááŸááºááá¯ááºááŒá®áž áááºážááŒá±á¬áá·áº ááá·áºááá¯ááºááẠáá¬ááœááºááá¯ááºáááºá
Copy-on-write á áá áºááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž Docker áá¯á¶áá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááá¯ááºááŒá®áž áááºážááá¯á·ááᯠááá¯ááá¯áááá±á¬ááºá áœá¬ á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
Docker ááẠáááºááŸáááœáẠCgroups v2 ááŸáá·áº ááá¯ááºáááºáá®áá±á¬ ááŒá¿áá¬áá»á¬ážááŸááá±áááºá ááá¯á·ááŒá±á¬áá·áº á€áá±á¬ááºážáá«ážááẠCgroups v1 ááᯠá¡áá°ážá¡á¬áá¯á¶á áá¯ááºáá¬ážáááºá
áá«áá±ááá·áº áááá¯ááºážááᯠááŒááºááŒáá·áºáá¡á±á¬ááºá
kernel á¡ááá·áºááœáẠvirtualization á áá áºáá»á¬ážáá±á«áºáá¬áá±á¬á¡áá«á áááºážááá¯á·ááᯠá áááºá¡áá¯á¶ážááŒá¯áá¬áááºá hypervisor áá±á«áºááŸá ááááºááœáẠáá»á±á¬ááºááœááºááœá¬ážáá±á¬áºáááºáž á¡áá»áá¯á·áá±á¬ ááŒá¿áá¬áá»á¬áž áá»ááºááŸááá±áááº-
- ááŒá®ážáá¬ážáá±á¬áá¯ááºáá¯á¶áá»á¬áž- áááºážááá¯á·ááẠáááºáááºááŸá¯á áá áºá á á¬ááŒáá·áºááá¯ááºáá»á¬ážá ááá°áá®áá±á¬áá±á¬á·ááºáá²ááºáá»á¬ážá áœá¬ááᯠOpenVZ áá áºáá¯áááºážá¡ááŒá áºááá¯á· ááœááºážá¡á¬ážáá±ážááŒááŒá®áž á¡áá¯á¶ážááœáẠáá¯ááºáá¯á¶ááẠá¡ááœááºááŒá®ážáá¬ážáá±áá²ááŒá áºáááºá
- áá¯ááºááá¯ážááŒááºážááŸáá·áº áá±ážááá¯á·ááŒááºážá¡ááœáẠáá¯á¶ááŸááºá á¶ááŸá¯ááºážáááŸááá±á¬ááŒá±á¬áá·áº ááŸá®ááá¯ááŸá¯ááŒá¿áá¬ááŸá¬ áá»ááºááŸááá±áá²ááŒá áºáááºá áá¯ááºááŸá áºáá¯ááẠáá áºáá»á áºááá¯ááºáá áºáá¯áááºážááᯠá¡áá¯á¶ážááŒá¯áá±á¬áºáááºáž ááá°áá®áá±á¬áá¬ážááŸááºážááŒáá·áº á¡áá¯á¶ážááŒá¯ááá·áºá¡áá« á¡ááŒá±á¡áá±áá»á¬ážááŸááááºá áááºážááá¯á·ááŒá¬ážááœáẠáááááá¹áááŒá áºááá¯ááºáááºá
áá®ááŒá¿áá¬ááœá±á¡á¬ážáá¯á¶ážááᯠááŒá±ááŸááºážááá¯á· áá±á¬ááºáá±ááºáá±á¬ááºáá¬ááŒá®á
ááœááºááááºáá¬áá±ááº
ááœááºááááºáá¬áá»á¬ážáá±ááºááá¯á· áá±á¬ááºááŸááá¬áá±á¬á¡áá«á áááºážááá¯á·ááŸáá·áº áááºááœá²áá¯ááºáá±á¬ááºááŒááºážá á¡ááœá±ážá¡áá±á«áºááẠááŒá±á¬ááºážáá²ááœá¬ážáá²á·áááºá
- áá¯ááºáááºážá ááºáá áºáᯠ- ááœááºááááºáá¬áá áºáá¯á
- áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáááºážá ááºá¡ááœáẠááá¯á¡ááºáá±á¬ ááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠáááºážáááœááºááááºáá¬ááá¯á· áá±ážááá¯á·áá«áááºá áááºážááẠmonoliths áá»á¬ážááᯠmicroservices á¡ááŒá ẠááŒááºáá±á¬ááºááẠááá¯á¡ááºáááºá
- áá¯á¶áá±ážáá±á ááá¯áá±á¬ááºážáá±- ááŒá áºááá¯ááºáá»á±áááºážáá±á¬ á¡á¬ážáááºážáá»ááºáá»á¬áž ááŸááá±áá±á áááºážááẠááá¯ááá¯ááŒááºáááºá áœá¬ ááœááºááŸááá¬áá±ááŒá áºáááºá
- áá¬áááá»á¬ážááẠáá±á«áºáááºááŒá áºáá¬áááºá
á¡áááºááœá±ážáááá á¹áá¬ááºáá²á· ááœá¬ážá¡ááŒá±á¬ááºáž ááŒá±á¬áá²á·áá¬ááᯠááŸááºáááá¬ážá ááááºá áááá á¹áá¬ááºáá»á¬ážááẠá¡áááºááœá±ážáááá á¹áá¬ááºáá»á¬ážáá²á·ááá¯á· ááŒá áºáá²á·áá±á¬áºáááºáž ááá¯á¡áá« áááá á¹áá¬ááºáá»á¬ážáá²á·ááá¯á· ááŒá áºáá¬áááºá ááááºá monolith - one application ááŸááá²á·áááºá ááá¯á¡áá« áááºážááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯ áááá ááœááºááááºáᬠááá ááŸááááºá á¡áá»áá¯á·áá±á¬ ááœááºááááºáá¬áá»á¬ážááœáẠáá¯á¶áá° á-á áᯠááŸáááá¯ááºáááºá ááœááºááááºáá¬ááá¯ááºážááᯠááááºážáá»á¯ááºááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áá±ážáááŒá®ážáá«á áá»áœááºá¯ááºááá¯á·á¡ááœáẠááá¯á¡áá±ážááŒá®ážáááºááŸá¬ áááºáá±á¬ááºááŸá¯ááá¯ááºááá¯ááºá áááŸáááá¯ááºááŸá¯ááŒá áºáááº- á€ááœááºááááºáá¬á¡á á¯á áá¯ááºáá±á¬ááºáá¯á¶á á€ááŒá±á¬ááºážáá²ááŸá¯ááẠá á±á¬áá·áºááŒáá·áºááŒááºážáá®ááá¯á· áá»ááºážáááºáá¬áááºá
2014-2015 ááœáẠDocker ááẠááá¯áá»áœááºá¯ááºááá¯á·ááŒá±á¬ááá·áºáááºážááᬠááœááºážáá¬ážáá²á·áá«áááºá
Docker ááẠáá¿ááááá±áááŸáá·áº á á¶ááŒá¯áá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá¯ááºááá¯ážááŸá¯ááᯠááŒá±á¬ááºážáá²áá²á·áááºá Docker ááᯠá¡áá¯á¶ážááŒá¯á áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážáá áºáá¯ááᯠáá¯ááºááá¯ážááá¯ááºáááºá áááºážááᯠááá¯ááŸá±á¬ááºáá¯á¶ááá¯á· áá±ážááá¯á·ááá¯ááºáááºá áááºážááᯠááá¯áá±áá¬á០áá±á«ááºážáá¯ááºáá¯ááºáᬠáááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áá»áœááºá¯ááºááá¯á· ááá¯á¡ááºááá»áŸá¡á¬ážáá¯á¶ážááᯠDocker container áá²ááá¯á· ááá·áºáá¬ážáá±á¬ááŒá±á¬áá·áº ááŸá®ááá¯ááŸá¯ááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºáá«ááŒá®á Docker ááẠáá»áá¯ážááœá¬ážááá¯ááºá áœááºážááᯠá¡á¬ááá¶áá«áááºá áá°áá»á¬ážá áœá¬ááẠááŒá¯ááŒááºááœááºážáá¶ááŒááºážáá»áá¯ážááŸáá·áº ááŒá¯á¶áá°ážááŒááŒá®áááºáááº- á¡áá¬á¡á¬ážáá¯á¶ážááẠááá·áºá¡ááœáẠá¡áááºááŒá±áááºá áááºááẠáááºážááᯠáá¯ááºáá¯ááºáá±ážááá¯á· ááœááºážááá¯á·áááºá ááá¯ááœáẠá¡áá¯ááºááá¯ááºáá±á¬á·áá±á Docker ááŒáá·áº á€ááŒá¿áᬠááŒá±áááºááœá¬ážáá«áááºá á¡áááºá áááºá Docker ááœááºááááºáᬠá áááºááŒá®áž áááºážááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«áá ááŒá áºááá¯ááºááŒá± ááŒáá·áºáá¬ážáá±á¬ á¡ááá¯ááºážá¡áá¬ááŒáá·áº áááºážááẠáá¯ááºáá¯ááºááŸá¯ááœáẠá áááºááŒá®áž ááá¯áá±áá¬ááœáẠá¡áá¬ážáá° áá¯ááºáá±á¬ááºáááºááŒá áºáááºá
á¡áá±á«áºááá± ááŸáá·áºá á¬ážáááºá
ááááºááá¯ááºážáá²á·áááºáááºáá²á· á¡ááŒááºážááœá¬ážááŸá¯ááœá± á¡ááŒá²ááŸááá±áááºá á¡áá»áá¯á·áá±á¬áá°áá»á¬ážá Docker ááẠLinux kernel ááŸáá·áº containerization á¡ááœááºááá¯á¡ááºáá±á¬ áá¯ááºáááºážá ááºá¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯áá±á¬ááŒá±á¬áá·áº Docker ááẠá¡ááá¯áááºááá¯ááááºáá±á¬ááºááá¯ááºáá¯áá¯á¶ááŒááºááŒáááºá "Docker ááẠá¡áááºáá°ááŒá®ážáᯠááá¯áá«áá Linux kernel ááẠá¡áááºááœááºááŸááá±áá«áááºá"
á¡ááŒá¬ážáá áºáááºááœááºá áááºááá¯ááá¯áááºááŸáá¯ááºážááœá¬ážáá«á Docker ááœáẠá¡ááŸááºáááºá¡áá¬áá»á¬ážá áœá¬ááŸááááºá ááá·áºáá¯ááºááŒááºážááŒáá·áº á¡áá±á«áºá á®ážáᯠááá¯ááá¯ááºáááºá
ááááá áºáá¯ááá±á¬á· PID namespace ááŒá áºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáááºážá ááºáá áºáá¯ááᯠnamespace ááœááºáá¬ážáá±á¬á¡áá«á áááºážááᯠPID 1 á¡ááŒá áºáááºááŸááºáá±ážáááºá áá áºáá»áááºáááºážááœááºá á€áá¯ááºáááºážá ááºááẠááœááºááááºáá¬á¡ááŒááºáááºááŸá host namespace ááœááºááŸááá±á¬ á¡ááŒá¬áž PID áá áºáá¯ááŸááááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠNginx ááᯠááœááºááááºáá¬áá áºáá¯ááœáẠá áááºáá²á·ááŒá®áž áááºážááẠPID 1 (áá¬á áá¬áá¯ááºáááºážá ááº) ááŒá áºáá¬áá²á·áááºá áááºážááœáẠá¡áááºááŸááºááœáẠPID 12623 áá«ááŸááááºá áááºážááẠáááºáá»áŸáááºááá¯ážááŸááááºááᯠááŒá±á¬áááºáááºáááºá
áá¯áááá¡áá»ááºááŸá¬ Cgroups ááŒá áºáááºá ááœááºááááºáá¬áá áºáá¯á ááŸááºáá¬ááºááᯠááá·áºáááºááá¯ááºááá·áºá áœááºážáááºááᯠáááºááá¯áá®ááŒáá·áº Cgroups áá°ááŒáá«á áá¯á·á áááºážááá¯ááœáá·áºáá¬ážáá±á¬á¡áá«á áá±á¬ááºáá¬áá»á¬ážááŸáá·áº áááºááá¯áá®á á¬áááºážá¡ááºážáá»á¬ážááᯠá¡áááºáááºá á±áááº- á á¬áá»ááºááŸá¬áááºáá»áŸááœá²áá±ááŒá®ážááŒá±á¬ááºážááŸáá·áº á€ááœááºááááºáá¬á¡ááœáẠáááºáá»áŸá¡ááá²á·ááŸááá±áá±ážáááºááᯠkernel á០áá¬ážáááºáááºááá¯á¡ááºáá«áááºá áá«á á¡áá±á«áºáá¶ááŒá áºááá¯ááºáá±ááá·áº á áœááºážáá±á¬ááºáááºá¡áá±á«áº áááºááá¯áááºáá±á¬ááºáá²ááá¯áá¬ááᯠáááá»áá²á·áá±á·áá¬ááŸá¯ áááœá±á·áááá±ážáá«áá°ážá ááŒá®ážáá±á¬á· Docker ááŸá¬ á¡áá¯ááºáá¯ááºáá²á· á¡ááºááá®áá±ážááŸááºážáᬠá áœááºážáá±á¬ááºáááºááá¯ááºážááŸá¬ áááááá¬áᬠáá¯á¶ážááŸá¯á¶ážááœá¬ážáá¬ááᯠáá»áœááºáá±á¬áºááá¯ááºááá¯áẠáááááá¬ážáááá²á·áá«áá°ážá
á áœááºážáá±á¬ááºáááºááŸáá·áº áááºáááºá áá±á¬ááºáááºááŸááºáá»ááºáá áºáá¯á á¡áá»áá¯á·áá±á¬ kernel áá±á¬ááºáá»á¬ážááᯠhost á០container ááá¯á· áá±ážááá¯á·áááºá á¡áá°ážáááŒáá·áºá á¡áá»áá¯á·áá±á¬ network parameters áá»á¬ážá ááá¯á·ááŒá±á¬áá·áº á¡áááºá áááºááẠDocker ááœáẠá áœááºážáá±á¬ááºáááºááŒáá·áºáá¬ážáá±á¬ á¡áá¬áá áºáá¯ááᯠáá¯ááºáá±á¬ááºááá¯áá«áá á¥ááá¬á ááœááºáááºááᯠáááºááŒáœá áœá¬á¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬á ááá¯á·áá±á¬áẠá¡áááºážáá¯á¶áž á€áá±á¬ááºáá»á¬ážááᯠáá»áááºááŸáááẠááá¯á¡ááºáá«áááºá á¥ááᬠnf_conntrack áá áºáá»áá¯á·á
Docker á¡áá°á¡áá¡ááŒá±á¬ááºáž
Docker ááœáẠá¡á áááºá¡ááá¯ááºážáá»á¬ážá áœá¬ áá«áááºáááºá
- Docker Daemon ááẠáá°áá®áá±á¬ Container Engine ááŒá áºáááºá ááœááºááááºáá¬áá»á¬ážááᯠááœáŸáá·áºáááºáááºá
- Docker CII ááẠDocker Management utility áá áºáá¯ááŒá áºáááºá
- Dockerfile - áá¯á¶áá áºáá¯á¶áááºáá±á¬ááºáááºáž áááºážááœáŸááºáá»ááºáá»á¬ážá
- áá¯á¶ - ááœááºááááºáá¬ááᯠááŸááá·áºáá¯ááºááá·áºáá¯á¶á
- ááœááºááááºáá¬á
- Docker ááŸááºáá¯á¶áááºááŒááºážááẠáá¯ááºáá¯á¶ááá¯ááŸá±á¬ááºááŸá¯áá áºáá¯ááŒá áºáááºá
ááááºážááááºážá¡áá
Docker daemon ááẠDocker_host ááœááºá¡áá¯ááºáá¯ááºááŒá®áž containers ááá¯ááœáá·áºáááºá ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážáá±ážááá¯á·áá±á¬ Client áá áºáá¯ááŸááááº- áá¯á¶áááºáá±á¬ááºááŒááºážá áá¯á¶ááá¯áá±á«ááºážáá¯ááºáá¯ááºáá«á ááœááºááááºáá¬ááá¯ááœáá·áºáá«á Docker daemon ááẠregistry ááá¯á·ááœá¬ážááŒá®áž áááºážááá¯á·ááᯠexecute áá¯ááºáááºá Docker client ááẠá ááºááœááºáž (Unix socket) ááŸáá·áº TCP á០á¡áá±ážááááºážáá¬áá០ááŸá áºáá¯áá¯á¶ážááᯠáááºáá±á¬ááºááá¯ááºáááºá
á¡á áááºá¡ááá¯ááºážáá áºáá¯á á®ááᯠááŒááºáááºážááŒáá·áºáá¡á±á¬ááºá
Docker daemon - á€áááºááŸá¬ áá¬áᬠá¡á áááºá¡ááá¯ááºážááŒá áºááŒá®ážá áááºážááẠá¡áááºááŸááºá ááºááœáẠá¡áá¯ááºáá¯ááºáááº- áá¯á¶áá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáᬠáááºážááá¯á·áá¶á០ááœááºááááºáá¬áá»á¬ážááᯠááœáŸáá·áºáááºáᬠááœááºááááºáá¬áá»á¬ážááŒá¬ážááœáẠááœááºáááºáá áºáᯠáááºáá®ážáᬠááŸááºáááºážáá»á¬ážááᯠá á¯áá±á¬ááºážáááºá âáá¯ááºáá¯á¶áááºáá®ážáá«â ááá¯á· ááŒá±á¬áá²á·á¡áá« áááºááá¯ážááááºáž á¡á²áá®ááᯠáá¯ááºáá±áááºá
Docker CLI â Docker client á¡ááá¯ááºážá daemon ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠconsole utilityá áááºáá«áááºáá«á áááºážááẠááŒááºááœááºážááá¬áá ááœááºáááºáá±á«áºááœááºáááºáž áá¯ááºáá±á¬ááºááá¯ááºáááºá
á¡ááŒá±áᶠá¡áááá·áºáá»á¬áž-
docker ps - Docker host ááœáẠáááºááŸááá¯ááºáá±á¬ááºáá±áá±á¬ ááœááºááááºáá¬áá»á¬ážááᯠááŒááá«á
docker áá¯á¶áá»á¬áž - á
ááºááœááºážááœááºáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬áá¯á¶áá»á¬ážááá¯ááŒááá«á
docker ááŸá¬ááœá±ááŸá¯ <> - ááŸááºáá¯á¶áááºááŒááºážááŸá áá¯á¶áá
áºáá¯á¶ááᯠááŸá¬ááœá±áá«á
docker pull <> - registry á០áá¯á¶áá
áºáá¯á¶ááᯠá
ááºááá¯á· áá±á«ááºážáá¯ááºáá¯ááºáá«á
docker build < > - áá¯á¶ááá¯á
á¯áá±á¬ááºážáá«á
docker run <> - ááœááºááááºáá¬ááá¯ááœáá·áºáá«á
docker rm <> - ááœááºááááºáá¬ááᯠáááºááŸá¬ážáá«á
docker logs <> - container logs áá»á¬áž
docker start/stop/restart <> - ááœááºááááºáá¬ááŸáá·áº á¡áá¯ááºáá¯ááºáááºá
áááºááẠá€á¡áááá·áºáá»á¬ážááᯠáá»áœááºážáá»ááºááŒá®áž áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯ááẠáá¯á¶ááŒááºáá«áá á¡áá¯á¶ážááŒá¯áá°á¡ááá·áºááœáẠDocker ááᯠáááºááá¯ááºááá¯áẠ70% áá»áœááºážáá»ááºáááºáᯠááŸááºáá°áá«á
dockerfile - áá¯ááºáá¯á¶áááºáá®ážáááºáááºážááœáŸááºáá»ááºáá»á¬ážá ááœáŸááºááŒá¬ážáá»ááºááá¯ááºážáá®ážáá«ážááẠá¡ááœáŸá¬á¡áá áºáá áºáá¯ááŒá áºáááºá á¥ááá¬áá áºáá¯ááá¯ááŒáá·áºáá¡á±á¬ááºá
á€áááºááŸá¬ Dockerfile ááŸáá·áºáá°áááº- áááºáááºááŸá á¡áááá·áºáá»á¬ážá áá¬áááºááŸá á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá á€áá±áá¬ááœááºááŸááá±á¬ command áá áºáá¯á á®ááẠ(áá±áá¯áá»á¡á¬ážááŒáá·áº Dockerfile ááœááºáá±ážáá¬ážáááº) ááẠImage ááŸá á¡ááœáŸá¬á¡áá áºáá áºáá¯ááᯠáááºáá®ážáá±ážáá«áááºá
áááºáááºááŒááºážááᯠááŒáá·áºáááºáá±á¬áẠááŒá áºáá»ááºáá±áá¬ááᯠá¡ááŒááºážáá»ááºáž áá¬ážáááºááá¯ááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááŒá±á¬áááºááŸá¬ "áá»áœááºá¯ááºááá¯á·á¡ááœáẠááá¯ááºááœá²áá áºáá¯áááºáá®ážáá«" - áááºážááẠá¡ááœáŸá¬áá áºáá¯ááŒá áºáááºá "ááá¯ááºááœá²ááᯠá¡áá¯ááºáá¯ááºá á±áá«" ááẠá¡ááŒá¬ážá¡ááœáŸá¬áá áºáá¯ááŒá áºáááºá ááááºáá¯áá·áºá¡ááœáŸá¬áááºááááá¯ááá¯ááá¯ááœááºáá°á á±áááºá á¡áááºá áá»áœááºá¯ááºááẠáá±á¬ááºááẠDockerfile ááá¯áááºáá®ážááŒá®áž áá±á¬ááºáá¯á¶ážá á¬ááŒá±á¬ááºážááœáẠáá áºáá¯áá¯ááᯠááŒá±á¬ááºážáá²áá«á - "python" "main.py" ááŸááœá²á á¡ááŒá¬ážáá áºáá¯áá¯ááᯠáá¯ááºáá±á¬ááºááẠááá¯á·ááá¯áẠá¡ááŒá¬ážááá¯ááºáá áºáá¯á០ááŸá®ááá¯ááŸá¯ááᯠááá·áºááœááºážáá« - ááá¯á·áá±á¬áẠááááºá¡ááœáŸá¬áá»á¬ážááᯠáááºááŸáºá¡ááŒá ẠááŒááºáááºá¡áá¯á¶ážááŒá¯áá«áááºá
image ááᯠ- á€á¡áá¬ááẠááœááºááááºáá¬áá¯ááºááá¯ážááŸá¯ááŒá áºááŒá®áž ááœááºááááºáá¬áá»á¬ážááᯠáá¯á¶ááŸá áááºáá¯ááºáá¯ááºáááºá Docker ááᯠáááºáá±á·áá»áºáááºáá±áá»á¬á ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸáẠ(deb ááá¯á·ááá¯áẠrpm packages áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá±ááá²á·ááá¯á·)á áá¯á¶ááẠáááŸááááŒá áºááá¯á¡ááºáá±á¬ rpm package áá áºáá¯ááŒá áºáááºá yum ááá·áºááœááºážááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááᯠááá·áºááœááºážááá¯ááºáááºá áááºážááᯠáá»ááºáá áºáááºá áááºážááᯠááá¯ááŸá±á¬ááºááŸá¯ááœáẠááŸá¬ááœá±ááá¯ááºááŒá®áž áááºážááᯠáá±á«ááºážáá¯ááºáá¯ááºááá¯ááºáááºá á€áá±áá¬ááœáẠá¡áá°áá°áááºááŒá áºáááº- ááœááºááááºáá¬áá»á¬ážááᯠáá¯á¶ááŸáá¯ááºááœáŸááºáááºá áááºážááá¯á·ááᯠDocker registry ááœáẠááááºážáááºážáá¬ážáá«ááẠ(áááºááŸáá·áºáá°áá±á¬á ááá¯ááŸá±á¬ááºááŸá¯áá áºáá¯ááœááº)á áá¯á¶áá áºáá¯á á®ááœáẠSHA-256 hashá á¡áááºááŸáá·áº tag áá áºáá¯ááŸááááºá
áá¯á¶ááᯠDockerfile á០ááœáŸááºááŒá¬ážáá»ááºá¡ááá¯ááºáž áááºáá±á¬ááºáá¬ážáááºá Dockerfile á០ááœáŸááºááŒá¬ážáá»ááºáá áºáá¯á á®ááẠá¡ááœáŸá¬á¡áá áºáá áºáᯠáááºáá®ážáá±ážáááºá á¡ááœáŸá¬áá»á¬ážááᯠááŒááºáá¯á¶ážááá¯ááºáááºá
Docker ááŸááºáá¯á¶áááºááŒááºáž Docker image repository áá áºáá¯ááŒá áºáááºá OS ááŸáá·áºáááºáá°áááºá Docker ááœáẠá¡áá»á¬ážáá°ááŸá¬ á á¶ááŸááºáá¯á¶áááºááŒááºáž - dockerhub ááŸááááºá ááá¯á·áá±á¬áº áááºááẠáááºáááá¯ááºááá¯ááºááá¯ááŸá±á¬ááºááŸá¯á áááºáááá¯ááºááá¯áẠDocker ááŸááºáá¯á¶áááºááŒááºážááᯠáááºáá±á¬ááºááá¯ááºáááºá
ááá·áºáá±á¬á¡áᬠ- áá¯ááºáá¯á¶ááŸááœááºááŸááá±á¬á¡áá¬á Dockerfile á០ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡ááá¯ááºáž áá¯á¶áá áºáá¯á¶ááᯠáááºáá±á¬ááºááŒá®ážáá±á¬áẠá€áá¯á¶á០á áááºááá¯ááºáá«á á€ááœááºááááºáá¬ááẠá¡ááŒá¬ážááœááºááááºáá¬áá»á¬ážááŸáá·áº áá®ážááŒá¬ážááœá²áá¬ážááŒá®áž á¡ááá®áá±ážááŸááºážáá¯ááºáá±á¬ááºáááºá¡ááœáẠááá¯á¡ááºááá·áºá¡áá¬á¡á¬ážáá¯á¶áž áá«áááºááá«áááºá á€ááá á¹á ááœááºáá¯ááŸá áº, ááŠážáááºážááœááºááááºáᬠ- ááŠážáááºážáá¯ááºáááºážá ááºá áá¯ááºáááºážá ááºááŸá áºáá¯ááᯠáá¯ááºáá±á¬ááºááááºááŒá áºááŒá®áž áááºážááẠDocker ááá±á¬ááá¬ážááŸáá·áº á¡áááºážááẠááá·áºáá»ááºáá±áá«áááºá
"áá áºáá¯á¶ážáááºážá áá¯ááºáááºážá ááºáá áºáá¯" ááá¯á¡ááºáá»ááºááẠPID Namespace ááŸáá·áº áááºááá¯ááºáááºá PID 1 áá«ááá·áº áá¯ááºáááºážá ááºááẠNamespace ááœáẠá áááºáá±á¬á¡áá«á áááºážááẠáá¯ááºááááºáá±áá¯á¶ážááœá¬ážáá«á ááœááºááááºáá¬áá áºáá¯áá¯á¶ážáááºáž áá±áá¯á¶ážáá«áááºá á¡áááºá áá¯ááºáááºážá ááºááŸá áºáá¯ááẠááá¯áá±áá¬ááœáẠáá¯ááºáá±á¬ááºáá±áááº- áá áºáá¯ááŸá¬ á¡áááºááŸááºáá±ááŒá®áž áá»ááºáá áºáá¯ááẠáá±áá¯á¶ážááœá¬ážáá«áá ááœááºááááºáá¬ááẠáááºáááºááŸááºáááºáá±áááºááŒá áºáááºá áá«áá±ááá·áº áá«á á¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºááœá±áá²á· áá±ážááœááºážáá áºáá¯áá«áá á¡á²áá«ááœá±ááᯠáááŒá¬ážá¡ááŒá±á¬ááºážá¡áá¬ááœá±ááŸá¬ ááœá±ážááœá±ážáá«áááºá
áááºáááºážá á¡ááºá¹áá«áááºáá»á¬ážááŸáá·áº á¡á
á®á¡á
ááºá¡ááŒáá·áºá¡á
á¯á¶ááᯠááá¯ááá¯á¡áá±ážá
áááºáá±á·áá¬ááẠáá»á±ážáá°ážááŒá¯á ááá·áºááºááᯠááá¯ááºáá¬áá«- "
á á¬áá±ážáá°- Marcel Ibraevá á¡ááá¡ááŸááºááŒá¯ Kubernetes á á®áá¶ááá·áºááœá²áá°á Southbridge ááœáẠá¡ááºáá»ááºáá®áá¬áá±á·áá»áá·áºáá°á Slurm áááºáááºážáá»á¬ážááᯠáá®ááœááºáá°ááŸáá·áº á áá®áá¬á
source: www.habr.com