
рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрдВрдЯреЗрдирд░реАрдХрд░рдг рддрдХрдиреАрдХ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджреЗрд╡ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдпрд╣ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдмрд╛рд░рд┐рд╢ рдХреЗ рдмрд╛рдж рдорд╢рд░реВрдо рдХреА рддрд░рд╣ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдХрд┐ рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдУрдбрдмреНрд▓реНрдпреВрдПрдПрд╕рдкреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдордиреЗ рдирд┐рдпрдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдЖрдкрдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╣реЛрдЧреАред
рдирд┐рдпрдо реж
рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдФрд░ рдбреЙрдХрд░ рдореЗрдВ рд╕рднреА рд╡рд░реНрддрдорд╛рди рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдХрдВрдЯреЗрдирд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рди рдкреНрд░рдгрд╛рд▓реА, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдореЗрдЬрдмрд╛рди рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ, рдореЗрдЬрдмрд╛рди рдУрдПрд╕, рдбреЙрдХрд░ рдЗрдВрдЬрди рдФрд░ рдбреЙрдХрд░ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреИрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдЯреЗрдирд░ (рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд) рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдХрд░реНрдиреЗрд▓ рд╕реАрдзреЗ рд╣реЛрд╕реНрдЯ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд░реНрдиреЗрд▓ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ (рдЬреИрд╕реЗ рдХрд┐ рдЧрдВрджреЗ рдЧрд╛рдп) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреГрдердХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╕реЗ рдореЗрдЬрдмрд╛рди рдкрд░ рд░реВрдЯ рдПрдХреНрд╕реЗрд╕ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рдпрдо рез
рдбреЛрдХрд░ рдбреЗрдореЙрди рдХреЗ рд╕реЙрдХреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рди рджреЗрдВ
Docker рд╕реЗрд╡рд╛ (рдбреЗрдореЙрди) рдЖрдиреЗ рд╡рд╛рд▓реЗ API рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП UNIX рд╕реЙрдХреЗрдЯ /var/run/docker.sock рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рд╕реНрд╡рд╛рдореА рдореВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВред рдЗрд╕ рд╕реЙрдХреЗрдЯ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдмрджрд▓рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░реВрдЯ рдПрдХреНрд╕реЗрд╕ рджреЗрдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде /var/run/docker.sock рд╕реЙрдХреЗрдЯ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рд╕реЗ рдореЗрдЬрдмрд╛рди рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкреВрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдВрдЯреЗрдирд░ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
-v /var/run/docker.sock://var/run/docker.sock
рдпрд╛ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП:
volumes: - "/var/run/docker.sock:/var/run/docker.sock"
рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдФрд░ рдЖрдЦрд┐рд░реА - рдХрднреА рдирд╣реАрдВ, рд╕реБрдирдирд╛,
рдХрднреА рднреА рдкреВрд░реНрдг рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдбреЙрдХрд░ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ
рди рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ (рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреЙрдХрд░ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ 0.0.0.0:2375 (2376, HTTPs рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдкрд░ рдПрдХ рдкреЛрд░реНрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдоред
рдирд┐рдпрдо реи
рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ рд╣рдорд▓реЗ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1. "рдбреЙрдХ рд░рди" рдХрдорд╛рдВрдб рдХреЗ "-u" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
docker run -u 4000 alpine
2. рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди:
FROM alpine RUN groupadd -r myuser && useradd -r -g myuser myuser < root-, , > USER myuser
3. рдбреЙрдХрд░ рдбреЗрдореЙрди рдореЗрдВ "рдпреВрдЬрд░ рдиреЗрдорд╕реНрдкреЗрд╕" (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:
--userns-remap=default
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВред
Kubernetes рдореЗрдВ, рдмрд╛рдж рдореЗрдВ runAsNonRoot рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
kind: ... apiVersion: ... metadata: name: ... spec: ... containers: - name: ... image: .... securityContext: ... runAsNonRoot: true ...
рдирд┐рдпрдо рей
рдХрдВрдЯреЗрдирд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ
рд▓рд┐рдирдХреНрд╕ рдкрд░, рдХрд░реНрдиреЗрд▓ 2.2 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░,
рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреНрд╖рдорддрд╛рдУрдВ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ) рдирд╛рдордХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
рдбреЛрдХрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрди рдХрд░реНрдиреЗрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
--cap-drop тАФ --cap-add тАФ
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реИ (- рд╕рднреА рдбреНрд░реЙрдк), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
docker run --cap-drop all --cap-add CHOWN alpine
рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг (!): -рдкреНрд░рд╛рдкреНрдд рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдмрдЪреЗрдВ !!!
Kubernetes рдореЗрдВ, Linux рдХрд░реНрдиреЗрд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдмрд╛рдзрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
kind: ... apiVersion: ... metadata: name: ... spec: ... containers: - name: ... image: .... securityContext: ... capabilities: drop: - all add: - CHOWN ...
рдирд┐рдпрдо рек
рдиреЛ-рдиреНрдпреВ-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ - рд╕реБрд░рдХреНрд╖рд╛-рдСрдкреНрдЯ = рдиреЛ-рдиреНрдпреВ-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдзреНрд╡рдЬ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
Kubernetes рдореЗрдВ, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдмрд╛рдзрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ AllowPrivilegeEscalation рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИ:
kind: ... apiVersion: ... metadata: name: ... spec: ... containers: - name: ... image: .... securityContext: ... allowPrivilegeEscalation: false ...
рдирд┐рдпрдо рел
рдЗрдВрдЯрд░-рдХрдВрдЯреЗрдирд░ рд╕рдВрдЪрд╛рд░ рдмрдВрдж рдХрд░реЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреЙрдХрд░ рдореЗрдВ рдЕрдВрддрд░-рдХрдВрдЯреЗрдирд░ рд╕рдВрдЪрд╛рд░ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рднреА рдХрдВрдЯреЗрдирд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (docker0 рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ -cc = рдЭреВрдареЗ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдбреЙрдХрд░ рд╕реЗрд╡рд╛ рдЪрд▓рд╛рдХрд░ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдпрдо рем
рд▓рд┐рдирдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (Linux рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ - seccomp, AppArmor, SELinux)
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреЙрдХрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдирдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП,
рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрднреА рднреА рдЕрдХреНрд╖рдо рди рдХрд░реЗрдВ! рдЕрдзрд┐рдХрддрдо рдЬреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдирд┐рдпрдореЛрдВ рдХреЛ рдХрд╕рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
Seccomp рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред
Docker рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП AppArmor рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ Docker Engine рд╕реНрд╡рдпрдВ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ AppArmor рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп:
$ docker run --rm -it hello-world
рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
$ docker run --rm -it --security-opt apparmor=docker-default hello-world
рдкреНрд░рд▓реЗрдЦрди рднреА nginx рдХреЗ рд▓рд┐рдП рдПрдХ AppArmor рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ (рдЖрд╡рд╢реНрдпрдХ!)
рдирд┐рдпрдо 7
рдХрдВрдЯреЗрдирд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ
рдпрд╣ рдирд┐рдпрдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЕрдЧрд▓реЗ DoS / DDoS рд╣рдорд▓реЗ рдХреЗ рджреМрд░рд╛рди рд╕рднреА рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛, рд╕реАрдкреАрдпреВ, рдХрдВрдЯреЗрдирд░ рдкреБрдирд░рд╛рд░рдВрдн рдХреА рд╕рдВрдЦреНрдпрд╛ред
рддреЛ рдЪрд▓рд┐рдП рдХреНрд░рдо рдореЗрдВред
рд╕реНрдореГрддрд┐-M рдпрд╛ --memory рд╡рд┐рдХрд▓реНрдкрдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп 4 рдореАрдЯрд░ (4 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ) рд╣реИред
рд╡рд┐рдХрд▓реНрдк - рд╕реНрддрди-рд╕реНрд╡реИрдкрд╕реНрд╡реИрдк (рд╕реНрд╡реИрдк рдлрд╝рд╛рдЗрд▓) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдкред рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛:
- рдпрджрд┐ --ememory-swap> 0 рд╣реИ, рддреЛ тАУememory рдзреНрд╡рдЬ рдХреЛ рднреА рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрдореЛрд░реА-рд╕реНрд╡реИрдк рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡реИрдк рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреБрд▓ рдореЗрдореЛрд░реА рдХрд┐рддрдиреА рдЙрдкрд▓рдмреНрдз рд╣реИред
- рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгред рдпрджрд┐ --memory = "300m", рдФрд░ --emory-swap = "1g" рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ 300MB рдореЗрдореЛрд░реА рдФрд░ 700MB рд╕реНрд╡реИрдк (1g - 300m) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ - рдорд┐рдореЛрд░реА-рд╕реНрд╡реИрдк = 0, рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ - рдореАрдореЛрд░реА-рд╕реНрд╡реИрдк рдХреЛ рд╕рдорд╛рди рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрд╡реИрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
- рдпрджрд┐ --memory-swap рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди - memory рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рддреЛ рд╕реНрд╡реИрдк рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рджреЛрдЧреБрдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ --memory = "300m", рдФрд░ --ememory-swap рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ 300MB рдореЗрдореЛрд░реА рдФрд░ 600MB рд╕реНрд╡реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
- рдпрджрд┐ - рдорд┐рдореЛрд░реА-рд╕реНрд╡реИрдк = -1, рддреЛ рдХрдВрдЯреЗрдирд░ рд╕рднреА рд╕реНрд╡реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдЬреЛ рдореЗрдЬрдмрд╛рди рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдВрднрд╡ рд╣реИред
рдкрд░рд┐рдЪрд╛рд░рд┐рдХрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╢реБрд░реВ рдХреА рдЧрдИ рдореБрдлреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕реНрд╡реИрдк рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдирд╣реАрдВ рджрд┐рдЦрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрдЬрдмрд╛рди рд╕реНрд╡реИрдк рдХреА рд╕рдВрдЦреНрдпрд╛ред
рд╡рд┐рдХрд▓реНрдк --oom-рдорд╛рд░-рдЕрдХреНрд╖рдо рдХрд░реЗрдВрдЖрдкрдХреЛ OOM (рдЖрдЙрдЯ рдСрдлрд╝ рдореЗрдореЛрд░реА) рд╣рддреНрдпрд╛рд░реЗ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА! рдЖрдк OOM рдХрд┐рд▓рд░ рдХреЛ рдХреЗрд╡рд▓ --memory рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░-рдмрд╛рд╣рд░ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде, рдХрд░реНрдиреЗрд▓ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдорд╛рд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред
рдЕрдиреНрдп рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк, рдЬреИрд╕реЗ --memory-swappiness, --memory- рдЖрд░рдХреНрд╖рдг, рдФрд░ - рдХрд░реНрдиреЗрд▓-рдореЗрдореЛрд░реА, рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╣реИрдВред
рдкреНрд░реЛрд╕реЗрд╕рд░рд╡рд┐рдХрд▓реНрдк - рдХрд╛рд░реНрдкрд╕рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХрд┐рддрдиреЗ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╕реАрдкреАрдпреВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдЬрдмрд╛рди рд╣реИ рдФрд░ рд╣рдо --cpus = "1.5" рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдбреЗрдврд╝ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред
рд╡рд┐рдХрд▓реНрдк - рд╕реАрдкреАрдпреВ-рд╕реАрдкрд╕рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрд░ рдпрд╛ рд╕реАрдкреАрдпреВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рдПрдХ рд╣рд╛рдЗрдлрд╝рди рдпрд╛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреБрдордд рдХреЛрд░ рдХреА рд╕реАрдорд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рджреВрд╕рд░реЗ рдореЗрдВ - рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрд░ред
рдХрдВрдЯреЗрдирд░ рдкреБрдирд░рд╛рд░рдВрдн рдХреА рд╕рдВрдЦреНрдпрд╛ --restart=on-failure:<number_of_restarts>
рдпрджрд┐ рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ рдХрд┐ рдХрд┐рддрдиреА рдмрд╛рд░ рдбреЛрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрдерд┐рддрд┐ рдЪрд▓ рд░рд╣реА рд╣реИ, рддреЛ рдХрд╛рдЙрдВрдЯрд░ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдЫреЛрдЯреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5, рдЬреЛ рдПрдХ рдЧреИрд░-рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрддрд╣реАрди рдкреБрдирд░рд╛рд░рдВрдн рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ред
рдирд┐рдпрдо 8
рд░реАрдб-рдУрдирд▓реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХрд╣реАрдВ рднреА рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд░реАрдб-рдУрдирд▓реА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдШреБрд╕рдкреИрдард┐рдпреЗ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред
рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
docker run --read-only alpine
рд░реАрдб-рдУрдирд▓реА рдореЛрдб рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
docker run -v volume-name:/path/in/container:ro alpine
рдирд┐рдпрдо реп
рдХрдВрдЯреЗрдирд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣реИрдВ:
тАв рдирд┐: рд╢реБрд▓реНрдХ
тАв рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ:
рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИрдВ: