ΠΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ Π±Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΠΈ Docker Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ (Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, Π² ΠΊΠΎΡΡΠΎ 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 ΠΈ Π³ΠΎ ΡΠ²Π°Π»ΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΎΡ registry, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎ ΡΠ΅Π΄ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π΅ Π½Π° ΡΡΡΠ°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΡΡΡΠΈΡΡβ¦ Π‘Π΅Π³Π° Π²ΡΠΎΡΠΎΡΠΎ ΠΌΠΈ ΠΎΠΊΠΎ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΡΠ΅ΠΏΠ΅ΡΠΈ.
ΠΠ΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠΌΠ½Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠΈΡΠ»ΠΈ Π±ΡΡ Π° Π² Π³Π»Π°Π²Π°ΡΠ° ΠΌΠΈ, ΠΎΡΠ²Π΅Π½ Π²ΠΈΠΊΠΎΠ²Π΅ βΠΠΠΠΠΠΠβ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ. ΠΠ° ΡΠ»ΠΈΡΠ°ΡΠ° Π΅ 4:00 ΡΠ°ΡΠ° ΠΏΡΠ΅Π· Π½ΠΎΡΡΠ°, Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° docker, Ρ ΡΠ΅Π» Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°. ΠΡΠ²ΠΎΡΠΈΡ ΡΡΠ΅ΡΠ°ΡΠ° ΠΊΡΡΠΈΡ Ρ Π΅Π½Π΅ΡΠ³ΠΈΠΉΠ½Π° Π½Π°ΠΏΠΈΡΠΊΠ°. Π Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΎΡΡΠ·Π½Π°Ρ , ΡΠ΅ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΎΡΡΠΈΡΠ° ΡΠ°ΠΌΠΎ ΡΠ°ΠΉΠ»Π°, Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, Π½ΠΎ ΠΠ ΠΠ ΠΠΠ ΠΠΠ‘Π’Π£ΠΠ! Π’ΠΎΠ΅ΡΡ, ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π·Π°Π³Π°Π΄ΡΡΠ΅Π½ Π½Π°ΡΠΈΠ½ ΠΏΡΠ°Π²Π°ΡΠ° Π±ΡΡ Π° Π½Π°ΡΡΡΠ΅Π½ΠΈ, ΠΊΠ°ΡΠΎ selinux Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½, acl Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, sticky bit Π½ΡΠΌΠ°.
ΠΠ·ΡΡΠΈΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·, ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ docker registry ΠΈ Π³ΠΎ ΠΊΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎ. Π Π²ΡΠΈΡΠΊΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠΈ. ΠΠ·Π»ΠΈΠ·Π°, ΡΠ΅ ΠΏΡΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ ΠΏΡΠ°Π²Π°ΡΠ° ΡΠ° ΡΠ΅ Π½Π°ΡΡΡΠΈΠ»ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·, ΡΠ°ΠΊΠ° ΠΈ Π² ΠΎΠ±ΡΠ°Π·Π°, Π»Π΅ΠΆΠ°Ρ Π² registry. ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΠΊΠ°Π·Π°Ρ , ΠΏΠΎ ΡΠ΅Π΄ ΠΏΡΠΈΡΠΈΠ½ΠΈ ΡΠΎΠΉ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΡΠ°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. Π ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π² Π΅Π΄Π½Π° ΠΏΠ°ΠΏΠΊΠ° /var/lib/docker.
Π Π² ΠΏΡΠ΅Π΄Π²ΠΊΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΏΡΠΎΡΠ°, Π½Π΅ ΠΏΡΠΎΠ±Π²Π°Ρ ΠΌΠ΅ Π»ΠΈ Π΄Π° Π²ΡΡΠ½Π΅ΠΌ docker Π½Π° ΡΡΠ°ΡΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ β Π½Π΅, Π½Π΅ ΠΏΡΠΎΠ±Π²Π°Ρ ΠΌΠ΅, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΠ²Π°ΡΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π°. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°.
Π‘Π»Π΅Π΄ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΈ ΡΠ΅ ΡΡΡΡΠ²Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ°ΠΊΠ°. Π§Π΅ΡΡΠ½ΠΎ Π³ΡΠ³Π»Π΅Ρ ΠΈ Π½Π΅ Π½Π°ΠΌΠ΅ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°Ρ: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ΅Π½, ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π½Π΅ ΡΠ°Π·Π±ΡΠ°Ρ =(
ΠΠΊΠΎ Π½ΡΠΊΠΎΠΉ Π·Π½Π°Π΅ ΠΈΠ»ΠΈ ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠ° Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β ΡΠ΅ Π±ΡΠ΄Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½, Π°ΠΊΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
