рдмрдЧреНрд╕ рдХреЗ рд▓рд┐рдП:
рдкреИрдХрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ sha256 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рд╕рд╣реА рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде sha рд╕реЗ /var/lib/docker/image/aufs/repositories.json рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдпрд╣ рдИрд╕реАрдЖрд░ рдХреЛ рдкреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрдЯрд░ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрдЯрд░ рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрдкрдпреЛрдЧ: рдбреЙрдХрдЯрд░ рдкреБрд╢ [рд╡рд┐рдХрд▓реНрдк] NAME[:TAG] рд╣рд╛рд▓рд╛рдВрдХрд┐
2016/03/02 16:37:02 рдпреВрдЖрдИ: рдбреЙрдХрд░ (рдбреЙрдХрд░-рдкреБрд╢): рдкреБрд╢рд┐рдВрдЧ: sha256:2e18ee540e6941f218f27d8a38ae5b60bb9aaef3953ef23aa0d4cfa30ac82b35
2016/03/02 16:37:02 рдкреИрдХрд░: 2016/03/02 16:37:02 рдирд┐рд╖реНрдкрд╛рджрди: /usr/bin/docker [рдкреБрд╢ sha256:2e18ee540e6941f218f27d8a38ae5b60bb9aaef3953ef23aa0d4cfa30ac82b35]
рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ sha256 рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ sha256 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рд╕реНрд░реЛрдд рдЬрд┐рдореНрдореЗрджрд╛рд░
https://github.com/mitchellh/packer/blob/master/post-processor/docker-push/post-processor.go#L86 -L102
name := artifact.Id()
if i := strings.Index(name, "/"); i >= 0 {
// This should always be true because the / is required. But we have
// to get the index to this so we don't accidentally strip off the port
if j := strings.Index(name[i:], ":"); j >= 0 {
name = name[:i+j]
}
}
ui.Message("Pushing: " + name)
if err := driver.Push(name); err != nil {
return nil, false, err
}
return nil, false, nil
}
рдкреИрдХрд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕, рд╡рд╣реА рддреНрд░реБрдЯрд┐ред
[ рд░реВрдЯ@рдЧреНрд░рд╛рдлреАрди рдкреИрдХрд░_рдЕрдиреНрд╕рд┐рдмрд▓]# рдбреЙрдХрд░ рдкреБрд╢ sha256:82b1e1e0e34c1aa59fe90287812a0867b184c1287313ea04c4dd80971e57e9fe
рдкреБрд╢ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ [docker.io/library/sha256]
рднрдВрдбрд╛рд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ: sha256
PACKER_LOG=1 packer build template.json
рд╕реЗ рдбреАрдмрдЧ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯредрдкреИрдХрд░ 0.8.6 . рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛
рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдк рдЕрдкрдиреЗ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реАрдзреЗ рдмрд┐рд▓реНрдбрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдмрдЬрд╛рдп docker-push
рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣рд╛ рд╣реИ docker-tag
, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк docker-push
рджреЗрдЦрддреЗ рд╣реИрдВ
рдпрджрд┐ рдЖрдк рдбреЙрдХрд░ рдкреЗрдЬ рдкрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪрд┐рдпрд╛рдВ рд╣реИрдВред ( [ ]
рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯред)
рдпрд╣ рдПрдХ рд╕рд╣рдЬ рд╡рд┐рдлрд▓рддрд╛ рдореЛрдб рдирд╣реАрдВ рд╣реИред рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд╛рдлреА рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдЦреБрдж рдПрдХ рдмрдЧ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рд╡реИрдЧреНрд░рд╛рдВрдЯ .box
_and_ рдПрдХ .tar
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдбреЙрдХрдЯрд░ рдмрд┐рд▓реНрдб рдХреЛ v1.2.3
_and_ staging
рдпрд╛ рдкреБрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ECS _and_ DockerHub рдкрд░ рдЙрд╕реА рд╕рдордп рдЖрдк рдмрд┐рд▓реНрдб рдХреЛ рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдк рдЕрдкрдиреЗ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реАрдзреЗ рдмрд┐рд▓реНрдбрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдмрдЬрд╛рдп
docker-push
рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣рд╛ рд╣реИdocker-tag
, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкdocker-push
рджреЗрдЦрддреЗ рд╣реИрдВрдпрджрд┐ рдЖрдк рдбреЙрдХрд░ рдкреЗрдЬ рдкрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪрд┐рдпрд╛рдВ рд╣реИрдВред (
[ ]
рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯред)рдпрд╣ рдПрдХ рд╕рд╣рдЬ рд╡рд┐рдлрд▓рддрд╛ рдореЛрдб рдирд╣реАрдВ рд╣реИред рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд╛рдлреА рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдЦреБрдж рдПрдХ рдмрдЧ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рд╡реИрдЧреНрд░рд╛рдВрдЯ
.box
_and_ рдПрдХ.tar
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдбреЙрдХрдЯрд░ рдмрд┐рд▓реНрдб рдХреЛv1.2.3
_and_staging
рдпрд╛ рдкреБрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ECS _and_ DockerHub рдкрд░ рдЙрд╕реА рд╕рдордп рдЖрдк рдмрд┐рд▓реНрдб рдХреЛ рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред