Moby: рдХрдВрдЯреЗрдирд░ рдореЗрдВ ssh рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдЬреВрди 2014  ┬╖  190рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moby/moby

run рдпрд╛ build рджреМрд░рд╛рди рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЕрдХреНрд╕рд░ рд╣рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ:

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

рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

# docker run -t -i -v "$SSH_AUTH_SOCK:/tmp/ssh_auth_sock" -e "SSH_AUTH_SOCK=/tmp/ssh_auth_sock" fedora ssh-add -l
2048 82:58:b6:82:c8:89:da:45:ea:9a:1a:13:9c:c3:f9:52 phemmer<strong i="15">@whistler</strong> (RSA)

рд▓реЗрдХрд┐рди:

  1. рдпрд╣ рдХреЗрд╡рд▓ docker run рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ build ред
  2. рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдбреЙрдХрд░ рдбреЗрдореЙрди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рдорд╛рди рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛред

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

aresecurity exintermediate kinfeature

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ kienpham2000 , рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЫрд╡рд┐ рдкрд░рдд рдореЗрдВ рдХреБрдВрдЬреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛? рдХреЙрдкреА рдФрд░ рд░рд┐рдореВрд╡ рдХреА рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдорд╛рдВрдб рдореЗрдВ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд▓реЗрдпрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реА рдЯреАрдо рдХрд▓ рддрдХ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рдереА, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврддреЗ рд╣реИрдВ:

  • рд╣рдо aws s3 cli рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ URL рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдкреВрд░реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ URL рдХреЛ рд░реЗрдкреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдлрд┐рд░ dockerfile рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЫрд╡рд┐ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
  • рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░рди рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ: рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реА-рд╕рд┐рдВрдЧ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдПрдирдкреАрдПрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдЪрд▓рд╛рдПрдВ, рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
    рдПрдХ рд╕рд┐рдВрдЧрд▓ рдХрдорд╛рдВрдб рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ ssh key рдХрд┐рд╕реА рднреА рд▓реЗрдпрд░ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдкреНрд░реА-рд╕рд╛рдЗрди URL рд╕реНрдЯреЛрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ URL 5 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

# build.sh
aws s3 presign s3://my_bucket/my_key --expires-in 300 > ./pre_sign_url
docker build -t my-service .

рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

FROM node

COPY . .

RUN eval "$(ssh-agent -s)" && \
    wget -i ./pre_sign_url -q -O - > ./my_key && \
    chmod 700 ./my_key && \
    ssh-add ./my_key && \
    ssh -o StrictHostKeyChecking=no [email protected] || true && \
    npm install --production && \
    rm ./my_key && \
    rm -rf ~/.ssh/*

ENTRYPOINT ["npm", "run"]

CMD ["start"]

рд╕рднреА 190 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ #6075 рдЖрдкрдХреЛ рд╡рд╣ рджреЗрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП

рдПрдХ рдЧреБрдкреНрдд рдХрдВрдЯреЗрдирд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рдмрд┐рдВрджреБ рдЕрднреА рднреА рдЦрдбрд╝реЗ рд╣реИрдВред

+1 рдореБрдЭреЗ рдпрд╣ рдХреНрд╖рдорддрд╛ рднреА рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдЧреАред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдРрд╕реЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╕рдордп рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рдЬреА рдЧрд┐рдЯ рд░реЗрдкреЛ рд╕реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░реЗрдкреЛ рдХреБрдВрдЬреА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдбреЙрдХрд░ рдмрд┐рд▓реНрдб ..." рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрдирд▓реЙрдХ рдХрд┐рдП рдЧрдП рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рдЪрд▓ рд░рд╣реЗ рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдПрдЬреЗрдВрдЯред

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

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

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

рдпрд╣рд╛рдВ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╕рдорд╛рди рд╣реИ: https://twitter.com/damncabbage/status/453347012184784896

рдХреГрдкрдпрд╛, SSH_AUTH_SOCK рдХреЛ рдЕрдкрдирд╛рдПрдВ, рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж

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

+1, SSH_AUTH_SOCK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрддрд┐ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!

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

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореЗрд░рд╛ git clone рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: git clone [email protected]:razic/my-repo.git ред

рдореИрдВ рдорд╛рддреНрд░рд╛ рдореЗрд░реА рдореЗрдЬрдмрд╛рди рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ~/.ssh рдПрдХ рдХреЗ рджреМрд░рд╛рди рдореЗрд░реА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ docker run рдФрд░ ssh рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ ~/.ssh docker build рджреМрд░рд╛рди рдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

:+1: рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди ssh рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЧрд▓рдд рддрд░реАрдХрд╛ рд╣реИред рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ рджреЗрд╡ рдорд╢реАрди рдореЗрдВ рдбреЙрдХрд░ рдЗрдореЗрдЬ рдмрдирд╛рдирд╛, рдФрд░ рдЗрд╕реЗ рдбреЙрдХрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЙрдкреА рдХрд░рдирд╛ред

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

рдореБрдЭреЗ #6697 (рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░/рд╡реЙрд▓реНрдЯ) рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдореИрди-рдЗрди-рдж-рдмреАрдЪ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░реЙрдХреНрд╕реА рдПрд╕рдПрд╕рдПрдЪ рд╕рд╛рдорд╛рди рдХрд░рдирд╛ рд╣реИ docker daemon рдХреЗ рдмрд╛рд╣рд░, docker daemon рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд░реЛрдХрдирд╛ (рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ)ред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╕рднреА рдЧрд┐рдЯ + рдПрд╕рдПрд╕рдПрдЪ рдЕрдиреБрд░реЛрдз рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЬреАрдердм рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдЕрдВрддрддрдГ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдЙрдард╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ (рдЯрд┐рдкреНрдкрдгреА 2 рджреЗрдЦреЗрдВ)ред рдЗрд╕рд╕реЗ рдорд╕рд▓рд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ред

рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди ssh рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП +1ред

docker build рдкрд░ SSH рдПрдЬреЗрдВрдЯ рдЕрдЧреНрд░реЗрд╖рдг рдкрд░ +1

рдПрдирдкреАрдПрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреА рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдПрд╕рдПрд╕рдПрдЪ рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП +1ред

рдХреНрдпрд╛ рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдХреЛ рдПрд╕рдПрд╕рдПрдЪ рдЕрдЧреНрд░реЗрд╖рдг рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░рд╢реНрди рд░рдЦрд╛ рд╣реИ: http://stackoverflow.com/questions/27036936/using-ssh-agent-with-docker/27044586?noredirect=1#comment42633776_27044586 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ OSX рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ...

+1 =(

рдмрд╕ рдЗрд╕ рд░реЛрдбрдмреНрд▓реЙрдХ рдХреЛ рднреА рд╣рд┐рдЯ рдХрд░реЗрдВред рдПрдХ рдирд┐рдЬреА рд░реЗрдкреЛ рдкрд░ рдЗрдВрдЧрд┐рдд npm install рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕реЗрдЯрдЕрдк рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
host -> vagrant -> docker рдПрд╕рдПрд╕рдПрдЪ-рдПрдЬреЗрдВрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ host -> vagrant -! docker

+1
'рдбреЙрдХрд░ рдмрд┐рд▓реНрдб' рдХреЗ рджреМрд░рд╛рди рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ ssh рдПрдЬреЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП рдмрд╕ рдЗрд╕реЗ рд╣рд┐рдЯ рдХрд░реЗрдВред

+1 рдкрд┐рдЫрд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рд╣реАред рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдирд┐рдЬреА рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП bundle install рдФрд░ npm install ) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ ~/.ssh рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдбреЙрдХ рд░рди рдХреЗ рджреМрд░рд╛рди рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ ssh рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИред

@razic рдХреНрдпрд╛ рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ "рдЦрд░рд╛рдм рдорд╛рд▓рд┐рдХ рдпрд╛ рдЕрдиреБрдорддрд┐рдпрд╛рдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреА рдЬрд╛рдП

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

+1 рд╕реЗ SSH_AUTH_SOCK

@tonivdv рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ docker run рдХрдорд╛рдВрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдпрд╣ рдмрд╛рдЗрдВрдб рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ SSH_AUTH_SOCK рд╕реЗ /tmp/ssh_auth_sock рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ SSH_AUTH_SOCK рдХреЛ рдЙрд╕ рдкрде рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

@ md5 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @razic рдФрд░ @tonivdv рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: -v ~/.ssh:/root/.ssh:ro , рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ .ssh рдлрд╛рдЗрд▓реЗрдВ рд░реВрдЯ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

@KyleJamesWalker рд╣рд╛рдБ, рдореИрдВ @razic рд╕реЗ рд╣реВрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВрдиреЗ рдкрдврд╝рд╛ рддреЛ @razic рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ :)

@tonivdv рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдЬрдм рдореИрдВрдиреЗ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдХреЛрд╢рд┐рд╢ рдХреА рддреЛ рдореБрдЭреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред

+1 рдореБрдЭреЗ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХрд╛рдлреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд╕реЗ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд╛рдлреА рдорджрдж рдорд┐рд▓реЗрдЧреАред

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

https://github.com/atrauzzi/docker-laravel/blob/master/images/php-cli/entrypoint.sh

рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@atrauzzi рджрд┐рд▓рдЪрд╕реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдгред рд╣рдорд╛рд░реЗ рджреЗрд╡ env рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реАрдзреЗ ssh рдХреБрдВрдЬреА рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд░рди рдкрд░ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдЗрд╕рдХрд╛ рд▓рд╛рдн рд╣реИред рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕ рджрд╛рдирд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдореЗрдВ рднреА рдХреБрдВрдЬреА рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдорд╛рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЖрдк рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ;p

+1 рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

@tonivdv рдЬрд┐рд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЙрд╕реЗ рдЕрдХреНрд╕рд░ рдмрдирд╛рдпрд╛ рдФрд░ рдирд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ CLI рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рд╣реЛрд╕реНрдЯ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдорд╛рдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рдХреЙрдкреА рдмрдирд╛рдиреА рд╣реЛрдЧреАред

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

:+1: рдмрд┐рд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ssh рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП

рдпрд╣рд╛рдБ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!

@atrauzzi рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИред рдпрд╣ рдЗрд╕рдореЗрдВ рдПрд╕рдПрд╕рдПрдЪ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо рдХрдВрдЯреЗрдирд░ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдореЗрдВ ssh рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдмрд╕ рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

docker run -ti --volumes-from ssh-data ...

рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдкрд░ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рд╕рднреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реВрдВ:

docker run \
  --name ssh-data \
  -v /root/.ssh \
  -v ${USER_PRIVATE_KEY}:/root/.ssh/id_rsa \
  busybox \
  sh -c 'chown -R root:root ~/.ssh && chmod -R 400 ~/.ssh'

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ :)

рдЪрд┐рдпрд░реНрд╕

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

@atrauzzi рд╣рд╛рдБ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБред рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдкрдиреЗ ssh рд╡реЙрд▓реНрдпреВрдо рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдП рд░рдЦреЗред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╡рд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдордХреНрдЦреА рдкрд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдФрд░ рдПрдХрдорд╛рддреНрд░ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рд╕рдм рдЬрд░реВрд░рддреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреМрди рд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЪреБрди рд╕рдХреЗрдВред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдмреНрд▓реЙрдЧ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рднреА рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реВрдВрдЧрд╛! рдЪрд┐рдпрд░реНрд╕

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдмрдирд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рд╕реЗ рднрд░рд╛ рдбреЗрдЯрд╛-рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдП рд░рдЦреЗрдВред рд╢рд╛рдорд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред

@atrauzzi рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рд╡реЙрд▓реНрдпреВрдо рдХрдВрдЯреЗрдирд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд╣реА рдЪрд▓рдиреЗ рдкрд░ рдЗрд╕рдХреА ssh рдХреБрдВрдЬреА рд╕рд╛рдЭрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рддреЛ рдПрдХ ssh рд╡реЙрд▓реНрдпреВрдо рдХрдВрдЯреЗрдирд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдЪрд▓ рд░рд╣реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рд╣реИ:

docker run ... --volumes-from ssh-data ... php-cli ...

рддрдерд╛

docker run ... -v ~/.ssh:/path/.host-ssh ... php-cli ..

рдЕрдзрд┐рдХрд╛рд░? рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ :)

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

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рджреЛрдиреЛрдВ рдПрдХ рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВред

рдЪрд┐рдпрд░реНрд╕

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЙрдХрд░ рдЯреАрдо рд╕реЗ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, SSH рдкреНрд░рдорд╛рдгреАрдХрд░рдг docker build ред

рдпрд╣ 1 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐рдВрдбрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдо рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Dockerfile рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд╛рд╣ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдбреЙрдХрд░ рд╕реЗрд╡рд╛рдУрдВ рдЬреИрд╕реЗ рдХрдВрдкреЛрдЬрд╝ рдпрд╛ рдЭреБрдВрдб рдХреЗ рд╕рд╛рде рддрдм рддрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╣рд▓ рди рд╣реЛ рдЬрд╛рдПред

рдПрдХ рдЕрджреНрдпрддрди рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдХреГрдкрдпрд╛ рдФрд░ рдзрдиреНрдпрд╡рд╛рджред

/рд╕реАрд╕реА @ рдлреЗрдорд░

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

@jfrazelle

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рд╣рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ :)

рддреЛ рд╕реНрдерд┐рддрд┐ рд╣реИ:

рдЕрдЧрд░ рдХреЛрдИ рд╕реНрд╡реАрдХреГрдд рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ
рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмреИрдВрдбрд╡рд┐рдбреНрдеред

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ?

рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдЦреБрд▓рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ?

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рдХреЛ, рдЬреЗрд╕реА рдлреНрд░реИрдЬрд╝реЗрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░рд╣рд╕реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╕ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдФрд░ рдпрджрд┐ рд╕реНрд╡реАрдХреГрдд рд╣реЛ рддреЛ
рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рд╕рд╛рде рд╣реА рдореИрдВ рд╕рднреА рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреА рдирд╣реАрдВ рдЕрдкрдиреА рдУрд░ рд╕реЗ рдмреЛрд▓рддрд╛ рд╣реВрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90737847ред

рдЕрдЧрд░ рдХреЛрдИ рд╕реНрд╡реАрдХреГрдд рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ
рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмреИрдВрдбрд╡рд┐рдбреНрдеред

рд╣рд╛рдВ

рдФрд░ рдореИрдВ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЦреБрд▓рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рджреЛрдкрд╣рд░ 2:36 рдмрдЬреЗ, рдЬрд╝рд╛рдЪрд░реА рдПрдбрдо рдХрдкрд▓рд╛рди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рдиреЗ рд▓рд┐рдЦрд╛:

@jfrazelle

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рд╣рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ :)

рддреЛ рд╕реНрдерд┐рддрд┐ рд╣реИ:

рдЕрдЧрд░ рдХреЛрдИ рд╕реНрд╡реАрдХреГрдд рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ
рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмреИрдВрдбрд╡рд┐рдбреНрдеред

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ?

рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдЦреБрд▓рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ?

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рдХреЛ, рдЬреЗрд╕реА рдлреНрд░реИрдЬрд╝реЗрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░рд╣рд╕реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╕ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдФрд░ рдпрджрд┐ рд╕реНрд╡реАрдХреГрдд рд╣реЛ рддреЛ
рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рд╕рд╛рде рд╣реА рдореИрдВ рд╕рднреА рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреА рдирд╣реАрдВ рдЕрдкрдиреА рдУрд░ рд╕реЗ рдмреЛрд▓рддрд╛ рд╣реВрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90737847ред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90738913ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ:

SSHAGENT: рдлреЙрд░рд╡рд░реНрдб # рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдпрджрд┐ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рд╕реЙрдХреЗрдЯ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХ рдЯреБрдХрдбрд╝реЗ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд╕ рдЙрдиреНрд╣реЗрдВ docker build рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдмрд╛рдд рд╣реИред

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

рдорд╣рд╛рдиред рдореИрдВ рдХрд╣рд╛рдВ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рд╡рд╣рд╛рдВ рдПрдХ
рд╡рд┐рд╢рд┐рд╖реНрдЯ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рдХреЛ, рдЬреЗрд╕реА рдлреНрд░реИрдЬрд╝реЗрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдХреЛрдИ рд╕реНрд╡реАрдХреГрдд рд╣реИ
рдкреНрд░рд╕реНрддрд╛рд╡
рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмреИрдВрдбрд╡рд┐рдбреНрдеред

рд╣рд╛рдВ

рдФрд░ рдореИрдВ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЦреБрд▓рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рджреЛрдкрд╣рд░ 2:36 рдмрдЬреЗ, рдЬрд╝рд╛рдЪрд░реА рдПрдбрдо рдХрдкрд▓рд╛рди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com
<_e рдореИрдВ="18">

@jfrazelle

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рд╣рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ :)

рддреЛ рд╕реНрдерд┐рддрд┐ рд╣реИ:

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдХреЛрдИ рд╕реНрд╡реАрдХреГрдд рд╣реИ
рдкреНрд░рд╕реНрддрд╛рд╡
рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмреИрдВрдбрд╡рд┐рдбреНрдеред

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ?

рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдЦреБрд▓рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ?

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рдХреЛ, рдЬреЗрд╕реА рдлреНрд░реИрдЬрд╝реЗрд▓ < рд╕реВрдЪрдирд╛рдПрдВ @github.com
<_e i="31"/> рдиреЗ рд▓рд┐рдЦрд╛:

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ a
рдЙрдкрдпреЛрдЧ
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░рд╣рд╕реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╕ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдФрд░ рдпрджрд┐ рд╕реНрд╡реАрдХреГрдд рд╣реЛ рддреЛ
рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рд╕рд╛рде рд╣реА рдореИрдВ рд╕рднреА рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреА рдирд╣реАрдВ рдЕрдкрдиреА рдУрд░ рд╕реЗ рдмреЛрд▓рддрд╛ рд╣реВрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90737847ред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90738913ред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90739596ред

рдореЗрд░рд╛ рдорддрд▓рдм рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рддрд░рд╣ рд╣реИ
https://docs.docker.com/project/advanced-contributing/#design -proposal

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рджреЛрдкрд╣рд░ 2:39 рдмрдЬреЗ, рдбреЗрдирд┐рдпрд▓ рд╕реНрдЯреЙрдбрд┐рдЧреЗрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ:

SSHAGENT: рдлреЙрд░рд╡рд░реНрдб # рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

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

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90739803ред

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

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рдпрд╣ рдбреЗрдореЙрди PID 1 рд╣реЛрдЧрд╛, рдФрд░ рдореБрдЦреНрдп рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ PID 2 рд╣реЛрдЧреАред рдпрд╣ PID 1 рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред (#3793)
  • рдпрд╣ SSH рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред (#6396)
  • рдпрд╣ рдбреЗрдореЙрди рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ (#12035)
  • рдбреЗрдореЙрди рджреНрд╡рд╛рд░рд╛ рдПрдХ TTY рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (#11462)
  • ... рдФрд░ рд╢рд╛рдпрдж рдХрдИ рдЕрдиреНрдп рдореБрджреНрджреЗ рдЬреЛ рдореИрдВ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБред

рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ https://github.com/docker/docker/issues/11529 рджреЗрдЦрдирд╛
рдкрд╣рд▓реА рдЧреЛрд▓реА рдмрд┐рдВрджреБ

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдкреНрд░реИрд▓, 2015 рджреЛрдкрд╣рд░ 2:46 рдмрдЬреЗ, рдкреИрдЯреНрд░рд┐рдХ рд╣реЗрдорд░ рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рдпрд╣ рдбреЗрдореЙрди PID 1 рд╣реЛрдЧрд╛, рдФрд░ рдореБрдЦреНрдп рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреА
    рдкреАрдЖрдИрдбреА тАЛтАЛ2ред рдпрд╣ рдкреАрдЖрдИрдбреА тАЛтАЛ1 рдХреЗ рд╕рд╛рде рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рдВрдХреЗрддреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░реЗрдЧрд╛
    рдХрдВрдЯреЗрдирд░ рдареАрдХ рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред (#3793
    https://github.com/docker/docker/issues/3793
  • рдпрд╣ SSH рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред (#6396
    https://github.com/docker/docker/issues/6396
  • рдпрд╣ рдбреЗрдореЙрди рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ (#12035
    https://github.com/docker/docker/issues/12035)
  • рдбреЗрдореЙрди рджреНрд╡рд╛рд░рд╛ рдПрдХ TTY рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (#11462
    https://github.com/docker/docker/issues/11462)
  • ... рдФрд░ рд╢рд╛рдпрдж рдХрдИ рдЕрдиреНрдп рдореБрджреНрджреЗ рдЬреЛ рдореИрдВ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90741192ред

11529 рдкреАрдЖрдИрдбреА тАЛтАЛ1 рдореБрджреНрджреЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдХреЙрдкреА рдкреЗрд╕реНрдЯ рд╢реВрдЯ рдХрд░реЗрдВ, рдЕрдм рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рджреВрд╕рд░рд╛ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛

рдирд╣реАрдВ, рдпрд╣ рд╡рд╣ рд╣реИ, рдпрд╣ рдкреАрдЖрдИрдбреА тАЛтАЛтАЛтАЛ1 рдЬрд╝реЛрдВрдмреА рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рдереЗ, рд▓реЗрдХрд┐рди рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдореИрдВ рд╕рд┐рд░реНрдл рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм рдХреБрдЫ рд╣реИ

@phemmer рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рд╣реИред

рдпрд╣ рднреА @dts рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВред

@phemmer рдФрд░ @dts рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХрд╛ рд╣реИ

@phemmer рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рд╣реИ

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

рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИрдВ:

@phemmer рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛

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

@dts рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛

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

@razic рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛

docker build рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗ рддрд╛рдХрд┐ рд╣рдо рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред

@jfrazelle рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдХреИрд╕реЗ

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

@dts рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛

SSHAGENT: рдлреЙрд░рд╡рд░реНрдб # рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрднреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред "init/ssh daemon" рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреЛрдиреЛрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

@razic рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛

рдбреЛрдХрд░ рд░рди рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ docker build , рди рдХрд┐ docker run , рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд░рд┐рдореЛрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (boot2docker рдПрдХ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИ)ред рд╡реЙрд▓реНрдпреВрдо рдмрд╛рдЗрдВрдб рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрд╕реА рд╣реЛрд╕реНрдЯ рдкрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдбреЙрдХрд░ рдбреЗрдореЙрди рд╣реЛрддрд╛ рд╣реИред

@razic рдХреГрдкрдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ... рд╡реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИрдВ https://docs.docker.com/project/advanced-contributing/#design -proposal

@ рдлреЗрдорд░

рдореИрдВ рдареАрдХ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред docker-compose рдПрдХ swarm рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓/рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдиреЗ -v рдХреЛ рдРрд╕реЗ рдкрде рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

@jfrazelle рд╕рдордЭ рдЧрдпрд╛ред

рдпрджрд┐ рдлрд╝рд╛рдЗрд▓/рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЖрдк -v рдЙрд╕ рдкрде рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдбреЙрдХрд░ рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ?
рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рдореЗрд░реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ /tmp/ssh-UPg6h0 рд╕реБрди рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдбреЙрдХрд░ рд╣реИ, рдФрд░ docker build рдХреЙрд▓ рдХрд░реЗрдВ, рддреЛ рд╕реНрдерд╛рдиреАрдп рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдбреЛрдХрд░ рдбреЗрдордиред рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ docker build рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдкрд╛рд╕ ssh рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЙрдЪреНрдЪ рд╕реНрддрд░ рд╕реЗ, рдореБрдЭреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХреЗрд╡рд▓ 2 рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:

1. рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рд╕реЙрдХреЗрдЯ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдВ:

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

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

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

2. рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ SSH рдбреЗрдореЙрди рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

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

рддреЛ рдЕрдВрддрддрдГ рдмрд╣реБрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкреИрдорд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реЛрдЧрд╛ред

@ рдлреЗрдорд░

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрд╕рдПрд╕рдПрдЪ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЖрдк рдЫрд╡рд┐ рдХреЛ рдЙрд╕ рдорд╢реАрди рдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ SSH рдХреБрдВрдЬреА рд╣реЛрддреА рд╣реИред рдпрд╣ рд╕рд░рд▓ рд╣реИред

рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ ssh рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рдореЗрд░реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ /tmp/ssh-UPg6h0 рд╕реБрди рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдбреЙрдХрд░ рд╣реИ, рдФрд░ рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд╛рдиреАрдп рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдбреЙрдХрд░ рдбреЗрдореЙрди рддрдХ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдБред рдХрд┐рд╕реЗ рдкрдбрд╝реА рд╣реИ? рдореИрдВ рдЙрд╕ рдорд╢реАрди рдкрд░ docker build рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдСрде рд╕реЙрдХреЗрдЯ рддрдХ рдкрд╣реБрдБрдЪ рд╣реИред

рдореИрдВ рдЬреЛ рдХрд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ... docker-compose рдЖрдкрдХреЛ рд╡реЙрд▓реНрдпреВрдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ swarm рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдкрд░ рд╣реЛ рдпрд╛ рдирд╣реАрдВ! .

рд╣рдореЗрдВ рдбреЛрдХрд░ рдмрд┐рд▓реНрдб рдкрд░ рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

| рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реИ | рдПрдХреНрд╢рди |
| :-- | :-- |
| рд╣рд╛рдБ | рдорд╛рдЙрдВрдЯ |
| рдирд╣реАрдВ | рдХреЛрдИ рдирд╣реАрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдЦрд╛рд▓реА рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддрд╛ рд╣реИ рдпрджрд┐ рдлрд╝рд╛рдЗрд▓/рдлрд╝реЛрд▓реНрдбрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк docker run -v /DOES_NOT_EXIST:/DOES_NOT_EXIST ubuntu ls -la /DOES_NOT_EXIST рдЪрд▓рд╛рдХрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) |

swarm рдкреАрдЫреЗ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдмрд╣реБ-рд╣реЛрд╕реНрдЯ рдореЙрдбрд▓ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдирд╛ рд╣реИред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдореЛрдЯ рдбреЙрдХрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдореЗрдВ docker build рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХреЙрдкреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рд╣рдо docker run ред

https://github.com/docker/compose/blob/master/SWARM.md рд╕реЗ :

рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдРрдкреНрд╕ рдХреЛ рдЭреБрдВрдб рдкрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рд╛рдердорд┐рдХ рдмрд╛рдд рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рд░рд╣реА рд╣реИ: рд╡рд┐рднрд┐рдиреНрди рдореЗрдЬрдмрд╛рдиреЛрдВ рдкрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рдЬреА рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЧреИрд░-рд╣реИрдХреА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

@phemmer рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ https://github.com/docker/docker/issues/7249 рдЬреИрд╕реА рд▓рдЧрддреА рд╣реИ рдЬреЛ рдЕрд▓рдЧ рд╣реИред

рдпрджрд┐ рд╣рдо рдЕрдкрдирд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддреЗ рд╣реИрдВ: рдмрд╕ рдбреЙрдХ рдмрд┐рд▓реНрдб рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ (рднрд▓реЗ рд╣реА рдЖрдк рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реИ , рддреЛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ https://github.com/ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ

@ cpuguy83 рдкреНрд░рд╕реНрддрд╛рд╡ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ #7133 рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рд╕рдВрдмрдВрдзрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдБ рдХреБрдЫ рд╢рдмреНрдж рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ #7133 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker build рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИред

@razic рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╣реИ рдХрд┐ VOLUME /foo рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред

рдореИрдВ рдпрд╣ рднреА рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдмрд┐рд▓реНрдб рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдб-рдорд╛рдЙрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╢рд╛рдпрдж рдЙрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред
рджреЗрдЦреЗрдВ #6697

рд░рдирд┐рдВрдЧ -v рдбреЙрдХрдЯрд░ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рдиреЗ рдФрд░ рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдЗрд╕реЗ рдмрд░рдХрд░рд╛рд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛ dockerfiles рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ -v рдкрд░ рдХрд╛рд░реНрдп рдХрд░реЗрдВ рдЬрдм рд╕реАрдПрд▓рдЖрдИ рдХреЛ рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПред

рдмреБрдзрд╡рд╛рд░, 8 рдЕрдкреНрд░реИрд▓, 2015 рдХреЛ, рдмреНрд░рд╛рдпрди рдЧреЛрдл рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@razic https://github.com/razic рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╣реИ рдХрд┐ VOLUME
/foo рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ
рдирд┐рд░реНрдорд╛рдг, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред

рдореИрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдб-рдорд╛рдЙрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рднреА рдХрд╣реВрдВрдЧрд╛
рдмрд┐рд▓реНрдб рдХрдВрдЯреЗрдирд░ рд╢рд╛рдпрдж рдЙрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред
рджреЗрдЦреЗрдВ #6697 https://github.com/docker/docker/pull/6697

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment -90905722ред

@ cpuguy83 рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

6697 рднреА рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рд╣реИ рдФрд░ #10310 рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ #6697 рдХрд╛ рдПрдХ рдзреЛрдЦрд╛ рд╣реИред

+1, рдореИрдВрдиреЗ рд░реЗрд▓ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдЖрдЬ рдЗрд╕реЗ рдорд╛рд░рд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯрд╕рд╛рдЗрдб рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ [email protected]:angular/bower-angular-i18n.git рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪреВрдВрдХрд┐ рдЧрд┐рдЯ рд╡рд╣рд╛рдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдмреЛрд╡рд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпреЛрдирд┐ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред Vagrantfile рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдлреЙрд░рд╡рд░реНрдб_рдПрдЬреЗрдВрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рдЖрд╡рд╛рд░рд╛ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдбреЙрдХрд░ рдРрд╕рд╛ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдореМрдЬреВрджрд╛ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ?

рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ, рдПрдХ рдирдпрд╛ рдЖрд░рдПрд╕рдП рдХреАрдкреЗрдпрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдерд╛, рдЬреАрдердм рдкрд░ рдкрдм рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдирд╛ (рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдЬреЛрдбрд╝реЗрдВ), рдФрд░ рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рдирд┐рдЬреА рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ:

ADD keys/docker_rsa /srv/.ssh/id_rsa

рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА!

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕рдиреЗ рдЕрдзрд┐рдХ рдкрд┐рд▓реНрд▓реЛрдВ рдХреЛ рдорд╛рд░ рдбрд╛рд▓рд╛ рд╣реИред рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдбреЙрдХрд░ рдЖрдкрдХреЛ рдЕрднреА рддрдХ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред @cpuguy83 рд╕рд╣реА рд╣реИ рдХрд┐ рд▓реЛрдЧ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ рдЗрд╕ рд╕рдордп рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд┐рд╕реА рдмрд╛рдд рдкрд░ рд╕рд╣рдордд рд╣реЛрдиреЗ рдФрд░ рдХрд┐рд╕реА рдХреЛ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдкрдХрдбрд╝ рд╣реИред

@razic рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдзрдиреНрдпрд╡рд╛рджред рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдВрднрд╡рдд: рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдЫрд╡рд┐ рд╕реЗ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдЦрд┐рд░рдХрд╛рд░, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЬреАрдердм рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@fullofcaffeine рдореБрдЭреЗ 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдпрд╣ рдПрдХ рдПрдХрд▓ RUN рдХрдорд╛рдВрдб (рдЬреЛ рдЖрдкрдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЕрд╕рдВрднрд╡ рд╣реИ) рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдЫрд╡рд┐ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ SSH рдХреБрдВрдЬреА рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред

@razic рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБред

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

рдЪреВрдВрдХрд┐ рд╣рдо рдпрд╣ рд╕рдм рдПрдХ рд╣реА RUN ,

RUN ONVAULT npm install --unsafe-perm

рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди https://github.com/dockito/vault . рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ

рдПрдХрдорд╛рддреНрд░ рджреЛрд╖ HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдбреЙрдХрд░ рд╣рдм рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред

рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдореБрдЭреЗ рдмрддрд╛рдУ :)

+1
рдЗрд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рдЗрд╕рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА

+1, рдмрд╕ ssh-agent рдХреЛ boot2dock рдХреЗ рд╕рд╛рде рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╣рдордиреЗ рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 3 рдЪрд░рдгреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдХреА рд╣реИ:

  1. рдПрд╕рдПрд╕рдПрдЪ-рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВ, рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рд╕реНрд░реЛрдд рдЬреЛрдбрд╝реЗрдВ
  2. рд╕рд╛рдЭрд╛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд░реЛрдд рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рдЭрд╛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SSH_AUTH_SOCK рдФрд░ рдмрд┐рд▓реНрдб рдЪрд░рдг рдЪрд▓рд╛рдПрдВ, ssh-рдЖрд╡рд╢реНрдпрдХ рдЖрдЙрдЯрдкреБрдЯ (рдХрд╣рддреЗ рд╣реИрдВ, github рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд░реВрдмреА рд░рддреНрди) рдХреЛ рд╕рд╛рдЭрд╛ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд┐рдЦреЗрдВ
  3. рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдЬреЛ рд╕реЛрд░реНрд╕ рдРрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░рддреНрди рдЕрдм рд╕реЛрд░реНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдмреИрдареЗ рд╣реИрдВ

рдкрд░рд┐рдгрд╛рдо SSH-auth рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреАрдВрдЪреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрднреА рднреА SSH рдХреБрдВрдЬреА рдирд╣реАрдВ рдереАред

рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рд╕рд╛рде OSX рдкрд░ рдПрдХ boot2docker рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ docker run рд▓рд┐рдП ssh рдПрдЬреЗрдВрдЯ рдЕрдЧреНрд░реЗрд╖рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдб рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

https://gist.github.com/rcoup/53e8dee9f5ea27a51855

рдХреНрдпрд╛ рдлреЙрд░рд╡рд░реНрдб рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдЕрдореЗрдЬрд╝реЕрди рдИрд╕реА 2 рдХрдВрдЯреЗрдирд░ рд╕реЗрд╡рд╛ рдЬреИрд╕реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдпрд╛ PaS рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп, рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛, рд╕рдорд╛рдзрд╛рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдЬреА рдХреБрдВрдЬреА (рдФрд░ рдЬреНрдЮрд╛рдд рд╣реЛрд╕реНрдЯ) рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ id_rsa рдФрд░ рдЬреНрдЮрд╛рдд_рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреА рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рддрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рд╣реИред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдПрд╕рдПрд╕рдПрдЪ-рдПрдЬреЗрдВрдЯ рдФрд░ рд╡реЙрд▓реНрдпреВрдо рд╕рд╛рдЭрд╛рдХрд░рдг рдиреНрдпреВрдирддрдо рдирд╛рд╕рдордЭреА рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

https://github.com/whilp/ssh-agent

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдЕрдВрддрд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ _run_ рдмрдирд╛рдо _build_ рдореЗрдВ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред @whilp рдХрд╛ рд╕рдорд╛рдзрд╛рди _run_ рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди _build_ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк _build_ рдХреЗ рджреМрд░рд╛рди рдЕрдиреНрдп рдбреЙрдХрд░ рдХреЗ рд╡реЙрд▓реНрдпреВрдо рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдХреНрдпреЛрдВ рдпрд╣ рдЯрд┐рдХрдЯ рдЕрднреА рднреА рдПрдХ рджрд░реНрдж, рдЦреБрд▓рд╛ рджрд░реНрдж рд╣реИред

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

рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП IP рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди /etc/hosts рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдПрдХ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдХрд░реНрд▓ рдХрд░реЗрдВред

рдЖрдк рд╕рднреА рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдореИрдВрдиреЗ docker build рджреМрд░рд╛рди рдЖрдкрдХреЗ SSH рдПрдЬреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рдХрд┐рдпрд╛ рд╣реИ - http://aidanhs.com/blog/post/2015-10-07-dockerfiles-reproducibility- рдЯреНрд░рд┐рдХрд░реА/#_рд╕реНрдЯреНрд░реАрдорд▓рд╛рдЗрдирд┐рдВрдЧ_рдЖрдкрдХрд╛_рдЕрдиреБрднрд╡_рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛_an_ssh_agent

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

рдХреБрдЫ рдЪреЗрддрд╛рд╡рдиреА: рдЖрдкрдХреЛ рдбреЙрдХрд░> = 1.8 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдбреЙрдХрд░ рд╣рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг (рдЬрд╛рд╣рд┐рд░ рд╣реИ) рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреГрдкрдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдиреЛрдЯ рднреА рдкрдврд╝реЗрдВ! sshagent github рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдореБрджреНрджреЛрдВ рдХреЛ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдореИрдВ рдкреЛрд╕реНрдЯ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ @aidanhs рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ
https://github.com/mdsol/docker-ssh-exec

рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ? рдореИрдВ рд╣реЛрд╕реНрдЯ рдХреА ~/.ssh рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрд╛рдЗрдВрдб-рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдФрд░ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ uid/gid рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдб рдорд╛рдЙрдВрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛?

@atrauzzi рдмрд╛рдЗрдВрдб-рдорд╛рдЙрдВрдЯ рдпреВрдЖрдИрдбреА/рдЬреАрдЖрдИрдбреА/рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ FUSE (рдЬреИрд╕реЗ рдмрд╛рдЗрдВрдбрдлрд╝реНрд╕) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдЗрдВрдб рдорд╛рдЙрдВрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред

@ cpuguy83 рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдЙрди рд╕рдбрд╝рдХреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ? рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреА рдЯрд╛рд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

@atrauzzi рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддрддреНрдХрд╛рд▓ рдЕрд╡рдзрд┐ рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ (рд╡реИрд╕реЗ рднреА рдореВрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ)ред

+1 рдпрд╣ рдЕрдиреНрдпрдерд╛ рд╕рд░рд▓ Node.js рдРрдк Dockerfile рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИред рдореИрдВрдиреЗ рдХрдИ рдиреЛрдб рдРрдкреНрд╕ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдРрд╕рд╛ рджреЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдЬреА рдЬреАрдердм рд░реЗрдкреЛ рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб @apeace рдХреЗ рд░реВрдк рдореЗрдВ , рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ git рд░реЗрдкреЛ рдореЗрдВ git .git рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдпрд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдкреВрд░реНрдг рдЧрд┐рдЯ рд░реЗрдкреЛ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ .git рдлрд╝рд╛рдЗрд▓ рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ .git/modules/<repo> рдХреЛ <path>/<repo>/.git ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдкреЛ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЙрд╕ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @jakirkham , рд▓реЗрдХрд┐рди рд╣рдо рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдЬреА рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп npm install рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рддреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрд╕ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:

  • рдПрдХ рдЬреАрдердм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЯреАрдо рдмрдирд╛рдИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реЗрдкреЛ рддрдХ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдВрдЪ рд╣реИ
  • рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рд╣рдорд╛рд░реЗ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╣реИ
  • Dockerfile рдореЗрдВ, RUN npm install рдмрдЬрд╛рдп рд╣рдо RUN GIT_SSH='/code/.docker/git_ssh.sh' npm install

рдЬрд╣рд╛рдВ git_ssh.sh рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:

#!/bin/sh
ssh -o StrictHostKeyChecking=no -i /code/.docker/deploy_rsa "$@"

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдмрд╣реБрдд рдХрдо рд╕реЗрдЯрдЕрдк рдХрд╛рдо рд╣реЛрдЧрд╛!

:+1:
рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдЕрднреА рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдирд┐рдЬреА рд░реЗрдкреЛ рд╕реЗ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

:+1:

:+1: рд╣рдореЗрд╢рд╛ рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд░рд╣реА рд╣реИред

рд╣рд╛рдп @apeace , рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред

рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ https://github.com/dockito/vault ?

@pirelenito рд╡рд╣ рдХреБрдВрдЬреА рдЕрднреА рднреА рдирд┐рд░реНрдорд╛рдг рдХреА рдПрдХ рдкрд░рдд рдХреЗ рднреАрддрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ

@apeace ONVAULT рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ

@apeace рдореЗрдбрд┐рдбреЗрдЯрд╛ рдореЗрдВ, рд╣рдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ docker -ssh-exec рдХрд╣рд╛ рд╣реИ ред рдпрд╣ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрдорд╛рдг рдЫрд╡рд┐ рдореЗрдВ рдХреЗрд╡рд▓ docker-ssh-exec рдмрд╛рдЗрдирд░реА рдЫреЛрдбрд╝рддрд╛ рд╣реИ - рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП Dockerfile рдХреЗрд╡рд▓ рдПрдХ-рд╢рдмреНрдж рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд "рдирд┐рдореНрди-рдкрджрдЪрд┐рд╣реНрди" рд╣реИред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ _really_ рдПрдХ docker-native-only рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХрдВрдкрдиреА рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЙрдХрд░ 1.9 рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреНрд╖рдгрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --build-arg рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдПрдХ рдирд┐рдЬреА SSH рдХреБрдВрдЬреА рдХреЛ ARG рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдПрдХ git checkout рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ _delete_ рдХреБрдВрдЬреА, рд╕рднреА рдПрдХ RUN рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ docker-ssh-exec рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдПрдХ рдмрджрд╕реВрд░рдд Dockerfile , рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдЯреВрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

@ рдмреЗрдВрдЯрди рд╣рдо рдПрдХ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВред :)

рдзрдиреНрдпрд╡рд╛рдж @pirelenito рдФрд░ @benton , рдореИрдВ рдЖрдкрдХреЗ рд╕рднреА рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛!

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд _NOT_ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ:

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, user/repo-name рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Dockerfile рдЕрдкрдиреЗ рдирд┐рдЬреА рд░реЗрдкреЛ рдХреЗ рдкрде рд╕реЗ рдмрджрд▓реЗрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк [email protected] рдЙрдкрд╕рд░реНрдЧ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдЪреЗрдХрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП ssh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ):

FROM ubuntu:latest

ARG SSH_KEY
ENV MY_REPO [email protected]:user/repo-name.git

RUN apt-get update && apt-get -y install openssh-client git-core &&\
    mkdir -p /root/.ssh && chmod 0700 /root/.ssh && \
    ssh-keyscan github.com >/root/.ssh/known_hosts

RUN echo "$SSH_KEY" >/root/.ssh/id_rsa &&\
    chmod 0600 /root/.ssh/id_rsa &&\
    git clone "${MY_REPO}" &&\
    rm -f /root/.ssh/id_rsa

рдлрд┐рд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

docker build --tag=sshtest --build-arg SSH_KEY="$(cat ~/.ssh/path-to-private.key)" .

рдЖрдкрдХреА рдирд┐рдЬреА SSH рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рдирд╛ред

^ рдбреЙрдХрд░ 1.9 . рдХреЗ рд╕рд╛рде

@ рдмреЗрдВрдЯрди рдЖрдк docker inspect sshtest рдФрд░ docker history sshtest рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рдЖрдкрдХрд╛ рд░рд╣рд╕реНрдп рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдХрдВрдЯреЗрдирд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реА рдЙрдкрд▓рдмреНрдз рди рд╣реЛ ...

@ljrittle рдЧреБрдб VAR ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЕрднреА рднреА рдмрд╛рд╣рд░реА рдХрд╛рдордХрд╛рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ...

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

( https://docs.docker.com/engine/reference/builder/#arg )

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдиреЛрдЯ рдЖрдкрдХреЗ рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдореЗрдВ рд╕рд╛рджрд╛ рджреГрд╢реНрдпрдорд╛рди рдкрд╛рд╕рд╡рд░реНрдб/рдЯреЛрдХрди рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдореИрдВ @jcrombez рдХреЛ рдлреЙрд▓реЛ рдирд╣реАрдВ рдХрд░рддрд╛ред рдЙрджрд╛рд╣рд░рдг ARG рдорд╛рдзреНрдпрдо рд╕реЗ ssh рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдерд╛ред рддреЛ, рдпрд╣ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ:

docker build --tag=sshtest --build-arg SSH_KEY="$(cat ~/.ssh/path-to-private.key)" .

рдЙрд╕рдХреЗ рдмрд╛рдж рдпрд╣ :

docker build --tag=sshtest --build-arg SSH_KEY="mykeyisthis" .

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЖрдкрдХрд╛ рдЯрд░реНрдорд┐рдирд▓ рд▓реЙрдЧ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдпрд╣ рдЕрднреА рднреА рдХреБрдЫ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ @ljrittle рдиреЗ рдмрддрд╛рдпрд╛ рдФрд░ @benton рдиреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛, рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдк --build-arg / ARG рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдирд┐рд░реАрдХреНрд╖рдг рд╕реЗ рдЪрд╛рдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдордиреЗ рдЖрдПрдЧреАред рджреЛрдиреЛрдВ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдВрддрд┐рдо рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рдЙрд╕ рдЫреЛрд░ рдкрд░ рд╕рдорд╛рди рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдбреЙрдХрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИред

_рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорддрджрд╛рди_

_рдЕрдкрдбреЗрдЯ рдХреА рд╕реВрдЪрдирд╛ рдкрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреЗрдЬ рдкрд░ _рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ_рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдореБрджреНрджреЛрдВ рдкрд░ "+1" рдпрд╛ "рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рднреА рд╣реИ" рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
рд╕реВрддреНрд░ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВред

рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рдиреЗ +1 рдЯрд┐рдкреНрдкрдгреА рджреЗрдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдКрдкрд░ рдЙрдард╛рдпрд╛ рд╣реИ:

@ рдлреНрд▓реЗрдЪрд░91
@рдмреЗрдирд▓реЗрдорд╛рд╕реБрд░рд┐рдпрд░
@dmuso
@probepark
@ рд╕рд╛рджрд╛
@ianAndrewClark
@jakirkham
@galindro
@luisguilherme
@рдЕрдХреБрд░реНрдХрд┐рди
@allardhoeve
@SevaUA
@sankethkatta
@kouk
@cliffxuan
@ kotlas92
@taion

_рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорддрджрд╛рди_

_рдЕрдкрдбреЗрдЯ рдХреА рд╕реВрдЪрдирд╛ рдкрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреЗрдЬ рдкрд░ _рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ_рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдореБрджреНрджреЛрдВ рдкрд░ "+1" рдпрд╛ "рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рднреА рд╣реИ" рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
рд╕реВрддреНрд░ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВред

рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рдиреЗ +1 рдЯрд┐рдкреНрдкрдгреА рджреЗрдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдКрдкрд░ рдЙрдард╛рдпрд╛ рд╣реИ:

@рдкрд╛рд░реНрдХрдирд┐рдХрд░
@рджреБрд░реНрд╕реНрдХ
@adambiggs

рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ:

docker build --tag=sshtest --build-arg SSH_KEY="$(cat ~/.ssh/path-to-private.key)" .

рдЖрдкрдХреЗ рдмреИрд╢ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реИрдВ; рдРрд╕реЗ рдХрдИ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ API рдЕрдиреБрд░реЛрдз рд▓реЙрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ;

рдпрд╣рд╛рдБ docker build --tag=sshtest --build-arg SSH_KEY="fooobar" . рд▓рд┐рдП рдПрдХ рдбреЗрдореЙрди рд▓реЙрдЧ рд╣реИ

DEBU[0090] Calling POST /v1.22/build
DEBU[0090] POST /v1.22/build?buildargs=%7B%22SSH_KEY%22%3A%22fooobar%22%7D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&memory=0&memswap=0&rm=1&shmsize=0&t=sshtest&ulimits=null
DEBU[0090] [BUILDER] Cache miss: &{[/bin/sh -c #(nop) ARG SSH_KEY]}
DEBU[0090] container mounted via layerStore: /var/lib/docker/aufs/mnt/de3530a82a1a141d77c445959e4780a7e1f36ee65de3bf9e2994611513790b8c
DEBU[0090] container mounted via layerStore: /var/lib/docker/aufs/mnt/de3530a82a1a141d77c445959e4780a7e1f36ee65de3bf9e2994611513790b8c
DEBU[0090] Skipping excluded path: .wh..wh.aufs
DEBU[0090] Skipping excluded path: .wh..wh.orph
DEBU[0090] Applied tar sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef to 91f79150f57d6945351b21c9d5519809e2d1584fd6e29a75349b5f1fe257777e, size: 0
INFO[0090] Layer sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef cleaned up

_рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорддрджрд╛рди_

_рдЕрдкрдбреЗрдЯ рдХреА рд╕реВрдЪрдирд╛ рдкрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреЗрдЬ рдкрд░ _рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ_рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдореБрджреНрджреЛрдВ рдкрд░ "+1" рдпрд╛ "рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рднреА рд╣реИ" рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
рд╕реВрддреНрд░ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВред

рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рдиреЗ +1 рдЯрд┐рдкреНрдкрдгреА рджреЗрдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдКрдкрд░ рдЙрдард╛рдпрд╛ рд╣реИ:

@ рд╕реАрдЬреЗ2

рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реВрдмреА/рд░реИрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬреЗрдордлрд╛рдЗрд▓ рдХрдИ рдирд┐рдЬреА рд░рддреНрдиреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред рдЬрд┐рд╕ рдХреНрд╖рдг bundle install рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдирд┐рдЬреА рд░реЗрдкреЛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рд▓реЗрдХрд┐рди рдореЗрд░реА рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдХреГрдкрдпрд╛ рдПрд╕рдПрд╕рдПрдЪ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдЧреНрд░реЗрд╖рдг рд╕рдХреНрд╖рдо рдХрд░реЗрдВред

рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди ssh рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП +1ред рдЗрд╕рдХреА рд╡рдЬрд╣ рд╕реЗ рдирд┐рдЬреА рд░реЗрдкреЛ рдХреЗ рд╕рд╛рде go get рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ;(

рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП +1

_рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорддрджрд╛рди_

_рдЕрдкрдбреЗрдЯ рдХреА рд╕реВрдЪрдирд╛ рдкрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреЗрдЬ рдкрд░ _рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ_рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдореБрджреНрджреЛрдВ рдкрд░ "+1" рдпрд╛ "рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рднреА рд╣реИ" рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
рд╕реВрддреНрд░ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВред

рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рдиреЗ +1 рдЯрд┐рдкреНрдкрдгреА рджреЗрдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдКрдкрд░ рдЙрдард╛рдпрд╛ рд╣реИ:

@lukad

рдмрд╕ рдЗрд╕ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЪрд░реНрдЪрд╛ рдХреЛ рдкрдврд╝рдХрд░, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╛рдзрд╛рди рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реЗрддреЗ рд╕рдордп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ/рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░/рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдЕрд░реНрдерд╛рдд

рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░реЗрдВ .ssh

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

@benton рдХрд╛ рд╕реБрдЭрд╛рд╡ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░

рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЕрдкрдиреА рдХреБрдВрдЬреА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХрд╛ рд╣реИ:

# Dockerfile
ARG SSH_KEY
RUN eval `ssh-agent -s` > /dev/null \
    && echo "$SSH_KEY" | ssh-add - \
    && git clone [email protected]:private/repository.git

docker build -t my_tag --build-arg SSH_KEY="$(< ~/.ssh/id_rsa)" .

рд╣рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реАрдВ рдмреИрдард╛ рд╣реИ рдпрджрд┐ рдЖрдк docker inspect my_tag ..

рдФрд░, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ id_rsa рдХреБрдВрдЬреА рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдмреБрд░реЗ рдЗрдВрд╕рд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд░реЗрдВ:

# Dockerfile
ARG SSH_KEY
ARG SSH_PASS
RUN eval `ssh-agent -s` > /dev/null \
    && echo "echo $SSH_PASS" > /tmp/echo_ps && chmod 700 /tmp/echo_ps \
    && echo "$SSH_KEY" | SSH_ASKPASS=/tmp/echo_ps DISPLAY= ssh-add - \
    && git clone [email protected]:private/repository.git
    && rm /tmp/echo_ps

docker build -t my_tag --build-arg SSH_KEY="$(< ~/.ssh/id_rsa)" --build-arg SSH_PASS=<bad_idea> .

рдмреЗрд╢рдХ, рдпрд╣ рддрд░реНрдХ рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рджреВрд░ рд╕реЗ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ .. рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдЗрдВрд╕рд╛рди рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рджреА, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдХрд╛рд░рдг рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЦрд┐рд▓рд╛рдл "рдмрдВрдбрд▓ рдЗрдВрд╕реНрдЯреЙрд▓" рдпрд╛ "рдЧреЛ рдЧреЗрдЯ" рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХреЗрд╡рд▓ рд╡рд┐рдХреНрд░реЗрддрд╛ рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛрдбрд╝реЗрдВ .. рд▓реЗрдХрд┐рди, рдХрднреА-рдХрднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

@SvenDowideit @thaJeztah рдХреНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдореИрдВрдиреЗ рдзрд╛рдЧреЗ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдзрд╛рдЧреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рдмреАрдЪ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рд░рд╛рдп рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбреЙрдХрд░ рдЯреАрдо рдХреНрдпрд╛ рдХрд░реЗрдЧреА рдпрд╛ рдХрдм рдХрд░реЗрдЧреАред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рдЖрдкрдХреЗ рд╣реЛрд╕реНрдЯ рдХреЗ ssh рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдХреЗ рднреАрддрд░ ssh-agent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЖрдкрдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ!

рдПрд╕рдПрд╕рдПрдЪ-рдПрдЬреЗрдВрдЯ рдкреНрд░реЙрдХреНрд╕реАрдЗрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП: рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЬреАрдердм

@phemmer рдХрд╛ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ред

@yordis рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдзрд╛рдЧреЗ рдореЗрдВ рдПрдХ "рдорд╣рд╛рди" рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред

docker/docker-py#980 рдХреА рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрдкрдиреЗ ssh рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреБрдВрдЬреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдбреЗрдореЙрди рдЙрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд╛рдЧрд▓ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ

рдбреЛрдХрд░ 1.8 рдХреЗ рдмрд┐рд▓реНрдб рдЖрд░реНрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА рдкрд╛рд╕ рдХрд░рдирд╛ред
рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ ред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░

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


рдпрд╣ рдЕрднреА рддрдХ рдХрд╣реАрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЧрдпрд╛?

рдЗрд╕реЗ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдпрд╣ рдореБрджреНрджрд╛ _cah_- _luttered_ рд╣реИ рдФрд░ рдЗрд╕ рд╕рдордп рд╡рд┐рдЪрд╛рд░ рдХреЗрд╡рд▓ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг "рдХреНрдпрд╛ рд╣реБрдЖ рдЕрдЧрд░ рд╣рдордиреЗ x рдХрд┐рдпрд╛" рдФрд░ +1 рдХреА рдзреБрдВрдз рдореЗрдВ рдЦреЛрдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╕рдВрдЧрдард┐рдд рд╣реЛрдиреЗ рдФрд░ рдЗрд╕ рдЕрддрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ . . .

рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡

рдФрд░ рдлрд┐рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рдЦрдмрд░ рд╣реИред

рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдбреЙрдХрд░рдХреЙрди рдореЗрдВ, рд╣рдореЗрдВ рдбреЙрдХрд░ рдХреЗ "рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рд╕реЗ рдкреВрдЫреЗрдВ" рдордВрдбрдк рдореЗрдВ рдЕрдкрдиреЗ рд╕рдмрд╕реЗ рдХрдард┐рди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рдореИрддреНрд░реАрдкреВрд░реНрдг рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд╛рд╣рдЬрдирдХ рд╢реАрд░реНрд╖рдХ рд╕рдорд╛рдзрд╛рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рддрдЪреАрдд рдХреАред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рджрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдмрддрд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╛рд╕рди рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ _only_ docker-compose рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рд╡рд╣ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣рд╛ рдерд╛ рдЙрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдПрдХ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдирд┐рд░реНрдорд╛рдг рд╢рд╛рдорд┐рд▓ рдерд╛ - рд╢рд╛рдпрдж рдЕрдВрддрд┐рдо рдРрдк рдирд┐рд░реНрдорд╛рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдерд╛ред

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

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

@ рдмреЗрдВрдЯрди рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose.yaml рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

version: '2'
services:
  serviceName:
     volumes:
      - "${SSH_AUTH_SOCK}:/tmp/ssh-agent"
    environment:
      SSH_AUTH_SOCK: /tmp/ssh-agent

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ ssh- рдПрдЬреЗрдВрдЯ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рд╢реБрд░реВ рд╣реБрдЖ рд╣реИ рдФрд░ рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ (рдЖрдк рдЗрд╕реЗ ssh-add -L рдХрдорд╛рдВрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

Host *
  StrictHostKeyChecking no

рдХрдВрдЯреЗрдирд░ рдХреЗ .ssh/config.

рд╣рд╛рдп @WoZ! рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд╛рдлреА рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рджреВрдВрдЧрд╛ :)

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ, рдЖрдк рдЗрд╕реЗ рдбреЙрдХрд░ рд╣рдм рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдЕрдм рд╡рд╣рд╛рдВ рдПрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ :(

@garcianavalon рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ run , рди рдХрд┐ build ред рдореИрдХ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдЕрднреА рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯреВрдбреВ рд╕реВрдЪреА рдореЗрдВ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: https://github.com/docker/for-mac/issues/410

рд╣рдо рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП 2 рдФрд░ рд╕рдорд╛рдзрд╛рди рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВ:

1) рд╣рдорд╛рд░реЗ рд╡реАрдкреАрдПрди рдХреЗ рдкреАрдЫреЗ рдПрдирдкреАрдПрдо, рдкреАрдкреАрдЖрдИ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреИрдХреЗрдЬ рдорд┐рд░рд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕ рддрд░рд╣ рд╣рдореЗрдВ рдПрд╕рдПрд╕рдПрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

2) рд╕рднреА рд╣реЛрд╕реНрдЯ рдорд╢реАрди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рдЬреА рд░реЗрдкреЛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдирд┐рдЬреА рдкреИрдХреЗрдЬ рдХреЛ рдХреНрд▓реЛрди / рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ -v рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдбреЙрдХрд░ рдореЗрдВ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдбреЙрдХрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред

рдЬрд╣рд╛рдВ рддрдХ docker run , docker-ssh-agent-forward рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдХ/рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣реЛрд╕реНрдЯ рд╕реЗ known_hosts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдВрдЯреЗрдирд░ (рдХрдо рд╕реБрд░рдХреНрд╖рд┐рдд) рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЙрдкреА рдХрд░реЗрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ ssh-agent рдЬреНрдЮрд╛рдд рд╣реЛрд╕реНрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдбреЙрдХ рд░рди рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдирд┐рдЬреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд╕рд╛рде рдореВрд▓рднреВрдд рд╕рдорд╕реНрдпрд╛ рдбреЙрдХ рдмрд┐рд▓реНрдб рдХреИрд╢ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рд░рд╣реА рд╣реИ, рдЬреЛ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреА рдЕрд╡рдзрд┐ рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреА рдмрд┐рд▓реНрдб рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рдгрд╛рдУрдВ (рдЬреИрд╕реЗ package.json ) рдХреЛ md5/date рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЫрд╡рд┐ рдкрд░ рдзрдХреЗрд▓реЗрдВ рдФрд░ рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ рддреЛ рдЙрд╕реА рдЫрд╡рд┐ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЫрд╡рд┐ рдХреЗ рдирд╛рдо рдореЗрдВ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрдИ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред рдЗрд╕реЗ рдкреНрд░реА-рдЗрдВрд╕реНрдЯреЙрд▓ рдЗрдореЗрдЬ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рднреА рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП @aidanhs рдХреЗ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИред

рдпрд╣ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП @aidanhs рдХреЗ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИред

рдореЗрд░реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдиреЗ 1.9.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ 1.8.0 рдореЗрдВ рдкреЗрд╢ рдХреА рдЧрдИ рд╕реБрд╡рд┐рдзрд╛ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдирд╣реАрдВ рдереА рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @aidanhs!

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

рдореИрдВрдиреЗ рдиреЛрдб/рдПрдирдкреАрдПрдо рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/iheartradio/docker-node

рдмреЗрд╢рдХ, рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╣рдо 2-рдЪрд░рдгреАрдп рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрд░реЛрдд/рдХреБрдВрдЬреА/рдмрд┐рд▓реНрдб рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реА рдПрдХ "рдмрд┐рд▓реНрдб" рдЫрд╡рд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рдЯреИрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ "рддреИрдирд╛рддреА" рдЫрд╡рд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд┐рд▓реНрдб рдЫрд╡рд┐ рдХреЛ рддрдм рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ "рддреИрдирд╛рддреА" рдЫрд╡рд┐ рд╣реИред рдХрдВрдЯреЗрдирд░/рдкрд░рдд рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рд░рдЦрдиреЗ рдХрд╛ рдЗрд╕рдХрд╛ рдЕрдЪреНрдЫрд╛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред

@ рдмрд╛рдЗрдирд░реАрдЯреЗрдореНрдкрд▓-рдмреЗрдЯ365 рдПрдХ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/iheartradio/docker-node рджреЗрдЦреЗрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдПрд╕рдПрд╕рдПрдЪ рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдкреНрд░реА-рдЗрдВрд╕реНрдЯреЙрд▓ (рдирд┐рдЬреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддрдХ рдЖрдзрд╛рд░ рдЫрд╡рд┐), рдЗрдВрд╕реНрдЯреЙрд▓ (рдирд┐рдЬреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рд░рдирдЯрд╛рдЗрдо рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдХрдВрдЯреЗрдирд░ рд╕реНрдерд┐рддрд┐) рдФрд░ рдкреЛрд╕реНрдЯ-рдЗрдВрд╕реНрдЯреЙрд▓ (рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдерд╛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдирд┐рдЬреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА) рдЧрддрд┐ рдФрд░ рдЪрд┐рдВрддрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд░реЙрдХрд░ рджреЗрдЦреЗрдВ , рдпрд╣ рдПрдХ рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рд╣реИред

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

рдЕрднреА рднреА рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ? :(

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдирдИ рд╕реНрдХреНрд╡реИрд╢ рдЪреАрдЬрд╝ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? https://github.com/docker/docker/pull/22641 рд╣рдо рдЬрд┐рд╕ рдбреЙрдХрдЯрд░ рдореВрд▓ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рдЗрд╕реЗ рдЖрдЬрдорд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

2+ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдпрд╣ рдЕрднреА рддрдХ рдареАрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдХреГрдкрдпрд╛ рдбреЙрдХрд░ рдЯреАрдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░реЗрдВ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 1.13 рдореЗрдВ рдирдпрд╛ --squash рд╡рд┐рдХрд▓реНрдк рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
http://g.recordit.co/oSuMulfelK.gif

рдореИрдВ рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реВрдВ: docker build -t report-server --squash --build-arg SSH_KEY="$(cat ~/.ssh/github_private_key)" .

рддреЛ рдЬрдм рдореИрдВ docker history рдпрд╛ docker inspect рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреБрдВрдЬреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рдореЗрд░рд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

FROM node:6.9.2-alpine

ARG SSH_KEY

RUN apk add --update git openssh-client && rm -rf /tmp/* /var/cache/apk/* &&\
  mkdir -p /root/.ssh && chmod 0700 /root/.ssh && \
  ssh-keyscan github.com > /root/.ssh/known_hosts

RUN echo "$SSH_KEY" > /root/.ssh/id_rsa &&\
  chmod 0600 /root/.ssh/id_rsa

COPY package.json .

RUN npm install
RUN rm -f /root/.ssh/id_rsa

# Bundle app source
COPY . .

EXPOSE 3000

CMD ["npm","start"]

@ kienpham2000 , рдЖрдкрдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВ - рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ docker history рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ --no-trunc рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЬрд╛рдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЧреАрд▓реЗрд░ рдкрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдирд┐рдЬреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдбреЙрдХрдЯрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВ рдЗрддрд┐рд╣рд╛рд╕?

@ryanschwartz рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, --no-trunc рдкреВрд░реА рд▓рд╛рдирдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЙрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИред

@ kienpham2000
1.13 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдФрд░ рдЪреАрдЬ рдкреЗрд╢ рдХреА:

рд░рд╣рд╕реНрдп рдмрдирд╛рдПрдБ
тАв -рдмрд┐рд▓реНрдб-рд╕реАрдХреНрд░реЗрдЯ рдлреНрд▓реИрдЧ . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ
тАв рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди tmpfs рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ
рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВред
тАв https://github.com/docker/docker/pull/28079

рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХреЗ?

рдмрд┐рд▓реНрдб рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдиреЗ рдЗрд╕реЗ 1.13 рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ 1.14 рдореЗрдВ рдХрд░реЗрдВрдЧреЗред

15 рджрд┐рд╕рдВрдмрд░ 2016 рдХреЛ рд╕реБрдмрд╣ 9:45 рдмрдЬреЗ, "рдПрд▓реЗрдХреНрд╕" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@ kienpham2000 https://github.com/kienpham2000
1.13 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдФрд░ рдЪреАрдЬ рдкреЗрд╢ рдХреА:

рд░рд╣рд╕реНрдп рдмрдирд╛рдПрдБ
тАв -рдмрд┐рд▓реНрдб-рд╕реАрдХреНрд░реЗрдЯ рдлреНрд▓реИрдЧ . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ
тАв рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди tmpfs рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ
рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВред
тАв #28079 https://github.com/docker/docker/pull/28079

рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХреЗ?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/docker/docker/issues/6396#issuecomment-267393020 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AAdcPDxrctBP2TlCtXen-Y_uY8Y8B09Sks5rIXy2gaJpZM4CD4SM
.

рддреЛ рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж: рдирд╣реАрдВ, рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рддреБрдореНрд╣реЗрдВ рд╡рд╣ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Github рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрдо рдЬреЛрдЦрд┐рдо рд╡рд╛рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ/рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рд╕рдорд╛рдзрд╛рди рдПрд╕рдПрд╕рдПрдЪ рдЕрдЧреНрд░реЗрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕реЗ рд╡реИрдЧреНрд░рд╛рдВрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдХреНрдпреЛрдВ рд╣реИ?

@omarabid - рдХреНрдпрд╛ рдЖрдк Dockerfile рдХреЗ рднреАрддрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдирд┐рдЬреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЙрддреНрддрд░ рджреЗ рд░рд╣реЗ рд╣реИрдВ? рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рд╕реБрд░рдХреНрд╖рд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред

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

рдмрд┐рд▓реНрдб рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕реЙрд▓реНрдпреВрд╢рди рдиреЗ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд╣реИ, рд▓реЗрдХрд┐рди рдПрд╕рдПрд╕рдПрдЪ рдПрдЬреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдПрд╕рдПрд╕рдПрдЪ рдПрдЬреЗрдВрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

рдбреЗрд╡рд▓рдкрд░реНрд╕/рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯ/рдмрд┐рд▓реНрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рджреМрд░рд╛рди рдПрд╕рдПрд╕рдПрдЪ рдПрдЬреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рдпрд╣ рдПрдХ рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ, рдкрд╛рд╕рд╡рд░реНрдб-рд░рд╣рд┐рдд рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░рд╕реНрдд/рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рде рд╣реА, SSH рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдХреБрдВрдЬреА рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░/SSH_AUTH_SOCK рдЕрд╡рд╢реЗрд╖ рдЫрд╡рд┐ рдореЗрдВ рдкреАрдЫреЗ рд░рд╣ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдП рдмрд┐рдирд╛ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рддреГрддреАрдп рдкрдХреНрд╖ рдбреЙрдХрд░ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдирд╡реАрдирддрдо рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд┐рдд рдкреАрдЖрд░ рдХреЗ рджреМрд░рд╛рди рдЧреБрдкреНрдд рд╡реЙрд▓реНрдЯ рдЬрд▓реНрдж рд╣реА рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред

рдореИрдВ рд╣реЛрд╕реНрдЯ рд╡рд░реНрддрдорд╛рди рд░реЗрдкреЛ рдореЗрдВ рдПрд╕ 3 рд╕реЗ рд╕рд╛рдЭрд╛ рдирд┐рдЬреА рдХреБрдВрдЬреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдХреБрдВрдЬреА KMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рд╛рдо рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрдИ рд╣реИред рдПрдХ рдмрд╛рд░ рдХреБрдВрдЬреА рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, Dockerfile рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЙрд╕ рдХреБрдВрдЬреА рдХреЛ рдХреЙрдкреА рдХрд░реЗрдЧрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛, рд╕рд╛рдордЧреНрд░реА docker inspect рдпрд╛ docker history --no-trunc

рдкрд╣рд▓реЗ S3 рд╕реЗ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдореЗрдВ github рдирд┐рдЬреА рдХреБрдВрдЬреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

# build.sh
s3_key="s3://my-company/shared-github-private-key"
aws configure set s3.signature_version s3v4
aws s3 cp $s3_key id_rsa --region us-west-2 && chmod 0600 id_rsa

docker build -t app_name .

рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

FROM node:6.9.2-alpine

ENV id_rsa /root/.ssh/id_rsa
ENV app_dir /usr/src/app

RUN mkdir -p $app_dir
RUN apk add --update git openssh-client && rm -rf /tmp/* /var/cache/apk/* && mkdir -p /root/.ssh && ssh-keyscan github.com > /root/.ssh/known_hosts

WORKDIR $app_dir

COPY package.json .
COPY id_rsa $id_rsa
RUN npm install && npm install -g gulp && rm -rf $id_rsa

COPY . $app_dir
RUN rm -rf $app_dir/id_rsa

CMD ["start"]

ENTRYPOINT ["npm"]

@ kienpham2000 , рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЫрд╡рд┐ рдкрд░рдд рдореЗрдВ рдХреБрдВрдЬреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛? рдХреЙрдкреА рдФрд░ рд░рд┐рдореВрд╡ рдХреА рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдорд╛рдВрдб рдореЗрдВ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд▓реЗрдпрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реА рдЯреАрдо рдХрд▓ рддрдХ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рдереА, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврддреЗ рд╣реИрдВ:

  • рд╣рдо aws s3 cli рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ URL рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдкреВрд░реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ URL рдХреЛ рд░реЗрдкреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдлрд┐рд░ dockerfile рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЫрд╡рд┐ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
  • рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░рди рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ: рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реА-рд╕рд┐рдВрдЧ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдПрдирдкреАрдПрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдЪрд▓рд╛рдПрдВ, рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
    рдПрдХ рд╕рд┐рдВрдЧрд▓ рдХрдорд╛рдВрдб рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ ssh key рдХрд┐рд╕реА рднреА рд▓реЗрдпрд░ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдкреНрд░реА-рд╕рд╛рдЗрди URL рд╕реНрдЯреЛрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ URL 5 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

# build.sh
aws s3 presign s3://my_bucket/my_key --expires-in 300 > ./pre_sign_url
docker build -t my-service .

рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

FROM node

COPY . .

RUN eval "$(ssh-agent -s)" && \
    wget -i ./pre_sign_url -q -O - > ./my_key && \
    chmod 700 ./my_key && \
    ssh-add ./my_key && \
    ssh -o StrictHostKeyChecking=no [email protected] || true && \
    npm install --production && \
    rm ./my_key && \
    rm -rf ~/.ssh/*

ENTRYPOINT ["npm", "run"]

CMD ["start"]

@diegocsandrim рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ, рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рд╕рд╛рдорд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ

  • рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрдирд╛рдПрдБ
  • рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ
  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ
  • рдЙрдХреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ
  • ssh daemons PKI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдФрд░ рдЕрдЧрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╣рд░ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдХрд░реЗрдВ, рдЖрдЦрд┐рд░рдХрд╛рд░ рдХрд╛рдо рдХреЛ рдПрдХ рдмрд╛рд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд░реМрдореЗрди рдкреЗрдЯреНрд░реЛрд╡ рдмрд┐рд▓реНрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЙрд╕рдиреЗ рдХреЛрдИ рд╕реНрд░реЛрдд рдХреЛрдб рдиреЛрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рдЯрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рд╣реИ), рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

https://security.stackexchange.com/questions/30396/how-to-set-up-openssh-to-use-x509-pki-for-authentication

https://jamielinux.com/docs/openssl-certificate-authority/create-the-root-pair.html

@mehmetcodes : PKI рд╣реЛрдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкреАрдХреЗрдЖрдИ-рдЖрдзрд╛рд░рд┐рдд рдПрд╕рдПрд╕рдПрдЪ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдХреБрдВрдЬреА рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЬрдм рддрдХ рдЖрдкрдХрд╛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА рдмрд╣реБрдд рдХрдо рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдВрдЯреЗ рд╕реЗ рдХрдо), рдФрд░ рдЖрдк рдПрдХ рд╕рдлрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд░рджреНрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

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

рдУрд╣, рдпрд╣ рдЙрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣ рдЬрдВрдЧрд▓реА рдореЗрдВ рдХреНрдпреЛрдВ рдореМрдЬреВрдж рд╣реЛрдЧрд╛?

https://blog.cloudflare.com/red-october-cloudflares-open-source-implementation-of-the-two-man-rule/
https://blog.cloudflare.com/how-to-build-your-own-public-key-infrastructure/

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

рдЖрдк http://blog.cloud66.com/using-ssh-private-keys-securely-in-docker-build/ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ

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

рдХреМрди f.. рдореЛрдмрд╛рдЗрд▓ рд╣реИ?

@рд╕рдлреЗрдж рд░рдВрдЧ
Image of Moby

рдореИрдХреЛрдЬрд╝ рдкрд░ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ:

bash-3.2$ docker run -t -i -v "$SSH_AUTH_SOCK:/tmp/ssh_auth_sock" -e "SSH_AUTH_SOCK=/tmp/ssh_auth_sock" python:3.6 ssh-add -l
docker: Error response from daemon: Mounts denied:
The path /var/folders/yb/880w03m501z89p0bx7nsxt580000gn/T//ssh-DcwJrLqQ0Vu1/agent.10466
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.
.

/var/ рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдбреЙрдХрд░ рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ $SSH_AUTH_SOCK рдкрде рдХреЛ /private (рдпрд╛рдиреА рд╣рд▓ рдХрд┐рдП рдЧрдП рдЙрдкрдирд╛рдо рдкрде) рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:

bash-3.2$ docker run -t -i -v "/private$SSH_AUTH_SOCK:/tmp/ssh_auth_sock" -e "SSH_AUTH_SOCK=/tmp/ssh_auth_sock" python:3.6 ssh-add -l
Could not open a connection to your authentication agent.

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рд╣реИ ...

docker run -v ~/.ssh:/root/.ssh python:3.6 bash

?

docker build  --build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa_no_pass)" --build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa.pub)" --squash .

рдФрд░ рдлрд┐рд░ рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░:

ARG ssh_prv_key
ARG ssh_pub_key

# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
    chmod 0700 /root/.ssh && \
    ssh-keyscan github.com > /root/.ssh/known_hosts

# Add the keys and set permissions
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
    echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \
    chmod 600 /root/.ssh/id_rsa && \
    chmod 600 /root/.ssh/id_rsa.pub

рдФрд░ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ

RUN rm -f /root/.ssh/id_rsa /root/.ssh/id_rsa.pub

рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВред

рдпрд╣рд╛рдВ рдкрдХрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдирд┐рдЬреА рдХреБрдВрдЬреА рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдкрд░рддреЛрдВ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ ... рдЖрд░рдПрдо рдкрд┐рдЫрд▓реА рдкрд░рдд рд╕реЗ рдирд╣реАрдВ рд╣рдЯреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдбреЙрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдкрд░рдд рд╣реИред

рдХреНрдпрд╛ docker secret рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
WDYT @thaJeztah

рдбреЛрдХрд░ рд░рд╣рд╕реНрдп рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди (рдЕрднреА рддрдХ) рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЕрднреА рддрдХ docker run )

рдорд▓реНрдЯреА рд╕реНрдЯреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдРрд╕рд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдореЗрд░реЗ рдлреЛрди рдкрд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛, рддреЛ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕рд╛рд░ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рджреЗрдВ); https://gist.github.com/thaJeztah/836c4220ec024cf6dd48ffa850f07770

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

рдХреНрдпрд╛ Moby рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ? рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдХрдард┐рди рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╕реМрджрд╛ рдирд╣реАрдВ рд╣реИред

рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ

@yordis docker Builder рдПрдХ рдпрд╛ рджреЛ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЬрдореА рд╣реБрдИ рдереАред рдбреЙрдХрд░ рдЯреАрдо рдиреЗ рдХрд╣рд╛ рдХрд┐ рдмрд┐рд▓реНрдбрд░ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рддрдм рд╕реЗ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рджреЛ рдмрджрд▓рд╛рд╡ рд╣реБрдПред рд╕реНрдХреНрд╡реИрд╢ рдФрд░ рдореБрд╕реНрдЯрд▓реА рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдбред рддреЛ рдмрд┐рд▓реНрдбрдЯрд╛рдЗрдо рд░рд╣рд╕реНрдп рдЙрдирдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрд╕рдПрд╕рдПрдЪ-рдПрдЬреЗрдВрдЯ рдХреЗ рд░рдирдЯрд╛рдЗрдо рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ https://github.com/uber-common/docker-ssh-agent-forward рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ

рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдХрдард┐рди рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╕реМрджрд╛ рдирд╣реАрдВ рд╣реИред

@yordis рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╢реАрд░реНрд╖ рд╡рд┐рд╡рд░рдг рдХреЛ рдкрдврд╝рдирд╛, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ; рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐, рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдХрдиреАрдХреА рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдпрд╛ рдкреАрдЖрд░ рдХреЛ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ _build_ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ buildkit рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; https://github.com/moby/buildkit

@thaJeztah рдХрд╛рд╢ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдХреМрд╢рд▓ рд╣реЛрддреЗ рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ред

@villlem рдХреНрдпрд╛ рдЖрдк рдбреЙрдХрд░ рдЯреАрдо рд╕реЗ рдХреЛрдИ рд░реЛрдбрдореИрдк рдЬрд╛рдирддреЗ рд╣реИрдВ?

рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рд░рд┐рдкреЛрд░реНрдЯ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ; https://github.com/moby/moby/tree/master/reports/builder рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЕрднреА рднреА рдирд╡реАрдирддрдо рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдорджрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рд╣рдо @diegocsandrim рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди S3 рдореЗрдВ рдПрдХ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб SSH рдХреБрдВрдЬреА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЪрд░рдг рдХреЗ рд╕рд╛рдеред

рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рдХреЛ рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдбреЛрдХрд░ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдШреВрд░реНрдгрди рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) .

рдмрд┐рд▓реНрдб.рд╢ рдореЗрдВ:

BUCKET_NAME=my_bucket
KEY_FILE=my_unencrypted_key
openssl rand -base64 -out passfile 64
openssl enc -aes-256-cbc -salt -in $KEY_FILE -kfile passfile | aws s3 cp - s3://$BUCKET_NAME/$(hostname).enc_key
aws s3 presign s3://$BUCKET_NAME/$(hostname).enc_key --expires-in 300 > ./pre_sign_url
docker build -t my_service

рдФрд░ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ:

COPY . .

RUN eval "$(ssh-agent -s)" && \
    wget -i ./pre_sign_url -q -O - | openssl enc -aes-256-cbc -d -kfile passfile > ./my_key && \
    chmod 700 ./my_key && \
    ssh-add ./my_key && \
    mkdir /root/.ssh && \
    chmod 0700 /root/.ssh && \
    ssh-keyscan github.com > /root/.ssh/known_hosts && \
    [commands that require SSH access to Github] && \
    rm ./my_key && \
    rm ./passfile && \
    rm -rf /root/.ssh/

рдпрджрд┐ рдЖрдк docker run рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ .ssh рдХреЛ --mount type=bind,source="${HOME}/.ssh/",target="/root/.ssh/",readonly рд╕рд╛рде рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд░реАрдбреЛрдирд▓реА рдЬрд╛рджреВ рд╣реИ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ ssh рдореВрд▓ рд░реВрдк рд╕реЗ 0600 рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЦреБрд╢ рд╣реИред рдЖрдк -u root:$(id -u $USER) рд╕рд╛рде рднреА рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдорд╛рди рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦ рд╕рдХреЗ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдЙрдиреНрд╣реЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ chmod/chown рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ .

рдЖрдЦрд┐рд░рдХрд╛рд░ред

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

рдлрд┐рд░, рдПрдХ рдирдпрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ FROM рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдХреБрдЫ рд╕рдмрд╕реЗрдЯ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП COPY --from=builder рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ ред

(рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рддрдХ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд░реНрдгрд┐рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ ...)

@ рдмреЗрдВрдЯрди рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рд╕рд╣рд┐рдд рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рд╣реИ:

  1. рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ _рд╕реНрдерд╛рди рдХреЛ рдПрдХ рдмрд┐рд▓реНрдб рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ GITHUB_SSH_KEY , рдмрд╣реБ-рдЪрд░рдг рдирд┐рд░реНрдорд╛рдг рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ
  2. рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдХрд╣реАрдВ рднреА рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рд╡рд╣рд╛рдВ рдХреБрдВрдЬреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ADD рдпрд╛ COPY рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдореБрдЦреНрдп рд╕реНрдерд╛рди рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрде рд╣реИ (рдФрд░ рдпреВрдЖрд░рдПрд▓ рдирд╣реАрдВ), рддреЛ рдЗрд╕реЗ _not_ .dockerignore рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ COPY рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЪрд░рдг 4 рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ...
  3. рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЪрд╛рдмреА рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ GitHub рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд░реВрдмреА рдХреЗ bundler рдФрд░ рдирд┐рдЬреА рдЬреЗрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдкрдХреЛ рдХрд┐рддрдирд╛ рдХреЛрдбрдмреЗрд╕ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк COPY . рдпрд╛ ADD . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдХреБрдВрдЬреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
  4. рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдХреБрдВрдЬреА рд╣рдЯрд╛ рджреЗрдВ ред рдпрджрд┐ рдореБрдЦреНрдп рд╕реНрдерд╛рди рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрде рд╣реИ (рдФрд░ рдпреВрдЖрд░рдПрд▓ рдирд╣реАрдВ), рддреЛ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЖрдкрдиреЗ ADD . рдпрд╛ COPY . рдпрд╣ рд╢рд╛рдпрдж _рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛_ рд╣реИ рдЕрдВрддрд┐рдо рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд╢рд╛рдпрдж RUN rm -vf ${GITHUB_SSH_KEY} рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  5. рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХрд╛ рдРрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ WORKDIR , рддреЛ рджреВрд╕рд░рд╛ рдмрд┐рд▓реНрдб рдЪрд░рдг рдПрдХ рдирдП FROM рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬреЛ рдЖрдкрдХреА рд╡рд╛рдВрдЫрд┐рдд рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рд░рдирдЯрд╛рдЗрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдкрд╣рд▓реЗ рдЪрд░рдг рд╕реЗ WORKDIR рд╡рд┐рд░реБрджреНрдз COPY --from=builder рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

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

########################################################################
# BUILD STAGE 1 - Start with the same image that will be used at runtime
FROM ubuntu:latest as builder

# ssh is used to test GitHub access
RUN apt-get update && apt-get -y install ssh

# The GITHUB_SSH_KEY Build Argument must be a path or URL
# If it's a path, it MUST be in the docker build dir, and NOT in .dockerignore!
ARG GITHUB_SSH_KEY=/path/to/.ssh/key

  # Set up root user SSH access for GitHub
ADD ${GITHUB_SSH_KEY} /root/.ssh/id_rsa

# Add the full application codebase dir, minus the .dockerignore contents...
# WARNING! - if the GITHUB_SSH_KEY is a file and not a URL, it will be added!
COPY . /app
WORKDIR /app

# Build app dependencies that require SSH access here (bundle install, etc.)
# Test SSH access (this returns false even when successful, but prints results)
RUN ssh -o StrictHostKeyChecking=no -vT [email protected] 2>&1 | grep -i auth

# Finally, remove the $GITHUB_SSH_KEY if it was a file, so it's not in /app!
# It can also be removed from /root/.ssh/id_rsa, but you're probably not going
# to COPY that directory into the runtime image.
RUN rm -vf ${GITHUB_SSH_KEY} /root/.ssh/id*

########################################################################
# BUILD STAGE 2 - copy the compiled app dir into a fresh runtime image
FROM ubuntu:latest as runtime
COPY --from=builder /app /app

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

@jbiel рдПрдХ рдФрд░ рд╡рд░реНрд╖, рдФрд░ рдореБрдЭреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╡рд╣ рд╡реЙрд▓реНрдЯ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдпрд╣рд╛рдВ 2 рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╕реНрдХреНрд╡реИрд╢ рдФрд░ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХрдВрдЯреЗрдирд░ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ @benton рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

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

рд╣рд▓ рдХрд░рдирд╛ред
рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ (~/рдмрд┐рди/рдбреЙрдХрд░-рд▓рд┐рдЦреЗрдВ рдпрд╛ рдкрд╕рдВрдж рдХрд░реЗрдВ):

#!/bin/bash

trap 'kill $(jobs -p)' EXIT
socat TCP-LISTEN:56789,reuseaddr,fork UNIX-CLIENT:${SSH_AUTH_SOCK} &

/usr/bin/docker-compose $@

рдФрд░ Dockerfile рдореЗрдВ socat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:

...
ENV SSH_AUTH_SOCK /tmp/auth.sock
...
  && apk add --no-cache socat openssh \
  && /bin/sh -c "socat -v UNIX-LISTEN:${SSH_AUTH_SOCK},unlink-early,mode=777,fork TCP:172.22.1.11:56789 &> /dev/null &" \
  && bundle install \
...
or any other ssh commands will works

рдлрд┐рд░ docker-compose build рдЪрд▓рд╛рдПрдВ

@ рдмреЗрдВрдЯрди рдЖрдк RUN rm -vf ${GITHUB_SSH_KEY} /root/.ssh/id* рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл RUN rm -vf /root/.ssh/id* рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ред

@ рдмреЗрдВрдЯрди рдФрд░ рдпрд╣ рднреА рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ:

RUN ssh -o StrictHostKeyChecking=no -vT [email protected] 2>&1

рдЖрдкрдХреЛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛

ARGS USERNAME
ARGS PASSWORD
RUN git config --global url."https://${USERNAME}:${PASSWORD}@github.com".insteadOf "ssh://[email protected]"

рдлрд┐рд░ рд╕рд╛рде рдмрдирд╛рдПрдБ

docker build --build-arg USERNAME=use --build-arg PASSWORD=pwd. -t service

рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рдирд┐рдЬреА рдЧрд┐рдЯ рд╕рд░реНрд╡рд░ рдХреЛ username:password рдХреНрд▓реЛрди рд░реЗрдкреЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@zeayes RUN рдХрдорд╛рдВрдб рдХрдВрдЯреЗрдирд░ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рддреЛ рдЖрдкрдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рджреВрд╕рд░реЗ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рд╕рд╣реА; --build-arg / ARG , рд╡реЗ рдорд╛рди рдмрд┐рд▓реНрдб рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ _is_ рд╕рдВрднрд╡ рд╣реИ _рдФрд░_ рдЙрд╕ рд╣реЛрд╕реНрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ рдЬрд┐рд╕ рдкрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ (рдпрд╛рдиреА, рдХрд┐рд╕реА рднреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд╛рдиреАрдп рдмрд┐рд▓реНрдб рдЗрддрд┐рд╣рд╛рд╕ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ), _рдФрд░_ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдмрд┐рд▓реНрдб-рд╕реНрдЯреЗрдЬ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдзрдХреЗрд▓рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, USERNAME рдФрд░ PASSWORD рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЪрд░рдг ("рдмрд┐рд▓реНрдбрд░") рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ;

FROM something AS builder
ARG USERNAME
ARG PASSWORD
RUN something that uses $USERNAME and $PASSWORD

FROM something AS finalstage
COPY --from= builder /the/build-artefacts /usr/bin/something

рдпрджрд┐ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ ("рдЕрдВрддрд┐рдо рдЪрд░рдг" рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд) рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдзрдХреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдЫрд╡рд┐ рдореЗрдВ USERNAME рдФрд░ PASSWORD рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

_рд╣рд╛рд▓рд╛рдБрдХрд┐_, рд╕реНрдерд╛рдиреАрдп рдмрд┐рд▓реНрдб рдХреИрд╢ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ, рд╡реЗ рдЪрд░ рдЕрднреА рднреА рд░рд╣реЗрдВрдЧреЗ (рдФрд░ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд)ред

рдЕрдЧрд▓реА рдкреАрдврд╝реА рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ ( рдмрд┐рд▓реНрдбрдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ

@kinnalru @thaJeztah thx, рдореИрдВ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдХреИрд╢ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, thx!

@zeayes рдУрд╣! рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рддреНрд░реБрдЯрд┐ рдХреА рд╣реИ; рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ FROM builder .. рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╣реИ; https://gist.github.com/thaJeztah/af1c1e3da76d7ad6ce2abab891506e50

@kinnalru рдХреА рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ https://github.com/moby/moby/issues/6396#issuecomment -348103398

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, docker рдХрднреА рднреА рдЖрдкрдХреА рдирд┐рдЬреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЖрдЬ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝реЗред

рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдмреЗрд╣рддрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ --network=host рдФрд░ localhost рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @kinnalru рдХреЛрдб рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдЖрдИрдкреА рдкрддрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред ( рдпрд╣рд╛рдБ рд╕рд╛рд░ )

рдпрд╣ docker_with_host_ssh.sh , рдпрд╣ рдбреЙрдХрдЯрд░ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдФрд░ SSH_AUTH_SOCK рдХреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдкреЛрд░реНрдЯ рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

#!/usr/bin/env bash

# ensure the processes get killed when we're done
trap 'kill $(jobs -p)' EXIT

# create a connection from port 56789 to the unix socket SSH_AUTH_SOCK (which is used by ssh-agent)
socat TCP-LISTEN:56789,reuseaddr,fork UNIX-CLIENT:${SSH_AUTH_SOCK} &
# Run docker
# Pass it all the command line args ($@)
# set the network to "host" so docker can talk to localhost
docker $@ --network='host'

Dockerfile рдореЗрдВ рд╣рдо рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЛ рд╣реЛрд╕реНрдЯреНрд╕ ssh-agent рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:

FROM python:3-stretch

COPY . /app
WORKDIR /app

RUN mkdir -p /tmp

# install socat and ssh to talk to the host ssh-agent
RUN  apt-get update && apt-get install git socat openssh-client \
  # create variable called SSH_AUTH_SOCK, ssh will use this automatically
  && export SSH_AUTH_SOCK=/tmp/auth.sock \
  # make SSH_AUTH_SOCK useful by connecting it to hosts ssh-agent over localhost:56789
  && /bin/sh -c "socat UNIX-LISTEN:${SSH_AUTH_SOCK},unlink-early,mode=777,fork TCP:localhost:56789 &" \
  # stuff I needed my ssh keys for
  && mkdir -p ~/.ssh \
  && ssh-keyscan gitlab.com > ~/.ssh/known_hosts \
  && pip install -r requirements.txt

рдлрд┐рд░ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЕрдкрдиреА рдЫрд╡рд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

$ docker_with_host_ssh.sh build -f ../docker/Dockerfile .

@cowlicks рдЖрдкрдХреЛ рдЗрд╕ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди SSH рдПрдЬреЗрдВрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker build --ssh рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИ; https://github.com/docker/cli/pull/1419ред Dockerfile рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрднреА рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ Dockerfile рдореЗрдВ рдПрдХ syntax=.. рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реНрд░рдВрдЯрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЙрджрд╛рд╣рд░рдг/рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦреЗрдВ)ред

рд╡рд╣ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЖрдЧрд╛рдореА 18.09 рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм 18.09 рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдФрд░ рдордзреНрдпрдо рдкреЛрд╕реНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдХреНрд░реЙрд╕-рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред

рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕:
https://docs.docker.com/develop/develop-images/build_enhancements/#using -ssh-to-access-private-data-in-builds

рдордзреНрдпрдо рдкрдж:
https://medium.com/@tonistiigi/build -secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066

рдмрд╣реБрдд рд╣реА рд░реЛрдорд╛рдВрдЪрдХред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА docker build --ssh рд╣реИ

рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрдкреЛрдЬрд╝ рдЗрд╢реНрдпреВ рдпрд╣рд╛рдБ: docker/compose#6865. рдЕрдЧрд▓реЗ рд░рд┐рд▓реАрдЬ рдЙрдореНрдореАрджрд╡рд╛рд░, 1.25.0-рдЖрд░рд╕реА3 ( рд░рд┐рд▓реАрдЬ ) рдореЗрдВ рдЙрддрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдЯ рдХрд┐рдП рдЧрдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрдЪ рдПрдЬреЗрдВрдЯ рд╕реЙрдХреЗрдЯ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ailjushkin picture ailjushkin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

karellm picture karellm  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cmingxu picture cmingxu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

subchen picture subchen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

netoneko picture netoneko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ