Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

Docker. Π—Π°Ρ‡Π΅ΠΌ ΠΈ ΠΊΠ°ΠΊ

Π•ΡΡ‚ΡŒ мноТСство прСкрасных ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ docker-ΠΎΠΌ. Π•ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ этому Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ. Π― ΠΏΠΈΡˆΡƒ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ docker, Π½ΠΎ ΠΈ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½ стоит Π»ΠΈ Π΅ΠΌΡƒ это Π·Π½Π°Ρ‚ΡŒ.

Π― ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡƒΡΠΊΠ°ΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тСхничСскиС подробности, Π° ΠΊΠΎΠ΅ Π³Π΄Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽ упрощСния. Если Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ docker – Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ….

Начну я с описания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρƒ вас Π΅ΡΡ‚ΡŒ сСрвСрный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π’Ρ‹ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΈΠΊΠΎΠ², скриптов ΠΈ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ установкС. А ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΡƒΠΉΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²Ρ€ΠΎΠ΄Π΅: Β«Ρƒ мСня Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Β», «ваш скрипт ΡƒΠΏΠ°Π» Π½Π° сСрСдинС β€” Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒΒ», «я ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π» порядок шагов Π² инструкции ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΈΠ΄Ρ‚ΠΈ дальшС» ΠΈ Ρ‚. ΠΏ.

Всё усугубляСтся Ссли ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Ρ‚ΠΈΡ€Π°ΠΆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈ вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρƒ вас сотни ΠΈΠ»ΠΈ тысячи ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Π΅ΠΉ. И становится Π΅Ρ‰Π΅ слоТнСС, Ссли Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ нСобходимости установки Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ‚ΠΈΡ€Π°ΠΆΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. ΠŸΡƒΡΡ‚ΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ 5 (ΠΈΠ»ΠΈ 50) ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… сСрвСров. Π”Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΄ΠΎΠ»Π³ΠΎ, Π΄ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ΠΎ ошибкам.

НаконСц, Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Ρƒ вас ΡƒΠΆΠ΅ нСсколько. И всС ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ тСхнологичСский стэк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” java-tomcat-nginx-postgre). Но ΠΏΡ€ΠΈ этом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π²Ρ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²ΠΎΠΌ сСрвСрС ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Ρ‚Π°ΠΊ Π²Π·ΡΡ‚ΡŒ ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ β€” Β«Ρ…ΠΎΡ‡Ρƒ сСрвСр, ΠΊΠ°ΠΊ Π² ΠΈΠ³Ρ€Π΅ странники Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π²Π΅Π± Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌΒ»

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Установочный скрипт

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ я ΡƒΠΆΠ΅ упомянул β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ установит всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° всСх Π½ΡƒΠΆΠ½Ρ‹Ρ… сСрвСрах. ( Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ простым sh Ρ„Π°ΠΉΠ»ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ слоТным, созданным с использованиСм ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов).

НСдостатки этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” Ρ…Ρ€ΡƒΠΏΠΊΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ ошибкам. Как Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π΅ Π±Ρ‹Π» написан скрипт, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ машинС ΠΎΠ½ ΡƒΠΏΠ°Π΄Ρ‘Ρ‚. И послС этого падСния машина фактичСски окаТСтся «испорчСнной» β€” просто Ρ‚Π°ΠΊ Β«ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΒ» Ρ‚Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрипт успСл Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ρƒ вашСго ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π΅ получится.

ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сСрвисы

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” использованиС ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов. Π’Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ устанавливаСтС Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Π—Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ image. И Π΄Π°Π»Π΅Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π²Π°ΠΌ Π½Π°Π΄ΠΎ.

НСдостатка здСсь Π΄Π²Π°. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, vendor-lock-in. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ своС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°ΠΊΠ°, Ρ‡Ρ‚ΠΎ Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ потСрям нСсогласных с этим Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΎΠ±Π»Π°ΠΊΠ° ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ (ΠΈ Π΄Π°ΠΆΠ΅ Β«bare-metalΒ») сСрвСра прСдоставляСмыС ΠΎΠ±Π»Π°ΠΊΠ°ΠΌΠΈ Π½Π° сСгодняшний дСнь сильно ΡƒΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ dedicated сСрвСрам.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹

Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” использованиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ нСдостатки:

Π Π°Π·ΠΌΠ΅Ρ€ β€” Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно большим. ΠŸΡ€ΠΈ этом, любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ вСсь ΠΎΠ±Ρ€Π°Π· Π·Π°Π½ΠΎΠ²ΠΎ.

Π‘Π»ΠΎΠΆΠ½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ совмСстным использованиСм сСрвСрных рСсурсов β€” Π½Π΅ всС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ совмСстноС использованиС памяти ΠΈΠ»ΠΈ CPU. Π’Π΅ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Π΄ΠΎΠΊΠ΅Ρ€Π° β€” контСйнСризация

И Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ появляСтся docker, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ docker

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Π°

Π‘Π½Π°Ρ‡Π°Π»Π° создаСтся docker image (ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π·). Он создаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ для этого ΠΏΠΈΡˆΠ΅Ρ‚Π΅.
ΠžΠ±Ρ€Π°Π·Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, для создания своСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΌΡ‹ Π±Π΅Ρ€Ρ‘ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈ наслСдуСмся ΠΎΡ‚ Π½Π΅Π³ΠΎ.
Π§Π°Ρ‰Π΅ всСго ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ ΠΎΠ±Ρ€Π°Π· Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится Ρ‚Π° ΠΈΠ»ΠΈ иная вСрсия linux. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Ρ‚ΠΎΠ³Π΄Π° начинаСтся ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ:

ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² наш ΠΎΠ±Ρ€Π°Π· Π»ΡŽΠ±Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ COPY.

Π”ΠΎΠΊΠ΅Ρ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². НапримСр, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° USER roman Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π΄ΠΎΠΊΠ΅Ρ€Ρƒ Ρ‡Ρ‚ΠΎ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ· ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ roman. А Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ENTRYPOINT [β€œ/opt/tomcat/catalina.sh”] Π·Π°Π΄Π°Π΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ стартС.

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ β€” Π² этом Π½Π΅Ρ‚ смысла. Π—Π΄Π΅ΡΡŒ Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ: Π²Ρ‹ создаётС Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ скрипт, Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Dockerfile ΠΈ запускаСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker build, docker выполняСт скрипт ΠΈ создаСт image.

Если Π² процСссС Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ошибки, Π΄ΠΎΠΊΠ΅Ρ€ ΠΎ Π½ΠΈΡ… сообщаСт ΠΈ Π²Ρ‹ ΠΈΡ… исправляСтС. Π’ΠΎ Π΅ΡΡ‚ΡŒ исправлСниС скрипта происходит Π½Π° этапС создания image. На этапС установки скрипт ΡƒΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

Когда Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ docker image Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° любом физичСском сСрвСрС, Π³Π΄Π΅ установлСн Π΄ΠΎΠΊΠ΅Ρ€. Если image – это Ρ‚ΠΈΡ€Π°ΠΆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Β«ΠΌΠ°ΡˆΠΈΠ½Ρ‹Β», Ρ‚ΠΎ container это ΡƒΠΆΠ΅ сама «машина», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ.

Π’Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” ΠΏΡ€ΠΈ создании ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ· image, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈ создании ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ· image. Π’Π°ΠΊ Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°. НапримСр, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρƒ web-сСрвСра Π΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя.

Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ считаСтся Β«ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°Β» Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ постоянно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ сСрвСрного процСсса. Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», этот процСсс Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ физичСского сСрвСра ΠΈ чСстно рСгулируСтся установлСнной Ρ‚Π°ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π΄ΠΎΠΊΠ΅Ρ€Π° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ процСссорами. ИспользованиС рСсурсов становится простым ΠΈ эффСктивным.

Union filesystem

Ок β€” ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ процСссор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ эффСктивно. А ΠΊΠ°ΠΊ насчёт Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы? Π’Π΅Π΄ΡŒ Ссли Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π΄ΠΎΠΊΠ΅Ρ€Π° своя собствСнная копия ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами β€” тяТСловСсныС ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅.

На самом Π΄Π΅Π»Π΅ Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ это Π½Π΅ Ρ‚Π°ΠΊ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ 100500 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², основанных Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ этой систСмы Π±ΡƒΠ΄ΡƒΡ‚ скачаны Π΄ΠΎΠΊΠ΅Ρ€ΠΎΠΌ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π­Ρ‚ΠΎ достигаСтся Π·Π° счёт использования Π΄ΠΎΠΊΠ΅Ρ€ΠΎΠΌ union file system.

Union file system состоит ΠΈΠ· слоёв (layers). Π‘Π»ΠΎΠΈ ΠΊΠ°ΠΊ Π±Ρ‹ Π½Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. НСкоторыС слои Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ записи. НапримСр, всС наши ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ записи слои, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находятся нСизмСняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Для измСняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный слой. ЕстСствСнно, Π΄ΠΎΠΊΠ΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π½ΠΎ ΠΈ для Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠ±Ρ‰ΠΈΡ… частСй ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы Π½Π° основС ΠΎΠ±Ρ‰ΠΈΡ… Β«ΠΏΡ€Π΅Π΄ΠΊΠΎΠ²Β» ΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ².

Container registry

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ docker image состоит ΠΈΠ· слоёв. И Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° наш сСрвСр Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ слои, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° Π½Ρ‘ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚. Π˜Π½Π°Ρ‡Π΅ для установки 100 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², основанных Π½Π° Ubuntu ΠΌΡ‹ скачаСм Ubuntu Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² 100 Ρ€Π°Π·. Π—Π°Ρ‡Π΅ΠΌ?

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π”ΠΎΠΊΠ΅Ρ€ прСдоставляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвис, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ docker registry. Docker registry ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для хранСния ΠΈ дистрибуции Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Π‘ΠΎΠ±Ρ€Π°Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· (ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠ±Ρ€Π°Π·Π°) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² docker registry. БоотвСтствСнно, ΠΏΠΎΡ‚ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π½Π° любой сСрвСр. Главная Ρ„ΠΈΡˆΠΊΠ° здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ физичСски ΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ слои, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹.

НапримСр, Ссли Π²Ρ‹ создали Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠ±Ρ€Π°Π·Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ помСняли нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚ΠΎ Π² registry Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слои, содСрТащиС эти Ρ„Π°ΠΉΠ»Ρ‹.

Аналогично, Ссли сСрвСр ΠΊΠ°Ρ‡Π°Π΅Ρ‚ ΠΈΠ· registry ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·, скачаны Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слои, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π° сСрвСрС.
Docker registry сущСствуСт ΠΈ ΠΊΠ°ΠΊ общСдоступный сСрвис ΠΈ ΠΊΠ°ΠΊ open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, доступный для скачивания ΠΈ установки Π½Π° собствСнной инфрастуктурС.

ИспользованиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… статус ΠΈ Ρ‚ Π΄. ΠŸΡ€ΠΈ создании ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. НапримСр, ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€ автоматичСски Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Ссли Ρ‚ΠΎΡ‚ ΡƒΠΏΠ°Π΄Ρ‘Ρ‚.

ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ

Если ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π° сСрвСрС нСсколько, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Для этого Π΅ΡΡ‚ΡŒ тСхнология docker compose. Она сущСствуСт ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄ΠΎΠΊΠ΅Ρ€Π° ΠΈ просто позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π½Π° основС Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ описаны ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΈΡ… взаимосвязи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ A ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ 5432 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° B)

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎΠΊΠ΅Ρ€ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ пСрСчислСнных Π²Ρ‹ΡˆΠ΅ Π·Π°Π΄Π°Ρ‡:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Docker: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ экскурс Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ основныС абстракции

10 августа Π² Π‘Π»Ρ‘Ρ€ΠΌ стартовал видСокурс ΠΏΠΎ Docker, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ β€” ΠΎΡ‚ основных абстракций Π΄ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сСти.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± истории появлСния Docker ΠΈ Π΅Π³ΠΎ основных абстракциях: Image, Cli, Dockerfile. ЛСкция рассчитана Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², поэтому вряд Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ интСрСсна ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. Π—Π΄Π΅ΡΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡ€ΠΎΠ²ΠΈ, аппСндикса ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ погруТСния. Π‘Π°ΠΌΡ‹Π΅ основы.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Docker

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Docker ΠΈΠ· Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Docker β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ развёртывания ΠΈ управлСния прилоТСниями Π² срСдах с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Из этого опрСдСлСния Π½ΠΈΡ‡Π΅Π³ΠΎ нСпонятно. ОсобСнно нСпонятно, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Β«Π² срСдах с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈΒ». Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, вСрнёмся Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅. Начнём с эпохи, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я условно Π½Π°Π·Ρ‹Π²Π°ΡŽ Β«ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ эрой».

ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π°Ρ эра

ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π°Ρ эра β€” это Π½Π°Ρ‡Π°Π»ΠΎ 2000-Ρ…, ΠΊΠΎΠ³Π΄Π° всС прилоТСния Π±Ρ‹Π»ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌΠΈ, с ΠΊΡƒΡ‡Π΅ΠΉ зависимостСй. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° шла Π΄ΠΎΠ»Π³ΠΎ. ΠŸΡ€ΠΈ этом сСрвСров Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΌΡ‹ всС ΠΈΡ… Π·Π½Π°Π»ΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ»ΠΈ. Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π±Π°Π²Π½ΠΎΠ΅ сравнСниС:

Pets β€” это домашниС ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅. Π’ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ эрС ΠΌΡ‹ ΠΎΡ‚Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ ΠΊ своим сСрвСрам, ΠΊΠ°ΠΊ ΠΊ домашним ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ, Ρ…ΠΎΠ»ΠΈΠ»ΠΈ ΠΈ лСлСяли, ΠΏΡ‹Π»ΠΈΠ½ΠΊΠΈ сдували. А для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ управлСния рСсурсами использовали Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ: Π±Ρ€Π°Π»ΠΈ сСрвСр ΠΈ ΠΏΠΈΠ»ΠΈΠ»ΠΈ Π½Π° нСсколько Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, Ρ‚Π΅ΠΌ самым обСспСчивая ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ окруТСния.

БистСмы Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°

ΠŸΡ€ΠΎ систСмы Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ навСрняка всС ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ: VMware, VirtualBox, Hyper-V, Qemu KVM ΠΈ Ρ‚. Π΄. Они ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами, Π½ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΈ минусы. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½ΡƒΠΆΠ΅Π½ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€. А Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ β€” это ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄ рСсурсов. Π”Π° ΠΈ сама Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ цСлая ΠΌΠ°Ρ…ΠΈΠ½Π° β€” тяТСлый ΠΎΠ±Ρ€Π°Π·, Π½Π° Π½Ρ‘ΠΌ опСрационная систСма, Nginx, Apache, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ MySQL. ΠžΠ±Ρ€Π°Π· большой, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Как слСдствиС, Ρ€Π°Π±ΠΎΡ‚Π° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, создали систСмы Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра.

БистСмы Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ систСмы OpenVZ, Systemd-nspawn, LXC. Π―Ρ€ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” LXC (Linux Containers).

LXC β€” систСма Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы для запуска Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… экзСмпляров ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΠ·Π»Π΅. LXC Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π° создаёт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ с собствСнным пространством процСссов ΠΈ сСтСвым стСком.

По сути LXC создаёт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Π’ Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для изолирования процСссов: Π² систСмах Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра находят уязвимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Π»Π΅Π·Ρ‚ΠΈ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° хост. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ.

Различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° схСмС.
Π‘Ρ‹Π²Π°ΡŽΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρ‹, Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Ρ… ОБ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

Β«Π–Π΅Π»Π΅Π·Π½Ρ‹Π΅Β» Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρ‹ β€” это крутая ΡˆΡ‚ΡƒΠΊΠ°, Ссли Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ страниц памяти, процСссоров.

Π•ΡΡ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρ‹ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΎ Π½ΠΈΡ… ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ дальшС. Π’ систСмах ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Π½Π΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ Container Engine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаёт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ управляСт ΠΈΠΌΠΈ. Π¨Ρ‚ΡƒΠΊΠ° это Π±ΠΎΠ»Π΅Π΅ лСгковСсная, поэтому Π·Π° счСт Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ядром ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄ мСньшС, ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ‚ совсСм.

Π§Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, β€” это Namespaces ΠΈ Control Groups.

Namespaces: PID, Networking, Mount ΠΈ User. Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘, Π½ΠΎ для простоты понимания остановимся Π½Π° этих.

PID Namespace ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ процСссы. Когда ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, создаём PID Namespace, ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Ρ‚ΡƒΠ΄Π° процСсс, Ρ‚ΠΎ ΠΎΠ½ становится с PID 1. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² систСмах PID 1 β€” это systemd ΠΈΠ»ΠΈ init. БоотвСтствСнно, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ процСсс Π² Π½ΠΎΠ²Ρ‹ΠΉ namespace, ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ PID 1.

Networking Namespace позволяСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ/ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅Ρ‚ΡŒ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ свои интСрфСйсы. Mount β€” это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. User β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡŽΠ·Π΅Ρ€Π°ΠΌ.

Control Groups: Memory, CPU, IOPS, Network β€” всСго ΠΎΠΊΠΎΠ»ΠΎ 12 настроСк. Π˜Π½Π°Ρ‡Π΅ ΠΈΡ… Π΅Ρ‰Ρ‘ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Cgroups (Β«CΠΈ-Π³Ρ€ΡƒΠΏΠΏΡ‹Β»).

Control Groups ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ рСсурсами для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π§Π΅Ρ€Π΅Π· Control Groups ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ большС ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ количСства рСсурсов.

Π§Ρ‚ΠΎΠ±Ρ‹ контСйнСризация ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: Capabilities, Copy-on-write ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Capabilities β€” это ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ процСссу, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π° Ρ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. На ΡƒΡ€ΠΎΠ²Π½Π΅ ядра это просто Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ со мноТСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ root ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ всё. Π‘Π΅Ρ€Π²Π΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ систСмноС врСмя: Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ capabilities Π½Π° Time Capsule, ΠΈ всё. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ограничСния для процСссов, ΠΈ Ρ‚Π΅ΠΌ самым ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ сСбя.

БистСма Copy-on-write позволяСт Π½Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ Docker, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ эффСктивно.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Docker ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Cgroups v2, поэтому Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Cgroups v1.

Но вСрнёмся ΠΊ истории.

Когда появились систСмы Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра, ΠΈΡ… Π½Π°Ρ‡Π°Π»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠžΠ²Π΅Ρ€Ρ…Π΅Π΄ Π½Π° Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ ΠΏΡ€ΠΎΠΏΠ°Π», Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ:

Π§Ρ‚ΠΎΠ±Ρ‹ всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΡˆΠ»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ эра.

Π­Ρ€Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Когда наступила Π­Ρ€Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², смСнилась философия Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ:

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΡ€ΠΎ pets vs cattle? РаньшС инстансы Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ домашним ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стали ΠΊΠ°ΠΊ cattle β€” скот. РаньшС Π±Ρ‹Π» ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ β€” ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ это 100 микросСрвисов, 100 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π£ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ 2-3 Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Нам становится Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Нам скорСС Π²Π°ΠΆΠ½Π° Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ самого сСрвиса: Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π­Ρ‚ΠΎ мСняСт ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅.

Π’ 2014-2015 Π³ΠΎΠ΄Π°Ρ… случился расцвСт Docker β€” Ρ‚ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ сСйчас Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ.

Docker ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ ΠΈ стандартизировал ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ прилоТСния. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Docker ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°, Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ.

Π’ Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΌΡ‹ Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅, поэтому Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° зависимостСй. Docker Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Π½Π΅Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ: Ρƒ тСбя всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΡƒΡˆΠΈΡˆΡŒ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½, Ρ‚Π°ΠΌ это пСрСстаСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π‘ Docker эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΡƒΡ…ΠΎΠ΄ΠΈΡ‚. Если Ρ‚Π²ΠΎΠΉ Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ запускаСтся ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ трСбуСтся Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ с большой Π΄ΠΎΠ»Π΅ΠΉ вСроятности ΠΎΠ½ запустится Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ ΠΈ Ρ‚Π°ΠΌ сдСлаСт Ρ‚ΠΎ ΠΆΠ΅ самоС.

ΠžΡ‚ΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎ ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄ постоянно ΠΈΠ΄ΡƒΡ‚ споры. ΠšΡ‚ΠΎ-Ρ‚ΠΎ считаСт, Ρ‡Ρ‚ΠΎ Docker Π½Π΅ нСсёт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ядро Linux ΠΈ всС Π΅Π³ΠΎ процСссы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Мол, «Ссли Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Docker β€” это ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΈ ядро Linux ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄Β».

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ, Ρ‚ΠΎ Π² Docker ΠΈ ΠΏΡ€Π°Π²Π΄Π° Π΅ΡΡ‚ΡŒ нСсколько Π²Π΅Ρ‰Π΅ΠΉ, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с натяТкой ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ β€” это PID namespace. Когда ΠΌΡ‹ Π² namespace ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ процСсс, Π΅ΠΌΡƒ присваиваСтся PID 1. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Ρƒ этого процСсса Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ PID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π° хостовом namespace, Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. НапримСр, ΠΌΡ‹ запустили Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Nginx, ΠΎΠ½ стал PID 1 (мастСр-процСсс). А Π½Π° хостС Ρƒ Π½Π΅Π³ΠΎ PID 12623. И слоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, насколько это ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄.

Вторая ΡˆΡ‚ΡƒΠΊΠ° β€” это Cgroups. Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Cgroups ΠΏΠΎ памяти, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΡ€ΠΈ Π΅Ρ‘ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‚ΡΡ счётчики, memory accounting: ядру Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, сколько страниц Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ, Π° сколько Π΅Ρ‰Ρ‘ свободно для этого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄, Π½ΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… исслСдований ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, я Π½Π΅ встрСчал. И сам Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² Docker, Π²Π΄Ρ€ΡƒΠ³ Ρ€Π΅Π·ΠΊΠΎ тСряло Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

И Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. НСкоторыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ядра ΠΏΡ€ΠΎΠΊΠΈΠ΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ с хоста Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π’ частности, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСтСвыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² Docker Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅Ρ‚ΡŒ, Ρ‚ΠΎ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π½Π°Π΄ΠΎ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Какой-Π½ΠΈΠ±ΡƒΠ΄ΡŒ nf_conntrack, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ.

О ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Docker

Docker состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ это выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

На Docker_host Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Docker daemon, запускаСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Π•ΡΡ‚ΡŒ Client, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: собСри ΠΎΠ±Ρ€Π°Π·, скачай ΠΎΠ±Ρ€Π°Π·, запусти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Docker daemon Ρ…ΠΎΠ΄ΠΈΡ‚ Π² registry ΠΈ выполняСт ΠΈΡ…. Docker-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ локально (ΠΊ юникс-сокСту), ΠΈ ΠΏΠΎ TCP с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ хоста.

ΠŸΡ€ΠΎΠΉΠ΄Ρ‘ΠΌΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ.

Docker daemon (Π΄Π΅ΠΌΠΎΠ½) β€” это сСрвСрная Ρ‡Π°ΡΡ‚ΡŒ, ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° хост-машинС: скачиваСт ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ запускаСт ΠΈΠ· Π½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, создаёт ΡΠ΅Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, собираСт Π»ΠΎΠ³ΠΈ. Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ «создай ΠΎΠ±Ρ€Π°Π·Β», этим Ρ‚ΠΎΠΆΠ΅ занимаСтся Π΄Π΅ΠΌΠΎΠ½.

Docker CLI β€” клиСнтская Ρ‡Π°ΡΡ‚ΡŒ Docker, консольная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡŽ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально, Π½ΠΎ ΠΈ ΠΏΠΎ сСти.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

docker ps β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСйчас Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½Π° Docker-хостС.
docker images β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹, скачанныС локально.
docker search <> β€” поиск ΠΎΠ±Ρ€Π°Π·Π° Π² registry.
docker pull <> β€” ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ΠΈΠ· registry Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ.
docker build β€” ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·.
docker run <> β€” запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
docker rm <> β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
docker logs <> β€” Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
docker start/stop/restart <> β€” Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ

Если Π²Ρ‹ освоитС эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ считайтС, Ρ‡Ρ‚ΠΎ Π½Π° 70% освоили Docker Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Dockerfile β€” инструкция для создания ΠΎΠ±Ρ€Π°Π·Π°. ΠŸΠΎΡ‡Ρ‚ΠΈ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° инструкции β€” Π½ΠΎΠ²Ρ‹ΠΉ слой. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ выглядит Dockerfile: слСва ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, справа β€” Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π°, Ρ‡Ρ‚ΠΎ здСсь Π΅ΡΡ‚ΡŒ (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² Dockerfile), создаёт Π½ΠΎΠ²Ρ‹ΠΉ слой Π² Image.

Π”Π°ΠΆΠ΅ глядя Π½Π° Π»Π΅Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит. ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ: «создай Π½Π°ΠΌ ΠΏΠ°ΠΏΠΊΡƒΒ» β€” это ΠΎΠ΄ΠΈΠ½ слой. Β«Π‘Π΄Π΅Π»Π°ΠΉ ΠΏΠ°ΠΏΠΊΡƒ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉΒ» β€” это Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ слой, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π‘Π»ΠΎΡ‘Π½Ρ‹ΠΉ ΠΏΠΈΡ€ΠΎΠ³ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь. Если я создам Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Dockerfile ΠΈ Π² послСднСй строчкС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ измСню β€” Π·Π°ΠΏΡƒΡ‰Ρƒ Π½Π΅ «python» «main.py», Π° Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽ зависимости ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° β€” Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ слои Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹, ΠΊΠ°ΠΊ кСш.

Image β€” это ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Π° Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Если ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Docker с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° (ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с deb ΠΈΠ»ΠΈ rpm-ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ), Ρ‚ΠΎ image β€” это ΠΏΠΎ сути rpm-ΠΏΠ°ΠΊΠ΅Ρ‚. Π§Π΅Ρ€Π΅Π· yum install ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π½Π°ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ. Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС: ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Π° Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΎΠ½ΠΈ хранятся Π² Docker registry (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с yum, Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ), ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ image ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…Π΅Ρˆ SHA-256, имя ΠΈ Ρ‚Π΅Π³.

Image собираСтся ΠΏΠΎ инструкции ΠΈΠ· Dockerfile. КаТдая инструкция ΠΈΠ· Dockerfile создаёт Π½ΠΎΠ²Ρ‹ΠΉ слой. Π‘Π»ΠΎΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

Docker registry β€” это Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ОБ, Ρƒ Docker Π΅ΡΡ‚ΡŒ общСдоступный стандартный рССстр β€” dockerhub. Но ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ свой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, свой Docker registry.

Container β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ запускаСтся ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Π°. По инструкции ΠΈΠ· Dockerfile собрали ΠΎΠ±Ρ€Π°Π·, Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΅Π³ΠΎ ΠΈΠ· этого ΠΎΠ±Ρ€Π°Π·Π° запускаСм. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. ΠŸΡ€ΠΈ этом ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ β€” ΠΎΠ΄ΠΈΠ½ процСсс. БлучаСтся, Ρ‡Ρ‚ΠΎ приходится Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²Π° процСсса, Π½ΠΎ это нСсколько ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ Docker.

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ β€” ΠΎΠ΄ΠΈΠ½ процСсс» связано с PID Namespace. Когда Π² Namespace запускаСтся процСсс с PID 1, Ссли ΠΎΠ½ Π²Π΄Ρ€ΡƒΠ³ ΡƒΠΌΡ€Ρ‘Ρ‚, Ρ‚ΠΎ вСсь ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ‚ΠΎΠΆΠ΅ ΡƒΠΌΠΈΡ€Π°Π΅Ρ‚. Если ΠΆΠ΅ Ρ‚Π°ΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ Π΄Π²Π° процСсса: ΠΎΠ΄ΠΈΠ½ ΠΆΠΈΠ²Ρ‘Ρ‚, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΌΠ΅Ρ€, Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ всё Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ ΠΆΠΈΡ‚ΡŒ. Но это ΠΊ вопросу Best Practices, ΠΌΡ‹ ΠΏΡ€ΠΎ Π½ΠΈΡ… ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ….

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ особСнности ΠΈ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ курса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС: «ВидСокурс ΠΏΠΎ DockerΒ».

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Понимая Docker

Π£ΠΆΠ΅ нСсколько мСсяцСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ docker для структуризации процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ/доставки Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ читатСлям Β«Π₯Π°Π±Ρ€Π°Ρ…Π°Π±Ρ€Π°Β» ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π²Π²ΠΎΠ΄Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎ docker β€” Β«Understanding dockerΒ».

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€?

Π”ΠΎΠΊΠ΅Ρ€ β€” это открытая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, доставки ΠΈ эксплуатации ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Docker Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для Π±ΠΎΠ»Π΅Π΅ быстрого выкладывания Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ docker Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ вашСй инфраструктуры ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с инфраструктурой ΠΊΠ°ΠΊ управляСмым ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Docker ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ быстрСС, быстрСС Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, быстрСС Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя ΠΌΠ΅ΠΆΠ΄Ρƒ написаниСм ΠΊΠΎΠ΄Π° ΠΈ запуска ΠΊΠΎΠ΄Π°. Docker Π΄Π΅Π»Π°Π΅Ρ‚ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ лСгковСсной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ процСссы ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ваши прилоТСния.

Π’ своСм ядрС docker позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ практичСски любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, бСзопасно ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. БСзопасная изоляция позволяСт Π²Π°ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ хостС ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ЛСгковСсная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°, позволяСт Π²Π°ΠΌ Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ большС ΠΎΡ‚ вашСго ΠΆΠ΅Π»Π΅Π·Π°.

Для Ρ‡Π΅Π³ΠΎ я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ docker?

БыстроС Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Docker прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Docker позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с прилоТСниями ΠΈ сСрвисами. Π§Ρ‚ΠΎ Π² послСдствии позволяСт ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с процСссом постоянной ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ выкладывания (continuous integration and deployment workflow).

НапримСр, ваши Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄ локально ΠΈ дСлятся своим стСком Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π°Π±ΠΎΡ€ΠΎΠΌ docker ΠΎΠ±Ρ€Π°Π·ΠΎΠ²) с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ. Когда ΠΎΠ½ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹, ΠΎΡ‚Ρ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π° Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΡƒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π»ΡŽΠ±Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ тСсты. Π‘ тСстовой ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½.

Π‘ΠΎΠ»Π΅Π΅ простоС Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅

Основанная Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… docker ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° позволят Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° вашСй локальной машинС, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°ΠΊ ΠΈ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Π² Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π΅, Ρ‚Π°ΠΊ ΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ΅.

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ лСгковСсная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° docker позволяСт Π»Π΅Π³ΠΊΠΎ динамичСски ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вашСй Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ docker, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ³Π°ΡΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ сСрвисы. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ docker позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ВысокиС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ большС ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ

Docker лСгковСсСн ΠΈ быстр. Он прСдоставляСт ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΡƒΡŽ, Ρ€Π΅Π½Ρ‚Π°Π±Π΅Π»ΡŒΠ½ΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ машинам Π½Π° основС Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°. Он особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² условиях высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создания собствСнного ΠΎΠ±Π»Π°ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°-ΠΊΠ°ΠΊ-сСрвис (platform-as-service). Но ΠΎΠ½ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΈ срСдних ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ хочСтся ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ большС ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ рСсурсов.

Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Docker

АрхитСктура Docker

Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр. Docker ΠΊΠ»ΠΈΠ΅Π½Ρ‚ общаСтся с Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ Docker, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя Ρ‚ΡΠΆΠ΅ΡΡ‚ΡŒ создания, запуска, распрСдСлСния Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Оба, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ систСмС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ Π΄Π΅ΠΌΠΎΠ½Ρƒ docker. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· сокСт ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· RESTful API.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ΅Ρ€ простыми словами

Docker-Π΄Π΅ΠΌΠΎΠ½

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅, Π΄Π΅ΠΌΠΎΠ½ Π·Π° пускаСтся Π½Π° хост-машинС. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ взаимодСйствуСт с сСрвСром Π½Π° ΠΏΡ€ΡΠΌΡƒΡŽ, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для этого ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

Docker-ΠΊΠ»ΠΈΠ΅Π½Ρ‚

Docker-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° docker β€” Π³Π»Π°Π²Π½Ρ‹ΠΉ интСрфСйс ΠΊ Docker. Она ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ взаимодСйствуСт с docker-Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ docker-Π°

ΠžΠ±Ρ€Π°Π·Ρ‹

Docker-ΠΎΠ±Ρ€Π°Π· β€” это read-only шаблон. НапримСр, ΠΎΠ±Ρ€Π°Π· ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½ΠΊΡƒ Ubuntu c Apache ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π½Π΅ΠΉ. ΠžΠ±Ρ€Π°Π·Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Docker позволяСт Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ созданныС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ людьми. ΠžΠ±Ρ€Π°Π·Ρ‹ β€” это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° сборки docker-Π°.

РССстр

Docker-рССстр Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π·Ρ‹. Π•ΡΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ рССстры, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Docker-рССстр β€” это Docker Hub. Π’Π°ΠΌ хранится огромная коллСкция ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Как Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Π²Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ созданныС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. РССстры β€” это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° распространСния.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π’ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… содСрТится всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ создаСтся ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы, Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹, остановлСны, пСрСнСсСны ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ являСтся бСзопасной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для прилоТСния. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ β€” это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Docker?

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π·?

ΠœΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π· β€” это read-only шаблон, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ union file system для сочСтания этих ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ€Π°Π·. Union file system позволяСт Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ дирСкториями ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм (Ρ€Π°Π·Π½Ρ‹ΠΌ вСтвям) ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ, создавая ΠΊΠΎΠ³Π΅Ρ€Π΅Π½Ρ‚Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму.

Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ docker лСгковСсСн β€” это использованиС Ρ‚Π°ΠΊΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. Когда Π²Ρ‹ измСняСтС ΠΎΠ±Ρ€Π°Π·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, обновляСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π’Π°ΠΊ, Π±Π΅Π· Π·Π°ΠΌΠ΅Π½Ρ‹ всСго ΠΎΠ±Ρ€Π°Π·Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ пСрСсборки, ΠΊΠ°ΠΊ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ придётся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ добавляСтся ΠΈΠ»ΠΈ обновляСтся. И Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π°Π²Π°Ρ‚ΡŒ вСсь Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, раздаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС.

Π’ основС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° находится Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·. НапримСр, ubuntu, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Ubuntu, ΠΈΠ»ΠΈ fedora, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· дистрибутива Fedora. Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΊΠ°ΠΊ Π±Π°Π·Ρƒ для создания Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ². НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· apache, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· для Π²Π°ΡˆΠΈΡ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅! Docker ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Π΅Ρ€Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈΠ· рССстра Docker Hub.

Docker ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒΡΡ ΠΈΠ· этих Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ², шаги описания для создания этих ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ инструкциями. КаТдая инструкция создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈΠ»ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ docker рССстр?

РССстр β€” это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ docker ΠΎΠ±Ρ€Π°Π·ΠΎΠ². ПослС создания ΠΎΠ±Ρ€Π°Π·Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ рССстрС Docker Hub ΠΈΠ»ΠΈ Π½Π° вашСм Π»ΠΈΡ‡Π½ΠΎΠΌ рССстрС.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ docker ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° Π²Π°ΡˆΡƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ с docker для создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Docker Hub прСдоставляСт ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Поиск ΠΈ скачиваниС ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈΠ· ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ доступно для всСх. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΈ ваши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ эти ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ состоит ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ создаСтся ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Π°. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π· Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ docker-Ρƒ, Ρ‡Ρ‚ΠΎ находится Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, ΠΊΠ°ΠΊΠΎΠΉ процСсс Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° запускаСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Docker ΠΎΠ±Ρ€Π°Π· доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Когда docker запускаСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΎΠ½ создаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ для чтСния/записи свСрху ΠΎΠ±Ρ€Π°Π·Π° (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ union file system, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° запускаСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?

Π§Ρ‚ΠΎ ΠΆΠ΅ происходит ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ запускаСм эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π”ΠΎΠΊΠ΅Ρ€ написан Π½Π° Go ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности ядра Linux, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½(namespaces)

Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ namespaces для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… пространств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ. Когда ΠΌΡ‹ запускаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, docker создаСт Π½Π°Π±ΠΎΡ€ пространств ΠΈΠΌΠ΅Π½ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π­Ρ‚ΠΎ создаСт ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ аспСкт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² своСм простанствС ΠΈΠΌΠ΅Π½, ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ внСшнСй систСмС.

Control groups (ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹)

Docker Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ cgroups ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠšΠ»ΡŽΡ‡ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ прилоТСния Π² изоляции, прСдоставлСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ сосСдями. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ доступныС рСсурсы ΠΆΠ΅Π»Π΅Π·Π° ΠΈ Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΈ ограничСния. НапримСр, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ количСство памяти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ.

Union File System

Union File Sysem ΠΈΠ»ΠΈ UnionFS β€” это файловая систСма, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ создавая ΡƒΡ€ΠΎΠ²Π½ΠΈ, дСлая Π΅Π΅ ΠΎΡ‡Π΅Π½ΡŒ лСгковСсной ΠΈ быстрой. Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ UnionFS для создания Π±Π»ΠΎΠΊΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строится ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Docker ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² UnionFS Π²ΠΊΠ»ΡŽΡ‡Π°Ρ: AUFS, btrfs, vfs ΠΈ DeviceMapper.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *