рд▓рд┐рдирдХреНрд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЧрд╣рд░реА рдбреБрдмрдХреА

рдкреЛрд╕реНрдЯ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рд╣рдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рдирд╛рдо рд╕реНрдерд╛рдиред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо docker run рдХрд╛ рдПрдХ рд╕рд░рд▓ рдХреНрд▓реЛрди рдмрдирд╛рдПрдВрдЧреЗ - рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ рдХрдорд╛рдВрдб (рдЗрд╕рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛, рддреЛ рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЕрд▓рдЧ, рдЖрдк рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ; рдПрдХ рдЫрд╡рд┐ рд╕реЗ docker run рд▓рд┐рдП docker run ред


рдирд╛рдо рд╕реНрдерд╛рди рдХреНрдпрд╛ рд╣реИ?


рд▓рд┐рдирдХреНрд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рдЕрдореВрд░реНрдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рдо рдПрдХ рдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдмреЙрдХреНрд╕ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдмреЙрдХреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ (рдирд╛рдо рд╕реНрдерд╛рди) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд╛рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рд╣реИрдВ: Cgroups, IPC, Network, Mount, PID, User, UTSред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдЬреИрд╕реЗ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ (рдЬреИрд╕реЗ wlan0 , eth0 ), рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдорд╛рдЙрдВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдкреАрдЖрдИрдбреА тАЛтАЛрдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдЖрдИрдбреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдП рдФрд░ рдмреА рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ (рд╣рдорд╛рд░реЗ рд╕рд╛рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдмрдХреНрд╕реЗ) рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕рд╛рдзрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рд╢рд╛рдпрдж A рдореЗрдВ wlan0 рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ B рдореЗрдВ eth0 рдФрд░ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреА рдПрдХ рдЕрд▓рдЧ рдХреЙрдкреА рд╣реЛрддреА рд╣реИред


рдирд╛рдорд╕реНрдерд╛рди рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдЙрдкрдпреБрдХреНрдд рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╣реА рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕рдордп, рдХрд┐рд╕реА рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ P , рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЙрд╕реЗ "рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд▓рд┐рдирдХреНрд╕ рдЙрд╕реЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдиреЗрдорд╕реНрдкреЗрд╕ рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреА рдПрдХ рдкреНрд░рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИред


рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?


рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ ... рдмрд┐рд▓реНрдХреБрд▓, рдореИрдВ рддреЛ рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдмрдХреНрд╕реЗ рдХреЗ рдорд╣рд╛рди рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдмреЙрдХреНрд╕ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рдФрд░ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдиреНрдп рдмрдХреНрд╕реЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреАред рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ - P рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рдкрд╛рдЧрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ" рдФрд░ sudo rm тАУrf / рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рдЙрдВрдЯ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд Q рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрди рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реБрдП рдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рдХрд╛рд░рдг рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдорд╛рдЙрдВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдорд╛рдЙрдВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдЬреЛ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рднреА рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдбреНрд░реЙрдЕрд░ рд╕рд╛рджреГрд╢реНрдп рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдЗрдЯрдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдХреНрд╕реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдкреНрд░рддрд┐рдмрдВрдз рдПрдХ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ


рд╣рдо рдЙрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ! рдЖрдорддреМрд░ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдкреНрд░реЛрд╕реЗрд╕ рдЖрдИрдбреА $pid рд╕рд╛рде рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА /proc/$pid/ns рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:


 $ ls -l /proc/$$/ns total 0 lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 cgroup -> cgroup:[4026531835] lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 ipc -> ipc:[4026531839] lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 mnt -> mnt:[4026531840] lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 net -> net:[4026531957] lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 pid -> pid:[4026531836] lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 user -> user:[4026531837] lrwxrwxrwx 1 iffy iffy 0 May 18 12:53 uts -> uts:[4026531838] 

рдЖрдк рдПрдХ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд╛рдорд╕реНрдерд╛рди (рдирд╛рдорд╕реНрдерд╛рди) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬрдм рддрдХ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред


рдЖрдЗрдП рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬреБрдбрд╝ рдЬрд╛рдПрдВред рджреВрд╕рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 $ hostname iffy $ sudo unshare -u bash $ ls -l /proc/$$/ns lrwxrwxrwx 1 root root 0 May 18 13:04 cgroup -> cgroup:[4026531835] lrwxrwxrwx 1 root root 0 May 18 13:04 ipc -> ipc:[4026531839] lrwxrwxrwx 1 root root 0 May 18 13:04 mnt -> mnt:[4026531840] lrwxrwxrwx 1 root root 0 May 18 13:04 net -> net:[4026531957] lrwxrwxrwx 1 root root 0 May 18 13:04 pid -> pid:[4026531836] lrwxrwxrwx 1 root root 0 May 18 13:04 user -> user:[4026531837] lrwxrwxrwx 1 root root 0 May 18 13:04 uts -> uts:[4026532474] $ hostname iffy $ hostname coke $ hostname coke 

unshare рдХрдорд╛рдВрдб рдирдП рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рд╡реИрдХрд▓реНрдкрд┐рдХ) рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред -u рдзреНрд╡рдЬ рдЙрд╕реЗ рдирдП рдпреВрдЯреАрдПрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ bash рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рдирдИ bash рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдФрд░ uts рдлрд╛рдЗрд▓ рдХреА рдУрд░ uts рд╣реИ, рдЬрдмрдХрд┐ рдмрд╛рдХреА рд╕рднреА рд╕рдорд╛рди рд░рд╣рддреА рд╣реИрдВред


рдирдП рдирд╛рдорд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рд╕реБрдкрд░рд╕реБрд╕рд░ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред unshare , рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рджреЛрдиреЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ sudo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдЬреЛ рд╣рдордиреЗ рдЕрднреА рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рдЕрдкрдиреА рдирдИ рдмреИрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдк рдкрд╣рд▓реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ hostname рдЪрд▓рд╛рдХрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣реЛрд╕реНрдЯрдирд╛рдо рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдХреНрдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ?


рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдВрджрд╛рдЬрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдФрд░ рдЖрдк рд╕рд╣реА рд╣реЛрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдХреЛрдЯрд╛ рд╣реИред рдХреЛрдЯрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк docker run --net=host redis рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ redis рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рджреЗрдЦрд╛ рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рддрд░рд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рднрд╛рдЧреАрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмрд┐рдВрджреБ рд╕реЗ, рд░реЗрдбрд┐рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдмрд╛рдХреА рд╕рднреА рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рди рдХреЗрд╡рд▓ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИ, docker run рдЖрдкрдХреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореМрдЬреВрджрд╛ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕рд╡рд╛рд▓ рд╣реИ, рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ? ┬п \ _ (уГД) _ / containers рдЖрдорддреМрд░ рдкрд░, рдХрдВрдЯреЗрдирд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЕрд▓рдЧрд╛рд╡ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ: рдирд╛рдорд╕реНрдерд╛рди рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рддрдиреА рдХрдо рд╣реЛ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рддреА рд╣реИ, рдЙрддрдирд╛ рд╣реА рдпрд╣ рдЕрд▓рдЧ-рдерд▓рдЧ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред


sequestering


рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд╢реЗрд╖ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдиреАрдВрд╡ рд░рдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо isolate рдХрд╣реЗрдВрдЧреЗред isolate рдХрдорд╛рдВрдб рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрджреЛрдВ рдореЗрдВ, рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдХрд░ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ isolate рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред


рдЖрд╡реЗрджрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдорд╛рдЙрдВрдЯ, рдкреАрдЖрдИрдбреА тАЛтАЛрдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдорд╕реНрдерд╛рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдмрд╛рдХреА рд╣рдо рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреБрдЪреНрдЫ рд╣реЛрдВрдЧреЗ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпрд╣рд╛рдВ рдпреВрдЯреАрдПрд╕ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВрдЧреЗ)ред рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Cgroups рдХрд╛, рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ (cgroups рдХрд╛ рдЕрдзреНрдпрдпрди, рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдПрдХ рдФрд░ рдШрдЯрдХ рдЬреЛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд┐рддрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИ)ред


рдирд╛рдо рд╕реНрдерд╛рди рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рд╕рднреА рдХрд╛ рдЪрдпрди рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреЗрд╡рд▓ рдЙрди рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкрдж рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдорд╕реНрдерд╛рди рдкрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ isolate рдореЗрдВ рдЗрд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗред


рдкрджреЛрдВ рдХреЗ рдХреЛрдб рдЕрддрд┐рднрд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдЖрдк рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ Github рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рд╣рдорд╛рд░рд╛ isolate рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдЯреИрдбреЗрди рд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдпреВрдЯреАрдПрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдЪрд▓реЗрдЧреА, рдЬреИрд╕реЗ рд╣рдордиреЗ unshare ред рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рдмреЙрдХреНрд╕ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЕрд▓рдЧрд╛рд╡ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ), рддрд╛рдХрд┐ рдХрдорд╛рдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдЪрд▓реЗред


рдЗрд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд░рд┐рдПрдЯ-рдХрдВрдлрд┐рдЧрд░ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп isolate рдкреНрд░реЛрд╕реЗрд╕ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдирддреАрдЬрддрди, рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдХрд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдЪреИрдирд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрд╕рдХреА рд╕рд░рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рд▓рд┐рдирдХреНрд╕ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


рд╣рдореЗрдВ рддреАрди рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:


  1. рдПрдХ рдмреБрдирд┐рдпрд╛рджреА isolate рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдВ рдЬреЛ рд╕реНрдЯрдб рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддреА рд╣реИред
  2. рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ рдЬреЛ рдирдП рдпреВрдЯреАрдПрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдЧрд╛ред
  3. рдкрд╛рдЗрдк рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореБрдЦреНрдп рд▓реЙрдиреНрдЪ рд╕реЗ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдП рдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рд╡рд┐рдиреНрдпрд╛рд╕ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ:


 int main(int argc, char **argv) { struct params params; memset(&params, 0, sizeof(struct params)); parse_args(argc, argv, &params); //         . if (pipe(params.fd) < 0) die("Failed to create pipe: %m"); //   . int clone_flags = SIGCHLD | CLONE_NEWUTS ; int cmd_pid = clone(cmd_exec, cmd_stack + STACKSIZE, clone_flags, &params); if (cmd_pid < 0) die("Failed to clone: %m\n"); //      . int pipe = params.fd[1]; //      namespace ... //   ,     . if (write(pipe, "OK", 2) != 2) die("Failed to write to pipe: %m"); if (close(pipe)) die("Failed to close pipe: %m"); if (waitpid(cmd_pid, NULL, 0) == -1) die("Failed to wait pid %d: %m\n", cmd_pid); return 0; } 

рд╣рдорд╛рд░реЗ clone рдХреЙрд▓ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ clone_flags рдзреНрдпрд╛рди рджреЗрдВред рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдкрдиреЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ? рд╣рдо рд╕рднреА рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдкреНрд░рдХрд╛рд░ ( CLONE_NEWUTS рдзреНрд╡рдЬ UTS рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдирдХреНрд╕ рдмрд╛рдХреА рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ред


рдЕрдЧрд▓рд╛, рдХрдорд╛рдВрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рдВрдХреЗрдд рдХреА рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИ:


 static int cmd_exec(void *arg) { //   cmd   isolate . if (prctl(PR_SET_PDEATHSIG, SIGKILL)) die("cannot PR_SET_PDEATHSIG for child process: %m\n"); struct params *params = (struct params*) arg; //   ' '   . await_setup(params->fd[0]); char **argv = params->argv; char *cmd = argv[0]; printf("===========%s============\n", cmd); if (execvp(cmd, argv) == -1) die("Failed to exec %s: %m\n", cmd); die("┬п\\_(уГД)_/┬п"); return 1; } 

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 $ ./isolate sh ===========sh============ $ ls isolate isolate.c isolate.o Makefile $ hostname iffy $ hostname coke $ hostname coke #     ,      

рдЕрдм isolate рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рдмрд╕ рдЯреАрдо рдкрд░ рд╣рдорд▓рд╛ рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпреВрдЯреАрдПрд╕ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдпреВрдЬрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдПрдХ рдФрд░ рдХрджрдо рдЙрдард╛рдПрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдпреВрдЬрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред рд╡рд╣рд╛рдВ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╛рдо рд╕реНрдерд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред

Source: https://habr.com/ru/post/hi458462/


All Articles