ΠΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ Π±Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π½Π΅ΡΠ΅ docker storage (ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΡΡ, Π² ΠΊΠΎΠΉΡΠΎ docker ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ) Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΄ΡΠ», ΠΊΠΎΠΉΡΠΎ
ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ° Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ. ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π±Π΅ΡΠ΅, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΡΠΈΠ²ΠΈΠ°Π»Π½Π° ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄Π²Π΅ΡΠ°Π²Π°ΡΠ΅ Π±Π΅Π΄Π°β¦
ΠΡΠΈΡΡΡΠΏΠ²Π°ΠΌΠ΅:
1. Π‘ΠΏΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΠ±ΠΈΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
docker-compose downΠ°ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ compose, ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΊΠ°:
docker rm -f $(docker ps -q)2. Π‘ΠΏΠΈΡΠ°ΠΌΠ΅ docker Π΄Π΅ΠΌΠΎΠ½Π°:
systemctl stop docker3. ΠΡΠ΅ΠΌΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π° ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΠΌΡΡΡΠΎ:
cp -r /var/lib/docker /docker/data/storage4. Π£Π²Π΅Π΄ΠΎΠΌΡΠ²Π°ΠΌΠ΅ docker Π΄Π΅ΠΌΠΎΠ½Π° Π΄Π° Π³Π»Π΅Π΄Π° Π² Π½ΠΎΠ²Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°: ΠΈΠ»ΠΈ ΡΡΠ΅Π· ΡΠ»Π°Π³ -g Π΄Π° ΡΠΊΠ°ΠΆΠ΅ΠΌ Π½Π° Π΄Π΅ΠΌΠΎΠ½Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΡ, ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ²Π΅ Π½Π° systemd, ΠΊΠΎΠΈΡΠΎ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅. ΠΠ»ΠΈ ΡΠΈΠΌΠ»ΠΈΠ½ΠΊ. ΠΡΠΌΠ° Π΄Π° Π³ΠΎ ΠΎΠ±ΡΡΠ½ΡΠ²Π°ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π·Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° docker root Π½Π° Π½ΠΎΠ²ΠΎ ΠΌΡΡΡΠΎ.
5. Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ docker Π΄Π΅ΠΌΠΎΠ½Π° ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Π³Π»Π΅Π΄Π° ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΡΠ±Π²Π°:
systemctl status dockerΠ Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ:
ββ19493 /usr/bin/dockerd --data-root=/docker/data/storageΠ£Π±Π΅Π΄ΠΈΡ ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠΌΠ΅ ΠΏΡΠ΅Π΄Π°Π»ΠΈ ΠΎΠΏΡΠΈΡΡΠ° Π½Π° Π΄Π΅ΠΌΠΎΠ½Π°, ΡΠ΅Π³Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Ρ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠ» (Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π° )!
docker info | awk '/Root Dir/ {print $NF}' 6. Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
docker-compose up -d7. ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅
Π ΡΡΠΊ Π·Π°ΠΏΠΎΡΠ²Π° Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ, Π‘Π£ΠΠ, MQ, Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄! ΠΠ°Π·Π°ΡΠ° Π΅ ΡΡΠ»Π°, Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈβ¦ ΠΎΡΠ²Π΅Π½ nginx. ΠΠΌΠ°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° nginx Ρ kerberos ΠΈ ΠΊΡΡΡΠΈΠ·Π°Π½ΠΊΠΈ. Π ΠΏΡΠ΅Π³Π»Π΅Π΄ΡΡ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°, ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π° Π² /var/tmp β Permission denied. Π Π°Π·ΡΡΠΈΠ²Π°ΠΌ ΡΠ»Π΅ΠΏΠΎΠΎΡΠΈΡΡΠ° ΡΠΈ ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°β¦ ΠΠ°ΠΊ ΡΠ°ΠΊΠ°? Docker ΠΎΠ±ΡΠ°Π·ΡΡ Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½. ΠΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°. ΠΠΈΠ½Π°Π³ΠΈ Π΅ ΡΠ°Π±ΠΎΡΠΈΠ»ΠΎ, ΠΈ ΡΠ΅Π³Π°β¦ ΠΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Π²Π»ΡΠ·ΠΎΡ ΡΡΡΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²Π°ΡΠ° Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π±ΡΡ Π° root, root 755, Π΄Π°Π΄ΠΎΡ root, root 777. Π Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΈβ¦ Π Π³Π»Π°Π²Π°ΡΠ° ΠΌΠΈ ΠΏΡΠΎΠ·Π²ΡΡΠ° ΠΌΠΈΡΡΠ» β Π½ΡΠΊΠ°ΠΊΡΠ² Π±ΡΠ΅Π΄β¦ ΠΠΈΡΠ»Π΅Ρ , ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅ΡΠΎ ΡΡΠΌ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π½Π°Π»β¦
Π Π΅ΡΠΈΡ
, ΡΠ΅ ΡΠΌΠ΅ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ ΠΏΡΠ°Π²Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ. Π‘ΠΏΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, docker Π΄Π΅ΠΌΠΎΠ½Π°, ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ Π½ΠΎΠ²Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° /var/lib/docker, Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ rsync -a.
ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ΅Π³Π° Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΠΏΡΡΠΊΠ°ΠΌΠ΅ docker, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠΈΠΈβ¦ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠ° ΠΎΡΡΠ°Π½Π°β¦ ΠΠ°ΡΠ΅ΡΠ²ΠΈ ΠΌΠΈ ΡΠ΅ ΠΎΠΊΠΎΡΠΎ. Π‘ΠΊΠΎΡΠΈΡ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠΎΠ»Π°ΡΠ° Π½Π° ΠΌΠΎΡΡΠ° Π²ΠΈΡΡΡΠ°Π»ΠΊΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ΡΡΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π΅ΡΠ°; ΠΈΠΌΠ°Ρ ΡΠΎΠ·ΠΈ ΠΈΠΌΠΈΠ΄ΠΆ Π½Π° nginx ΠΈ ΡΠ΅ ΠΊΠ°ΡΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π° ΡΠ°ΠΌ ΠΏΡΠ°Π²Π°ΡΠ° Π½Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /var/tmp Π±ΡΡ Π° root, root 777. Π’ΠΎΠ΅ΡΡ ΡΠΎΡΠ½ΠΎ ΡΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Π·Π°Π΄Π°ΠΌ ΡΡΡΠ½ΠΎ. ΠΠΎ ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ!
ΠΠ°Π²ΡΡΠΊΡΠ΄Π΅ Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° xfs.
Π‘ΡΠ°Π²Π½ΠΈΡ ΡΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
docker inspect my-nginx:12345ΠΡΠΈΡΠΊΠΈ Ρ Π΅ΡΠΎΠ²Π΅ ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ, Π΅Π΄ΠΈΠ½ Π² Π΅Π΄ΠΈΠ½. ΠΠ°ΠΊ Π½Π° ΡΡΡΠ²ΡΡΠ°, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΠΌΠΎΡΡΠ° Π²ΠΈΡΡΡΠ°Π»ΠΊΠ°. ΠΠ·ΡΡΠΈΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΈΠΌΠΈΠ΄ΠΆ Π½Π° nginx ΠΈ Π³ΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎ ΡΠ΅Π΄ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π΅ Π½Π° ΡΡΡΠ°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΡΡΡΠΈΡΡβ¦ Π‘Π΅Π³Π° ΠΌΠΈ ΡΠ΅ Π·Π°ΡΠ΅ΡΠ²ΠΈ ΠΈ Π΄ΡΡΠ³ΠΎΡΠΎ ΠΎΠΊΠΎ.
ΠΠ΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠΌΠ½Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠΈΡΠ»ΠΈ ΠΈΠΌΠ°Ρ Π² Π³Π»Π°Π²Π°ΡΠ° ΡΠΈ, ΠΎΡΠ²Π΅Π½ Π²ΠΈΠΊΠΎΠ²Π΅ βΠΠΠΠΠΠΠβ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ. ΠΠ° ΡΠ»ΠΈΡΠ°ΡΠ° Π΅ ΡΠ΅ΡΠΈΡΠΈ ΡΠ°ΡΠ° ΠΏΡΠ΅Π· Π½ΠΎΡΡΠ°, ΠΈΠ·Π²Π°Π΄ΠΈΡ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Docker, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Ρ Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ΡΠ΅ Π½Π° ΠΈΠΌΠΈΠ΄ΠΆΠ°. ΠΡΠ²ΠΎΡΠΈΡ ΡΡΠ΅ΡΠ° Π±Π°Π½ΠΊΠ° Ρ Π΅Π½Π΅ΡΠ³ΠΈΠΉΠ½Π° Π½Π°ΠΏΠΈΡΠΊΠ°. Π Π½Π°ΠΊΡΠ°Ρ ΠΎΡΡΠ·Π½Π°Ρ , ΡΠ΅ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ°ΠΌΠΎ ΡΠ°ΠΉΠ»Π°, Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, Π½ΠΎ ΠΠ―ΠΠ ΠΠ ΠΠΠ ΠΠ ΠΠΠ‘Π’ΠͺΠ! Π’ΠΎΠ΅ΡΡ, ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π·Π°Π³Π°Π΄ΡΡΠ΅Π½ Π½Π°ΡΠΈΠ½ ΠΏΡΠ°Π²Π°ΡΠ° Π½ΠΈ Π±ΡΡ Π° Π½Π°ΡΡΡΠ΅Π½ΠΈ, Π° SELinux Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½, acl Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, sticky bit Π³ΠΎ Π½ΡΠΌΠ°.
ΠΠ·ΡΡΠΈΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΈΠΌΠΈΠ΄ΠΆ, ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΡΡΠΈΡ ΠΈΠΌΠΈΠ΄ΠΆΠ° ΠΎΡ Docker ΡΠ΅Π³ΠΈΡΡΡΡΠ° ΠΈ Π³ΠΎ ΠΊΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎ. Π Π²ΡΠΈΡΠΊΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠΈ. ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ ΡΠ°Π·ΠΌΠΈΠ½Π° ΠΏΡΠ°Π²Π°ΡΠ°, ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΈΠΌΠΈΠ΄ΠΆ, ΠΈ Π² ΠΈΠΌΠΈΠ΄ΠΆΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ°. ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΠΊΠ°Π·Π°Ρ , ΠΏΠΎ ΡΠ΅Π΄ ΠΏΡΠΈΡΠΈΠ½ΠΈ ΡΠΎΠΉ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΠΌΠ°ΡΠΈΠ½Π°. Π ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /var/lib/docker.
Π ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π°ΠΉΠΊΠΈ Π²ΡΠΏΡΠΎΡΠ°, ΠΎΠΏΠΈΡΠ²Π°Ρ ΡΠ΅ Π»ΠΈ ΡΠ΅ Π΄Π° Π²ΡΠ·Π²ΡΡΠ½Π΅ΡΠ΅ Docker ΠΊΡΠΌ ΡΡΠ°ΡΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ β Π½Π΅, Π½Π΅ ΠΎΠΏΠΈΡΠ²Π°Ρ ΠΌΠ΅, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΠ²Π°ΡΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π°. ΠΠΎ ΠΈΡΠΊΠ°Ρ ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ.
Π‘Π»Π΅Π΄ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΡΠ΅ΠΊΡΡ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΈ ΡΠ΅ ΡΡΡΡΠ²Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ· ΡΠΎ Π½Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ°ΠΊΠ°. Π§Π΅ΡΡΠ½ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π³ΡΠ³Π»ΠΈΡ ΠΈ Π½Π΅ Π½Π°ΠΌΠ΅ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°Ρ: ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΡΠ΅ΡΠ΅Π½, ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π½Π΅ Ρ ΡΠ°Π·Π±ΡΠ°Ρ =(
ΠΠΊΠΎ Π½ΡΠΊΠΎΠΉ Π·Π½Π°Π΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β ΡΠ΅ Π±ΡΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π΄ΠΎΡΡΠ΅Π½ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
