mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Fix issue with cp to container volume dir
In some cases, attempting to `docker cp` to a container's volume dir would fail due to the volume mounts not existing after performing a bind-mount on the container path prior to doing a pivot_root. This does not seem to be effecting all systems, but was found to be a problem on centos. The solution is to use an `rbind` rather than `bind` so that any existing mounts are carried over. The `MakePrivate` on `path` is no longer neccessary since we are already doing `MakeRPrivate` on `/`. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
		
							parent
							
								
									b2641bd9df
								
							
						
					
					
						commit
						e6eef7eb49
					
				
					 1 changed files with 5 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -30,9 +30,11 @@ func chroot(path string) (err error) {
 | 
			
		|||
	if err := mount.MakeRPrivate("/"); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	// ensure path is a mountpoint
 | 
			
		||||
	if err := mount.MakePrivate(path); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 | 
			
		||||
	if mounted, _ := mount.Mounted(path); !mounted {
 | 
			
		||||
		if err := mount.Mount(path, path, "bind", "rbind,rw"); err != nil {
 | 
			
		||||
			return realChroot(path)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// setup oldRoot for pivot_root
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue