Docker 09/18 рдХреЛ SSH рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЕрдЧреНрд░реЗрд╖рдг рдХрд╛ рд░рд╣рд╕реНрдп

рдЫрд╡рд┐

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


рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рдЯреАрдо рдореЗрдВ 18 рд╕рд┐рддрдВрдмрд░ рдХреЛ рдХрдИ рдЕрдкрдбреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рдпрд╣ Moby BuildKit рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред BuildKit рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ Dockerfile рдмрд┐рд▓реНрдб рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рд╣рд┐рдд рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рд╣реИред


рд░рд╛рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ BuildKit рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред 18.09 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ BuildKit рдПрдХ рдЪрдпрди рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ DOCKER_BUILDKIT=1 рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ DOCKER_BUILDKIT=1 docker build рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ BuildKit рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред


 export DOCKER_BUILDKIT=1 

рдмрд┐рд▓реНрдб рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рджреЛ рдирдИ рдмрд┐рд▓реНрдбрдХрд┐рдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ; рджреВрд╕рд░рд╛ Dockerfile рдХреЗ рд▓рд┐рдП RUN рдХрдорд╛рдВрдб рдореЗрдВ рдмрдврд╝рддреЗ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде (рдорд╛рдирдХ рдПрдХ рдХреЗ рдмрдЬрд╛рдп), рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдВрдХрд░ рдЫрд╡рд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ - рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдХреА рдЫрд╡рд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдм рддрдХ, рдмрд╛рд╣рд░реА рдбреЙрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕реНрдерд┐рд░ рдЪреИрдирд▓ рдореЗрдВ рд░рд╣рд╕реНрдп рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ: рдЖрдкрдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЪреИрдирд▓ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, docker/dockerfile:experimental рдпрд╛ docker/dockerfile/1.0.0-experimental ред


 # syntax=docker/dockerfile:1.0.0-experimental 

рдпрджрд┐ рдЖрдк, рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбреЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд RUN рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдЧреБрдкреНрдд рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП --mount рд▓реЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╣рд╛рдВ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рд╣реИред - --mount рд▓реЗрдмрд▓, docker run рд▓рд┐рдП --mount рд░реВрдк рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред


 # syntax=docker/dockerfile:1.0.0-experimental FROM alpine RUN --mount=type=secret,id=mysite.key command-to-run 

рдпрд╣ рд▓реЗрдмрд▓ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрдорд╛рдВрдб рдХреЗ рдкрд╛рд╕ рдкрде /run/secrets/mysite.key рд╕рд╛рде рдЧреБрдкреНрдд рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рд░рд╣рд╕реНрдп рдХреЗрд╡рд▓ рдорд╛рдЙрдВрдЯ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЯреАрдо рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ "mysite.key" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЧреБрдкреНрдд рд╕реНрдЯреЛрд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЙрдХрд░ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ --secret рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рдкреНрд░рдХрдЯреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред


 docker build --secret id=mysite.key,src=path/to/mysite.key . 

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд░рд╣рд╕реНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ /run/secrets рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк "рд▓рдХреНрд╖реНрдп" рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ "рд▓рдХреНрд╖реНрдп" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди "рдЖрдИрдбреА" рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "рдЖрдИрдбреА" рдЧрдВрддрд╡реНрдп рдкрде рдХрд╛ рдЖрдзрд╛рд░ рдирд╛рдо рдмрди рдЬрд╛рддрд╛ рд╣реИред


рдПрдХ рд░рд╣рд╕реНрдп рддрдХ рд╕реАрдорд┐рдд рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


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


 # syntax=docker/dockerfile:1.0.0-experimental FROM alpine RUN --mount=type=secret,id=mysite.key,required <command-to-run> 

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


рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдореЗрдВ рд▓реАрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдкреНрдд рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ tmpfs рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдФрд░ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдмрд┐рд▓реНрдб рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рди рд╣реЛред


рдЧреБрдкреНрдд рдорд╛рди рднреА рдмрд┐рд▓реНрдб рдХреИрд╢ рдЧрдгрдирд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред


SSH


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


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


SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗрд╡рд▓ Dockerfile рдореЗрдВ рдХрдорд╛рдВрдб рдХреЛ рджреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╕реАрдзреЗ type=ssh рдмреНрд▓реЙрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ SSH рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз SSH рдПрдЬреЗрдВрдЯ рдХрд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИред


рдпрд╣ рднреА SSH рдХреЗ рдПрдХ рдФрд░ рдкрд╣рд▓реВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ - TOFU рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧред рдкрд╣рд▓реА рдмрд╛рд░ SSH рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рдпрд╣ рдЕрдЬреНрдЮрд╛рдд рд╣реЛрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рдкрд╛рд░реНрдЯреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЗрд╕ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред


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


Dockerfile рдореЗрдВ RUN рдХрдорд╛рдВрдб рддрдХ SSH рдХреА рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ "ssh" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдПрд╕рдПрд╕рдПрдЪ рдПрдЬреЗрдВрдЯ рдХреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЙрдХреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ SSH_AUTH_SOCK рдкрд░рд┐рд╡реЗрд╢ рдЪрд░ рднреА рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


 # syntax=docker/dockerfile:experimental FROM alpine # install ssh client and git RUN apk add --no-cache openssh-client git # download public key for github.com RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts # clone our private repository RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject 

рдбреЙрдХрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░, рдЗрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП SSH рдЕрдЧреНрд░реЗрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП --ssh рд▓реЗрдмрд▓ --ssh рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


 docker build --ssh default . 

рд▓реЗрдмрд▓ рд╕реНрдерд╛рдиреАрдп рдПрд╕рдПрд╕рдПрдЪ рдПрдЬреЗрдВрдЯ рдпрд╛ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕реЙрдХреЗрдЯ рд╕реНрдерд╛рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдореБрдЦ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдорд╛рди default=$SSH_AUTH_SOCK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реЙрдХреЗрдЯ рдкрде рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред


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


 тАж RUN --mount=type=ssh,id=projecta git clone projecta тАж RUN --mount=type=ssh,id=projectb git clone projectb тАж 

рдФрд░ --ssh projecta=./projecta.pem --ssh projectb=./projectb.pem build --ssh projecta=./projecta.pem --ssh projectb=./projectb.pem рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рдХреЗрд╡рд▓ рдПрдЬреЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рд▓рд┐рдВрдХрд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдЗрди рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реАред


рдЗрд╕рдХреЗ рд╕рд╛рде, рдбреЙрдХ 18.09 рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рд░рд╣рд╕реНрдпреЛрдВ рдХреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдбреЙрдХрдлрд╛рдЗрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреА рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреАред

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


All Articles