Volume mounts need to use "Binds" API field
Swarm was putting volume type mounts into the container config's
"Volumes" field, but really these need to go into "Binds".
"Volumes" is only for normal "-v /foo" volumes, not named volumes or
anything else.
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
(cherry picked from commit 2bc2165cbf
)
Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
parent
bb41792de2
commit
855dc5ba79
1 changed files with 4 additions and 5 deletions
|
@ -91,13 +91,12 @@ func (c *containerConfig) image() string {
|
|||
func (c *containerConfig) volumes() map[string]struct{} {
|
||||
r := make(map[string]struct{})
|
||||
|
||||
for _, mount := range c.spec().Mounts {
|
||||
for _, m := range c.spec().Mounts {
|
||||
// pick off all the volume mounts.
|
||||
if mount.Type != api.MountTypeVolume {
|
||||
if m.Type != api.MountTypeVolume || m.Source != "" {
|
||||
continue
|
||||
}
|
||||
|
||||
r[fmt.Sprintf("%s:%s", mount.Target, getMountMask(&mount))] = struct{}{}
|
||||
r[m.Target] = struct{}{}
|
||||
}
|
||||
|
||||
return r
|
||||
|
@ -165,7 +164,7 @@ func (c *containerConfig) bindMounts() []string {
|
|||
|
||||
for _, val := range c.spec().Mounts {
|
||||
mask := getMountMask(&val)
|
||||
if val.Type == api.MountTypeBind {
|
||||
if val.Type == api.MountTypeBind || (val.Type == api.MountTypeVolume && val.Source != "") {
|
||||
r = append(r, fmt.Sprintf("%s:%s:%s", val.Source, val.Target, mask))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue