рд╕рд░реНрд╡рд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░! рддреНрдпрд╛рдЪреНрдпрд╛
╨Э╨░╤З╨░╨╗╨╛
рд╣реЗ рд╕рд░реНрд╡ рдПрдХрд╛ рдкрд╛рд╡рд╕рд╛рд│реА рд╕рдкреНрдЯреЗрдВрдмрд░рдЪреНрдпрд╛ рд╕рдВрдзреНрдпрд╛рдХрд╛рд│реА рд╕реБрд░реВ рдЭрд╛рд▓реЗ рдЬреЗрд╡реНрд╣рд╛ рдореА рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░рд╛рд╡рд░ $5 рдордзреНрдпреЗ рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрддрд▓реЗрд▓реЗ рдорд╢реАрди рд╕рд╛рдл тАЛтАЛрдХрд░рдд рд╣реЛрддреЛ, рдЬреЗ рдбреЙрдХрд░рдиреЗ рд╕рд░реНрд╡ 24 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдЙрдкрд▓рдмреНрдз рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рдиреЗ рднрд░рд▓реНрдпрд╛рдореБрд│реЗ рдЧреЛрдард╡рд▓реЗ рд╣реЛрддреЗ. рдЧрдВрдордд рдЕрд╢реА рд╣реЛрддреА рдХреА рдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рдХреНрд╖рдгрд┐рдХ рд╣реЛрддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд▓рд╛рдпрдмреНрд░рд░реА рдХрд┐рдВрд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХрдЪреА рдирд╡реАрди рдЖрд╡реГрддреНрддреА рд░рд┐рд▓реАрдЭ рдХрд░рддрд╛рдирд╛ рдХреЗрд╡рд│ рдорд╛рдЭреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ. рдореА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдЖрдгрд┐ рдХрдЪрд░рд╛ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд░реЙрди рд╢реЗрдбреНрдпреВрд▓ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪрд╛ рдлрд╛рдпрджрд╛ рдЭрд╛рд▓рд╛ рдирд╛рд╣реА: рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╣реЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдпрдкрдгреЗ рдорд╛рдЭреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рдЪреА рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрд╛рдКрди рд╕рдВрдкрд▓реЗ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рд╣рдБрдЧ рдЭрд╛рд▓рд╛ (рд╕рд░реНрд╡реЛрддреНрддрдо). рдХрд╛рд╣реА рдХреНрд╖рдгреА, рдорд▓рд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЬреЗрдирдХрд┐рдиреНрд╕ рдХрд╕реЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рдлреЙрд░рд╡рд░реНрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЙрдХрд░ рдбрд┐рдорди рд╕реЙрдХреЗрдЯрджреНрд╡рд╛рд░реЗ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╢реА рддрдпрд╛рд░ рдЖрдгрд┐ рд╣рдЯрд╡рд╛рдпрдЪреА рдпрд╛рдмрджреНрджрд▓ рдПрдХ рд▓реЗрдЦ рдЖрд▓рд╛. рдорд▓рд╛ рдХрд▓реНрдкрдирд╛ рдЖрд╡рдбрд▓реА, рдкрд░рдВрддреБ рдореА рдкреБрдвреЗ рдЬрд╛рдКрди рдбреЙрдХрд░рдЪреНрдпрд╛ рдЖрдд рдереЗрдЯ рдбреЙрдХрд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рддреНрдпрд╛ рд╡реЗрд│реА, рдорд▓рд╛ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреЗ рдЖрдгрд┐ рджреБрд╕рд░реНтАНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╣рд╛ рдкреВрд░реНрдгрдкрдгреЗ рддрд╛рд░реНрдХрд┐рдХ рдЙрдкрд╛рдп рд╡рд╛рдЯрд▓рд╛ (рдпрд╛рд▓рд╛ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдореНрд╣рдгреВрдпрд╛). -rm рдзреНрд╡рдЬрд╛рд╕рд╣ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рд╣реЛрддреА, рдЬреЗ рдерд╛рдВрдмрд╡рд▓реНрдпрд╛рд╡рд░ рд╕рдВрдкреВрд░реНрдг рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рддреНрдпрд╛рддреАрд▓ рд╕рд░реНрд╡ рд╕рд╛рдордЧреНрд░реА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╣рдЯрд╡рддреЗ. рдореА рдбреЙрдХрд░ рдХрдбреВрдирдЪ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдореЗрд╕рд╣ рдЯрд┐рдВрдХрд░ рдХреЗрд▓реЗ (
рд╕рд░рд╛рд╡. рд╢рдВрдХреВ
рдореА рдХрдВрдЯреЗрдирд░рд▓рд╛ рдорд╛рдЭреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддреЗрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рд╛рдпрд▓рд╛ рд▓рд╛рд╡рд▓реЗ рдЖрдгрд┐ рдорд╛рдЭреЗ рдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓реВ рдареЗрд╡рд▓реЗ, рдЬреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрд╕рдВрдЦреНрдп рдЕрдВрдХреБрд░рд╛рдВрдордзреНрдпреЗ рдЭрд╛рд▓рд╛. рдорд╛рдЭреНрдпрд╛ рдЖрддреНрдо-рдпрд╛рддрдирд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЦрд╛рд▓реАрд▓ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реЛрддрд╛:
-
рдЖрдореНрд╣реА рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдореЛрдбрдордзреНрдпреЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЛ.
docker run --privileged -it docker:18.09.6
рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛, рдЙрдЬрд╡реАрдХрдбреЗ рдХрд┐рдВрд╡рд╛ рдбрд╛рд╡реАрдХрдбреЗ рдкрд╛рдКрд▓ рдЯрд╛рдХрд╛ рдЖрдгрд┐ рддреБрдордЪрд╛ DinD рднреЛрдкрд│реНрдпрд╛рдд рдмрджрд▓реЗрд▓. рдЦрд░рдВ рддрд░, рдЬреЗрд╡реНрд╣рд╛ рдирд╡реАрди рдЖрд╡реГрддреНрддреА рд░рд┐рд▓реАрдЬ рд╣реЛрддреЗ рддреЗрд╡реНрд╣рд╛ рдЧреЛрд╖реНрдЯреА рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рдЦрдВрдбрд┐рдд рд╣реЛрддрд╛рдд.
рдЖрдкрдг рддрд╛рдмрдбрддреЛрдм рд╢реЗрд▓рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ. -
рдЖрдореНрд╣реА рдХреЛрдгрддреЗ рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓реВ рдЖрд╣реЗрдд рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЛрдд (рдЙрддреНрддрд░: рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА), рдкрд░рдВрддреБ рддрд░реАрд╣реА рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВ:
docker ps
рддреБрдореНрд╣рд╛рд▓рд╛ рдереЛрдбреЗ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯреЗрд▓, рдкрд░рдВрддреБ рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдбреЙрдХрд░ рдбрд┐рдорди рджреЗрдЦреАрд▓ рдЪрд╛рд▓реВ рдирд╛рд╣реА:
error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 192.168.65.1:53: no such host
-
рдЪрд▓рд╛ рддреЗ рд╕реНрд╡рддрдГ рдЪрд╛рд▓рд╡реВрдпрд╛:
dockerd &
рдЖрдгрдЦреА рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
-
iptables рдЖрдгрд┐ bash рдкреЕрдХреЗрдЬреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ (sh рдкреЗрдХреНрд╖рд╛ bash рдордзреНрдпреЗ рдХрд╛рдо рдХрд░рдгреЗ рдЕрдзрд┐рдХ рдЖрдирдВрджрджрд╛рдпреА рдЖрд╣реЗ):
apk add --no-cache iptables bash
-
рдЪрд▓рд╛ рдмреЕрд╢ рд▓рд╛рдБрдЪ рдХрд░реВрдпрд╛. рд╢реЗрд╡рдЯреА рдЖрдореНрд╣реА рдиреЗрд╣рдореАрдЪреНрдпрд╛ рд╢реЗрд▓рдордзреНрдпреЗ рдкрд░рддрд▓реЛ
-
рдЪрд▓рд╛ рдбреЙрдХрд░ рдкреБрдиреНрд╣рд╛ рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛:
dockerd &
рдЖрдореНрд╣рд╛рд▓рд╛ рд▓реЙрдЧрдЪреА рдПрдХ рд▓рд╛рдВрдм рд╢реАрдЯ рджрд┐рд╕рд▓реА рдкрд╛рд╣рд┐рдЬреЗ рдЬреНрдпрд╛рдЪрд╛ рд╢реЗрд╡рдЯ рд╣реЛрддреЛ:
INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock
-
рдПрдВрдЯрд░ рджрд╛рдмрд╛. рдЖрдореНрд╣реА рдмреЕрд╢рдордзреНрдпреЗ рдкрд░рддрд▓реЛ рдЖрд╣реЛрдд.
рдЖрддрд╛рдкрд╛рд╕реВрди, рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЗрддрд░ рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рджреБрд╕рд░рд╛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ рдХрд┐рдВрд╡рд╛ рдХрд╛рд╣реАрддрд░реА рдЪреВрдХ рдЭрд╛рд▓реА рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рдХреНрд░реЕрд╢ рдЭрд╛рд▓рд╛ рддрд░ рдХрд╛рдп? рдкреБрдиреНрд╣рд╛ рд╕рд░реНрд╡ рд╕реБрд░реВ рдХрд░рд╛.
рд╕реНрд╡рддрдГрдЪрд╛ DinD рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рдирд╡реАрди рдкреНрд░рдпреЛрдЧ
рд╡рд░реАрд▓ рдЪрд░рдгрд╛рдВрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдорд╛рдЭрд╛ рд╕реНрд╡рддрдГрдЪрд╛ DinD рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХреЗрд▓рд╛:
рдХрд╛рд░реНрдпрд░рдд DinD рд╕реЛрд▓реНрдпреВрд╢рдирдиреЗ рдорд▓рд╛ рдбреЙрдХрд░рдЪреНрдпрд╛ рдЖрдд рдбреЙрдХрд░ рд╡рд╛рд░рдВрд╡рд╛рд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдЕрдзрд┐рдХ рд╕рд╛рд╣рд╕реА рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рджрд┐рд▓реА.
рдореА рдЖрддрд╛ MySQL рдЖрдгрд┐ Nodejs рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрд╢рд╛рдЪ рдПрдХрд╛ (рдпрд╢рд╕реНрд╡реА) рдкреНрд░рдпреЛрдЧрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░ рдЖрд╣реЗ.
рд╕рд░реНрд╡рд╛рдд рдЕрдзреАрд░ рдпреЗрдереЗ рдХрд╕реЗ рд╣реЛрддреЗ рддреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛
рдЪрд▓рд╛ рддрд░ рдордЧ рд╕реБрд░реВрд╡рд╛рдд рдХрд░реВ:
-
рдЖрдореНрд╣реА рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдореЛрдбрдордзреНрдпреЗ DinD рд▓рд╛рдБрдЪ рдХрд░рддреЛ. DinD рдЪреНрдпрд╛ рдпрд╛ рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ, рдЖрдордЪреЗ рдореВрд▓ рдХрдВрдЯреЗрдирд░ рд╡рд╛рдкрд░реВ рд╢рдХрддреАрд▓ рдЕрд╕реЗ рд╕рд░реНрд╡ рдкреЛрд░реНрдЯ рдЖрдореНрд╣рд╛рд▓рд╛ рдореЕрдиреНрдпреБрдЕрд▓реА рдореЕрдк рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓ (рдореА рдпрд╛рд╡рд░ рдЖрдзреАрдЪ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ)
docker run --privileged -it -p 80:8080 -p 3306:3306 alekslitvinenk/dind
рдЖрдореНрд╣реА рдмреЕрд╢рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЛ, рддреЗрдереВрди рдЖрдореНрд╣реА рддрд╛рдмрдбрддреЛрдм рдЪрд╛рдЗрд▓реНрдб рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдХрд░реВ рд╢рдХрддреЛ.
-
MySQL рд▓рд╛рдБрдЪ рдХрд░рд╛:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql
-
рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕рд▓рд╛ рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЛ рдЬреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдЖрдореНрд╣реА рддреНрдпрд╛рд╕ рд╕реНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЛ. рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░реВрдпрд╛.
-
рджреБрд╕рд░рд╛ рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдХрд░рд╛:
docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server
рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдкреЛрд░реНрдЯ рдореЕрдкрд┐рдВрдЧ рдЕрдЪреВрдХ рдЕрд╕реЗрд▓ 8080:8080, рдХрд╛рд░рдг рдЖрдореНтАНрд╣реА рдЖрдзреАрдкрд╛рд╕реВрди рдкреЛрд░реНрдЯ 80 рд▓рд╛ рд╣реЛрд╕реНрдЯрдХрдбреВрди рдкреЕрд░реЗрдВрдЯ рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреЛрд░реНрдЯ 8080 рд╡рд░ рдореЕрдк рдХреЗрд▓реЗ рдЖрд╣реЗ.
-
рдЖрдореНрд╣реА рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╡рд░ рдЬрд╛рддреЛ, рд╕рд░реНрд╡реНрд╣рд░рдиреЗ тАЬрд╣реЕрд▓реЛ рд╡рд░реНрд▓реНрдб!тАЭ рдЕрд╕рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджрд┐рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.
рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдиреЗрд╕реНрдЯреЗрдб рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░реНрд╕рдЪрд╛ рдкреНрд░рдпреЛрдЧ рдЦреВрдк рд╕рдХрд╛рд░рд╛рддреНрдордХ рдард░рд▓рд╛ рдЖрдгрд┐ рдореА рдкреНрд░рдХрд▓реНрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╕реНрдЯреЗрдЬрд┐рдВрдЧрд╕рд╛рдареА рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡реЗрди. рдорд▓рд╛ рдЕрд╕реЗ рд╡рд╛рдЯрддреЗ рдХреА рд╣реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЖрдгрд┐ рдЬреЗрдирдХрд┐рдиреНрд╕ рдПрдХреНрд╕ рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╣рд▓рдХреЗ рдЙрдкрд╛рдп рдЖрд╣реЗ. рдкрд░рдВрддреБ рд╣реЗ рдорд╛рдЭреЗ рд╡реНрдпрдХреНрддрд┐рдирд┐рд╖реНрда рдордд рдЖрд╣реЗ.
рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдЖрдЬрдЪреНрдпрд╛ рд▓реЗрдЦрд╛рд╕рд╛рдареА рдПрд╡рдвреЗрдЪ рдЖрд╣реЗ. рдкреБрдврдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдд рдореА рдбреЙрдХрд░рдордзреНрдпреЗ рдбреЙрдХрд░ рд░рд┐рдХрд░реНрд╕рд┐рд╡рд▓реА рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдгрд┐ рдиреЗрд╕реНрдЯреЗрдб рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдбрд┐рд░реЗрдХреНрдЯрд░реА рдорд╛рдЙрдВрдЯ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдкреНрд░рдпреЛрдЧрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрди.
PS рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдкреНрд░рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреГрдкрдпрд╛ рдпрд╛рд▓рд╛ GitHub рд╡рд░ рдПрдХ рддрд╛рд░рд╛ рджреНрдпрд╛, рддреЛ рдлреЛрд░реНрдХ рдХрд░рд╛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдорд┐рддреНрд░рд╛рдВрдирд╛ рд╕рд╛рдВрдЧрд╛.
рдПрдбрд┐рдЯ 1 рджреБрд░реБрд╕реНрдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рддреНрд░реБрдЯреА, 2 рд╡реНрд╣рд┐рдбрд┐рдУрдВрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХреЗрд▓реЗ
рд╕реНрддреНрд░реЛрдд: www.habr.com