Skip to content

Docker layots

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  1. Π‘Π»ΠΎΠΈ ΠΎΠ±Ρ€Π°Π·Π°: Когда Π²Ρ‹ создаСтС Docker-ΠΎΠ±Ρ€Π°Π· с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Dockerfile, каТдая инструкция (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, RUN, COPY, ADD) добавляСт Π½ΠΎΠ²Ρ‹ΠΉ слой Π² ΠΎΠ±Ρ€Π°Π·. Π­Ρ‚ΠΈ слои Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

  2. ΠœΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΡΡ‚ΡŒ слоСв: Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ слоСв, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ рСсурсы. Если слой ΡƒΠΆΠ΅ Π±Ρ‹Π» создан ΠΈ Π½Π΅ измСнялся, Docker просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°. Π­Ρ‚ΠΎ ускоряСт сборку ΠΎΠ±Ρ€Π°Π·ΠΎΠ².

  3. Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись: Когда ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π·Π°ΠΏΡƒΡ‰Π΅Π½, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ слои ΠΎΠ±Ρ€Π°Π·Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ "Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния". Π‘Π»ΠΎΠΉ, доступный для записи, добавляСтся ΠΏΠΎΠ²Π΅Ρ€Ρ… этих слоСв, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΌΠΎΠ³ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² свою Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму. Π­Ρ‚ΠΈ измСнСния ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·.

  4. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²: Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Docker-ΠΎΠ±Ρ€Π°Π·Π°, Π²Π°ΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство слоСв ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ слоС. НапримСр, объСдинСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… инструкций RUN Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство слоСв ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Dockerfile:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY . /app
CMD ["nginx", "-g", "daemon off;"]

Π—Π΄Π΅ΡΡŒ: - FROM создаСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ слой с Ubuntu. - RUN добавляСт Π½ΠΎΠ²Ρ‹ΠΉ слой с установлСнным nginx. - COPY создаСт слой с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. - CMD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для выполнСния ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

КаТдая ΠΈΠ· этих инструкций добавляСт слой Π² ΠΎΠ±Ρ€Π°Π·.