From fa228d8cbc3778a9abbab49208b60b31bf026621 Mon Sep 17 00:00:00 2001 From: Lei Jitang Date: Fri, 6 Feb 2015 20:31:53 +0800 Subject: [PATCH] Fix create volume /etc cover /etc/{hosts,resolv.conf,hostname} Signed-off-by: Lei Jitang --- daemon/volumes.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/daemon/volumes.go b/daemon/volumes.go index fdfc35a932..a367798786 100644 --- a/daemon/volumes.go +++ b/daemon/volumes.go @@ -316,8 +316,23 @@ func validMountMode(mode string) bool { } func (container *Container) setupMounts() error { - mounts := []execdriver.Mount{ - {Source: container.ResolvConfPath, Destination: "/etc/resolv.conf", Writable: true, Private: true}, + mounts := []execdriver.Mount{} + + // Mount user specified volumes + // Note, these are not private because you may want propagation of (un)mounts from host + // volumes. For instance if you use -v /usr:/usr and the host later mounts /usr/share you + // want this new mount in the container + // These mounts must be ordered based on the length of the path that it is being mounted to (lexicographic) + for _, path := range container.sortedVolumeMounts() { + mounts = append(mounts, execdriver.Mount{ + Source: container.Volumes[path], + Destination: path, + Writable: container.VolumesRW[path], + }) + } + + if container.ResolvConfPath != "" { + mounts = append(mounts, execdriver.Mount{Source: container.ResolvConfPath, Destination: "/etc/resolv.conf", Writable: true, Private: true}) } if container.HostnamePath != "" { @@ -334,19 +349,6 @@ func (container *Container) setupMounts() error { } } - // Mount user specified volumes - // Note, these are not private because you may want propagation of (un)mounts from host - // volumes. For instance if you use -v /usr:/usr and the host later mounts /usr/share you - // want this new mount in the container - // These mounts must be ordered based on the length of the path that it is being mounted to (lexicographic) - for _, path := range container.sortedVolumeMounts() { - mounts = append(mounts, execdriver.Mount{ - Source: container.Volumes[path], - Destination: path, - Writable: container.VolumesRW[path], - }) - } - container.command.Mounts = mounts return nil }