Какво Π΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠ° Скскурзия Π² историята ΠΈ основни абстракции

Π—Π°ΠΏΠΎΡ‡Π½Π° Π½Π° 10 август Π² Slurm Π”ΠΎΠΊΠ΅Ρ€ Π²ΠΈΠ΄Π΅ΠΎ курс, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ изцяло – ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΈ абстракции Π΄ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° историята Π½Π° Docker ΠΈ основнитС ΠΌΡƒ абстракции: Image, Cli, Dockerfile. ЛСкцията Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π·Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΅ ΠΌΠ°Π»ΠΊΠΎ вСроятно Π΄Π° прСдставлява интСрСс Π·Π° ΠΎΠΏΠΈΡ‚Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. Няма Π΄Π° ΠΈΠΌΠ° ΠΊΡ€ΡŠΠ², апСндикс ΠΈΠ»ΠΈ дълбоко потапянС. Π‘Π°ΠΌΠΈΡ‚Π΅ основи.

Какво Π΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠ° Скскурзия Π² историята ΠΈ основни абстракции

Какво С Docker

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Docker ΠΎΡ‚ Wikipedia.

Docker Π΅ софтуСр Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° внСдряванСто ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° прилоТСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ срСди.

Нищо Π½Π΅ става ясно ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ОсобСно нСясно Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° β€žΠ² срСди, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡβ€œ. Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, Π½Π΅ΠΊΠ° сС Π²ΡŠΡ€Π½Π΅ΠΌ Π½Π°Π·Π°Π΄ във Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. НСка Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Π΅Ρ€Π°Ρ‚Π°, която условно Π½Π°Ρ€ΠΈΡ‡Π°ΠΌ β€žΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π° Π΅Ρ€Π°β€œ.

ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π° Π΅Ρ€Π°

ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π°Ρ‚Π° Π΅Ρ€Π° Π΅ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° 2000-Ρ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всички прилоТСния бяха ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΈ, с ΠΊΡƒΠΏ зависимости. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΎΡ‚Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ нямашС ΠΌΠ½ΠΎΠ³ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, всички Π³ΠΈ Π·Π½Π°Π΅Ρ…ΠΌΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅ ΠΈ Π³ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ…ΠΌΠ΅. Има Ρ‚Π°ΠΊΠΎΠ²Π° смСшно сравнСниС:

Π”ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ‚Π΅ Π»ΡŽΠ±ΠΈΠΌΡ†ΠΈ са домашни ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈ. Π’ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π°Ρ‚Π° Π΅Ρ€Π° сС отнасяхмС към Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΊΠ°Ρ‚ΠΎ към домашни Π»ΡŽΠ±ΠΈΠΌΡ†ΠΈ, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΈ ΠΎΠ±Π³Ρ€ΠΈΠΆΠ²Π°Π½ΠΈ, ΠΈΠ·Π΄ΡƒΡ…Π²Π°Ρ‰ΠΈ ΠΏΡ€Π°ΡˆΠΈΠ½ΠΊΠΈ. И Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурситС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ виртуализация: Π²Π·Π΅Ρ…ΠΌΠ΅ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ…ΠΌΠ΅ Π½Π° няколко Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ осигурихмС изолация Π½Π° срСдата.

БистСми Π·Π° виртуализация, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€

ВСроятно всСки Π΅ Ρ‡ΡƒΠ²Π°Π» Π·Π° систСми Π·Π° виртуализация: VMware, VirtualBox, Hyper-V, Qemu KVM ΠΈ Π΄Ρ€. Π’Π΅ осигуряват изолация Π½Π° прилоТСния ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурситС, Π½ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ виртуализация, ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€. А Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΡŠΡ‚ Π΅ Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈ рСсурси. А самата Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ цял колос - Ρ‚Π΅ΠΆΠΊΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма, Nginx, Apache ΠΈ Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ MySQL. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ голямо ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π±Π°Π²Π½Π°. Π—Π° Π΄Π° сС Ρ€Π΅ΡˆΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, бяха създадСни систСми Π·Π° виртуализация Π½Π° Π½ΠΈΠ²ΠΎ ядро.

БистСми Π·Π° виртуализация Π½Π° Π½ΠΈΠ²ΠΎ ядро

Виртуализацията Π½Π° Π½ΠΈΠ²ΠΎ ядро ​​сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΡ‚ систСми OpenVZ, Systemd-nspawn, LXC. Π―Ρ€ΡŠΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚Π°ΠΊΠ°Π²Π° виртуализация Π΅ LXC (Linux Containers).

LXC Π΅ систСма Π·Π° виртуализация Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма Π·Π° стартиранС Π½Π° мноТСство ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ копия Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Linux Π½Π° Π΅Π΄ΠΈΠ½ възСл. LXC Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, Π° създава Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° срСда със собствСно процСсно пространство ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ² стСк.

По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ LXC създава ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Каква Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ?

Какво Π΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠ° Скскурзия Π² историята ΠΈ основни абстракции

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π½Π΅ Π΅ подходящ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° процСси: ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ са уязвимости Π² систСмитС Π·Π° виртуализация Π½Π° Π½ΠΈΠ²ΠΎ ядро, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌ позволяват Π΄Π° избягат ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° към хоста. Π•Ρ‚ΠΎ Π·Π°Ρ‰ΠΎ, Π°ΠΊΠΎ трябва Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ, ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина.

Π Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ виртуализация ΠΈ контСйнСризация ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС видят Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π°.
Има Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΠΈ, Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΠΈ Π²ΡŠΡ€Ρ…Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

Какво Π΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠ° Скскурзия Π² историята ΠΈ основни абстракции

Π₯Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈΡ‚Π΅ Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΠΈ са Π³ΠΎΡ‚ΠΈΠ½ΠΈ, Π°ΠΊΠΎ наистина искатС Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ. Въй ΠΊΠ°Ρ‚ΠΎ Π΅ възмоТно Π΄Π° сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π° Π½Π° Π½ΠΈΠ²ΠΎ страници с ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ процСсори.

Има Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈ ΠΈΠΌΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° тях ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ. БистСмитС Π·Π° контСйнСризация нямат Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€, Π½ΠΎ ΠΈΠΌΠ° Container Engine, ΠΊΠΎΠΉΡ‚ΠΎ създава ΠΈ управлява ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π’ΠΎΠ²Π° Π½Π΅Ρ‰ΠΎ Π΅ ΠΏΠΎ-Π»Π΅ΠΊΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с ядрото ΠΈΠΌΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ ΠΈΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ.

Какво сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° контСйнСризация Π½Π° Π½ΠΈΠ²ΠΎ ядро

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ процСси, са пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Π³Ρ€ΡƒΠΏΠΈ.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°: PID, ΠΌΡ€Π΅ΠΆΠ°, ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π». Има ΠΎΡ‰Π΅, Π½ΠΎ Π·Π° ΠΏΠΎ-лСсно Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ сС спрСм Π½Π° тях.

PID Namespace ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π° процСситС. ΠšΠΎΠ³Π°Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, създадСм PID Namespace ΠΈ поставим процСс Ρ‚Π°ΠΌ, Ρ‚ΠΎΠΉ става с PID 1. ОбикновСно Π² систСмитС PID 1 Π΅ systemd ΠΈΠ»ΠΈ init. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ поставим процСс Π² Π½ΠΎΠ²ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Ρ‚ΠΎΠΉ ΡΡŠΡ‰ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° PID 1.

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ пространство Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π²ΠΈ позволява Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅/ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ Π΄Π° поставитС свои собствСни интСрфСйси Π²ΡŠΡ‚Ρ€Π΅. ΠœΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»β€”ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Π³Ρ€ΡƒΠΏΠΈ: ΠΏΠ°ΠΌΠ΅Ρ‚, процСсор, IOPS, ΠΌΡ€Π΅ΠΆΠ° - ΠΎΠ±Ρ‰ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 12 настройки. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Ρ‚Π΅ сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ β€‹β€‹ΡΡŠΡ‰ΠΎ C-Π³Ρ€ΡƒΠΏΠΈ (β€žC-Π³Ρ€ΡƒΠΏΠΈβ€œ).

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ Π³Ρ€ΡƒΠΏΠΈ управляват рСсурси Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π§Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ Π³Ρ€ΡƒΠΏΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π½Π΅ трябва Π΄Π° консумира ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ количСство рСсурси.

Π—Π° ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° контСйнСризацията сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: Capabilities, Copy-on-write ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ са, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° процСс ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ. На Π½ΠΈΠ²ΠΎ ядро ​​това са просто растСрни изобраТСния с ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. НапримСр root потрСбитСлят ΠΈΠΌΠ° пълни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ всичко. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ систСмното Π²Ρ€Π΅ΠΌΠ΅: Ρ‚ΠΎΠΉ ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Time Capsule ΠΈ Ρ‚ΠΎΠ²Π° Π΅ всичко. Използвайки ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ гъвкаво Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ограничСния Π·Π° процСси ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅.

БистСмата Copy-on-write Π½ΠΈ позволява Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Docker изобраТСния ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Docker ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с Cgroups v2, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚Π°Π·ΠΈ статия сС фокусира ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π²ΡŠΡ€Ρ…Ρƒ Cgroups v1.

Но Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към историята.

ΠšΠΎΠ³Π°Ρ‚ΠΎ систСмитС Π·Π° виртуализация сС появиха Π½Π° Π½ΠΈΠ²ΠΎ ядро, Ρ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. ΠžΠ²ΡŠΡ€Ρ…Π΅Π΄ΡŠΡ‚ Π½Π° Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€Π° ΠΈΠ·Ρ‡Π΅Π·Π½Π°, Π½ΠΎ някои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ останаха:

  • Π³ΠΎΠ»Π΅ΠΌΠΈ изобраТСния: Ρ‚Π΅ Π²ΠΊΠ°Ρ€Π²Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΡƒΠΏ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ софтуСр Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ OpenVZ ΠΈ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠ°ΠΊ сС ΠΎΠΊΠ°Π·Π²Π° доста голямо;
  • Няма Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ стандарт Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ ΠΈ доставка, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ със зависимоститС остава. Има ситуации, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π²Π΅ ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π° ΠΊΠΎΠ΄ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½ΠΎ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии. МоТС Π΄Π° ΠΈΠΌΠ° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ тях.

Π—Π° Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Π΄ΠΎΠΉΠ΄Π΅ слСдващата Π΅Ρ€Π°.

Π•Ρ€Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΡΡ‚ΡŠΠΏΠΈ Π΅Ρ€Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅, философията Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с тях сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Π•Π΄ΠΈΠ½ процСс - Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
  • НиС доставямС всички зависимости, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π½Π° процСса, Π² нСговия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π’ΠΎΠ²Π° изисква рязанС Π½Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΈΡ‚Π΅ Π² микроуслуги.
  • ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ - ΠΈΠΌΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ възмоТни уязвимости, Ρ‚ΠΎ сС разпространява ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΈ Ρ‚.Π½.
  • Π‘Π»ΡƒΡ‡Π°ΠΈΡ‚Π΅ стават Π΅Ρ„ΠΈΠΌΠ΅Ρ€Π½ΠΈ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ Π»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΊΠ°Π·Π°Ρ… Π·Π° домашни Π»ΡŽΠ±ΠΈΠΌΡ†ΠΈ срСщу Π³ΠΎΠ²Π΅Π΄Π°? ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° СкзСмпляритС бяха ΠΊΠ°Ρ‚ΠΎ домашни ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈ, Π½ΠΎ сСга станаха ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŠΠΊ. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° имашС ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ - Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘Π΅Π³Π° ΠΈΠΌΠ° 100 микроуслуги, 100 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Някои ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ 2-3 Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π—Π° нас става ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΌΠ΅ всСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π’ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ-Π²Π°ΠΆΠ½ΠΎ Π·Π° нас, Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° самата услуга: ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π’ΠΎΠ²Π° промСня ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° към Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ΠŸΡ€Π΅Π· 2014-2015 Π³. Docker ΠΏΡ€ΠΎΡ†ΡŠΡ„Ρ‚ΡΠ²Π° - тСхнологията, Π·Π° която Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ сСга.

Docker ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ философията ΠΈ стандартизира ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° прилоТСнията. Използвайки Docker, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π΄Π° Π³ΠΎ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠΌ ΠΎΡ‚ Ρ‚Π°ΠΌ ΠΈ Π΄Π° Π³ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΠΌ.

ΠŸΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Docker, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ със зависимостта Π΅ Ρ€Π΅ΡˆΠ΅Π½. Docker Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚. Мисля, Ρ‡Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π° са сС сблъсквали с Π½Π΅Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚: всичко Π²ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π±ΡƒΡ‚Π½Π΅Ρ‚Π΅ Π³ΠΎ Π² производство ΠΈ Ρ‚Π°ΠΌ Ρ‚ΠΎ спира Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π‘ Docker Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·Ρ‡Π΅Π·Π²Π°. Ако Π²Π°ΡˆΠΈΡΡ‚ Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ стартира ΠΈ ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва, Ρ‚ΠΎΠ³Π°Π²Π° с голяма стСпСн Π½Π° вСроятност Ρ‚ΠΎΠΉ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π² производство ΠΈ Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Ρ‚Π°ΠΌ.

ΠžΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π·Π° Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈΡ‚Π΅

Π’ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° споровС Π·Π° Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ. Някои Ρ…ΠΎΡ€Π° смятат, Ρ‡Π΅ Docker Π½Π΅ носи Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ядрото Π½Π° Linux ΠΈ всички Π½Π΅Π³ΠΎΠ²ΠΈ процСси, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½Π΅. НапримСр, β€žΠ°ΠΊΠΎ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅, Ρ‡Π΅ Docker Π΅ Π½Π°Π΄ Π³Π»Π°Π²Π°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° ядрото Π½Π° Linux Π΅ Π½Π°Π΄ Π³Π»Π°Π²Π°Ρ‚Π°.β€œ

ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Π°ΠΊΠΎ Π½Π°Π²Π»Π΅Π·Π΅Ρ‚Π΅ ΠΏΠΎ-дълбоко, наистина ΠΈΠΌΠ° няколко Π½Π΅Ρ‰Π° Π² Docker, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ с ΡƒΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ са излишни.

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅ PID namespace. ΠšΠΎΠ³Π°Ρ‚ΠΎ поставим процСс Π² пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Ρ‚ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° PID 1. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ процСс ΠΈΠΌΠ° Π΄Ρ€ΡƒΠ³ PID, ΠΊΠΎΠΉΡ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° хоста, извън ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. НапримСр, стартирахмС Nginx Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Ρ‚ΠΎΠΉ стана PID 1 (Π³Π»Π°Π²Π΅Π½ процСс). И Π½Π° хоста ΠΈΠΌΠ° PID 12623. И Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС ΠΊΠ°ΠΆΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈ са.

Π’Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ са Cgroups. НСка Π²Π·Π΅ΠΌΠ΅ΠΌ Cgroups ΠΏΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚, тоСст Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½, броячитС ΠΈ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚: ядрото трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΠΊΠΎΠ»ΠΊΠΎ страници са Π±ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ са всС ΠΎΡ‰Π΅ свободни Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π’ΠΎΠ²Π° вСроятно Π΅ Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΎ, Π½ΠΎ Π½Π΅ съм Π²ΠΈΠΆΠ΄Π°Π» Ρ‚ΠΎΡ‡Π½ΠΈ проучвания Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ сС отразява Π½Π° производитСлността. И Π°Π· самият Π½Π΅ забСлязах, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ Π² Docker, извСднъТ ΠΏΡ€Π΅Ρ‚ΡŠΡ€ΠΏΡ рязка Π·Π°Π³ΡƒΠ±Π° Π½Π° производитСлност.

И ΠΎΡ‰Π΅ Π΅Π΄Π½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° относно производитСлността. Някои ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ядрото сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΎΡ‚ хоста към ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. По-спСциално някои ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Π•Ρ‚ΠΎ Π·Π°Ρ‰ΠΎ, Π°ΠΊΠΎ искатС Π΄Π° стартиратС Π½Π΅Ρ‰ΠΎ високопроизводитСлно Π² Docker, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° трябва ΠΏΠΎΠ½Π΅ Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Някакъв nf_conntrack Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ концСпцията Docker

Docker сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ няколко ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  1. Docker Daemon Π΅ ΡΡŠΡ‰ΠΈΡΡ‚ Container Engine; пуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.
  2. Docker CII Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Docker.
  3. Dockerfile - инструкции ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.
  4. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚.
  5. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
  6. Π Π΅Π³ΠΈΡΡ‚ΡŠΡ€ΡŠΡ‚ Π½Π° Docker Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° изобраТСния.

Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

Какво Π΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠ° Скскурзия Π² историята ΠΈ основни абстракции

Docker Π΄Π΅ΠΌΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Docker_host ΠΈ стартира ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Има ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ: ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, изтСглянС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Docker daemon ΠΎΡ‚ΠΈΠ²Π° Π² систСмния Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ ΠΈ Π³ΠΈ изпълнява. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Docker ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΊΠ°ΠΊΡ‚ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ (Π΄ΠΎ Unix сокСт), Ρ‚Π°ΠΊΠ° ΠΈ Ρ‡Ρ€Π΅Π· TCP ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ хост.

НСка Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· всСки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π”ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½ - Ρ‚ΠΎΠ²Π° Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° част, тя Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° хост ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π°: изтСгля изобраТСния ΠΈ стартира ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΎΡ‚ тях, създава ΠΌΡ€Π΅ΠΆΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΡΡŠΠ±ΠΈΡ€Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ β€žΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π·β€œ, Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ ΠΏΡ€Π°Π²ΠΈ ΠΈ Ρ‚ΠΎΠ²Π°.

Docker CLI β€” Docker клиСнтска част, ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π΅ΠΌΠΎΠ½Π°. ΠŸΠΎΠ²Ρ‚Π°Ρ€ΡΠΌ, ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π΅ само Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π½ΠΎ ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Основни команди:

docker ps - ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π° хоста Π½Π° Docker.
Π΄ΠΎΠΊΠ΅Ρ€ изобраТСния - ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ изобраТСния, ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ.
docker search <> - Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² систСмния Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€.
docker pull <> - изтСглянС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ систСмния Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π°.
Π΄ΠΎΠΊΠ΅Ρ€ компилация < > - ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.
docker run <> - стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
docker rm <> - ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ <> - Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ
docker start/stop/restart <> - Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

Ако Π²Π»Π°Π΄Π΅Π΅Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ стС ΡƒΠ²Π΅Ρ€Π΅Π½ΠΈ Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ, считайтС сС Π·Π° 70% ΠΎΠΏΠΈΡ‚Π΅Π½ Π² Docker Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π».

Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ» - инструкции Π·Π° създаванС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠŸΠΎΡ‡Ρ‚ΠΈ всяка ΠΊΠΎΠΌΠ°Π½Π΄Π° с инструкции Π΅ Π½ΠΎΠ² слой. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Какво Π΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠ° Скскурзия Π² историята ΠΈ основни абстракции

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Dockerfile: ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ отляво, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ отдясно. Всяка ΠΊΠΎΠΌΠ°Π½Π΄Π°, която Π΅ Ρ‚ΡƒΠΊ (ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ написана Π² Dockerfile) създава Π½ΠΎΠ² слой Π² Image.

Π”ΠΎΡ€ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ лявата страна, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ сС случва. КазвамС: β€žΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΠ° Π·Π° Π½Π°Ρβ€œ - Ρ‚ΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ слой. β€žΠΠ°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π°β€œ Π΅ Π΄Ρ€ΡƒΠ³ слой ΠΈ Ρ‚.Π½. Π‘Π»ΠΎΠ΅Π²Π°Ρ‚Π° Ρ‚ΠΎΡ€Ρ‚Π° ΠΏΡ€Π°Π²ΠΈ ΠΆΠΈΠ²ΠΎΡ‚Π° ΠΏΠΎ-лСсСн. Ако създам Π΄Ρ€ΡƒΠ³ Dockerfile ΠΈ промСня Π½Π΅Ρ‰ΠΎ Π² послСдния Ρ€Π΅Π΄ - стартирам Π½Π΅Ρ‰ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ "python" "main.py" ΠΈΠ»ΠΈ инсталирам зависимости ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ Ρ„Π°ΠΉΠ» - Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ слоСвС Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ кСш.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ - Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Π° ΠΎΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°; ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ сС стартират ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Docker ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (сякаш Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с deb ΠΈΠ»ΠΈ rpm ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ), Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Π΅ rpm ΠΏΠ°ΠΊΠ΅Ρ‚. Π§Ρ€Π΅Π· yum install ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° инсталирамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π΄Π° Π³ΠΎ ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅ΠΌ, Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠΌ. Π’ΡƒΠΊ Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡŠΡ‰ΠΎΡ‚ΠΎ: ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ сС стартират ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ сС Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° Docker (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° yum, Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅) ΠΈ всяко ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ° SHA-256 Ρ…Π΅Ρˆ, ΠΈΠΌΠ΅ ΠΈ Ρ‚Π°Π³.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΎ спорСд инструкциитС ΠΎΡ‚ Dockerfile. Всяка инструкция ΠΎΡ‚ Dockerfile създава Π½ΠΎΠ² слой. Π‘Π»ΠΎΠ΅Π²Π΅Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

Π”ΠΎΠΊΠ΅Ρ€ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° изобраТСния Π½Π° Docker. Подобно Π½Π° ОБ, Docker ΠΈΠΌΠ° ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ стандартСн Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ - dockerhub. Но ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ своС собствСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, свой собствСн Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° Docker.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ - ΠΊΠ°ΠΊΠ²ΠΎ сС стартира ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π‘ΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ спорСд инструкциитС ΠΎΡ‚ Dockerfile, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ стартирамС ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ трябва Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ - Π΅Π΄ΠΈΠ½ процСс. Π‘Π»ΡƒΡ‡Π²Π° сС Π΄Π° трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π²Π° процСса, Π½ΠΎ Ρ‚ΠΎΠ²Π° донякъдС ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈ Π½Π° идСологията Π½Π° Docker.

Π˜Π·ΠΈΡΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ β€žΠ΅Π΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΡ†Π΅Ρβ€œ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с PID пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ процСс с PID 1 стартира Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π°, Π°ΠΊΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡƒΠΌΡ€Π΅, Ρ‚ΠΎΠ³Π°Π²Π° ΡƒΠΌΠΈΡ€Π° ΠΈ цСлият ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Ако Ρ‚Π°ΠΌ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π΄Π²Π° процСса: Сдиният Π΅ ΠΆΠΈΠ², Π° другият Π΅ ΠΌΡŠΡ€Ρ‚ΡŠΠ², Ρ‚ΠΎΠ³Π°Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΆΠΈΠ²Π΅Π΅. Но Ρ‚ΠΎΠ²Π° Π΅ Π²ΡŠΠΏΡ€ΠΎΡ Π½Π° Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° тях Π² Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ.

Π—Π° Π΄Π° ΠΏΡ€ΠΎΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈ ΠΏΡŠΠ»Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π½Π° курса, моля, послСдвайтС Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°: β€œΠ”ΠΎΠΊΠ΅Ρ€ Π²ΠΈΠ΄Π΅ΠΎ курс".

Автор: ΠœΠ°Ρ€ΡΠ΅Π» Π˜Π±Ρ€Π°Π΅Π², сСртифициран администратор Π½Π° Kubernetes, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ²Π°Ρ‰ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π² Southbridge, Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° курсовС ΠΏΠΎ Slurm.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€