mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Call "VolumeDriver.Unmount" during container stop.
"VolumeDriver.Mount" is being called on container start. Make the symmetric call on container stop. Signed-off-by: Anusha Ragunathan <anusha@docker.com>
This commit is contained in:
parent
6c500c00d2
commit
d576509d8a
1 changed files with 34 additions and 0 deletions
|
@ -49,6 +49,40 @@ func (container *Container) IpcMounts() []Mount {
|
|||
|
||||
// UnmountVolumes explicitly unmounts volumes from the container.
|
||||
func (container *Container) UnmountVolumes(forceSyscall bool, volumeEventLog func(name, action string, attributes map[string]string)) error {
|
||||
var (
|
||||
volumeMounts []volume.MountPoint
|
||||
err error
|
||||
)
|
||||
|
||||
for _, mntPoint := range container.MountPoints {
|
||||
dest, err := container.GetResourcePath(mntPoint.Destination)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
volumeMounts = append(volumeMounts, volume.MountPoint{Destination: dest, Volume: mntPoint.Volume, ID: mntPoint.ID})
|
||||
|
||||
}
|
||||
|
||||
// atm, this is a no-op.
|
||||
if volumeMounts, err = appendNetworkMounts(container, volumeMounts); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, volumeMount := range volumeMounts {
|
||||
if volumeMount.Volume != nil {
|
||||
if err := volumeMount.Volume.Unmount(volumeMount.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
volumeMount.ID = ""
|
||||
|
||||
attributes := map[string]string{
|
||||
"driver": volumeMount.Volume.DriverName(),
|
||||
"container": container.ID,
|
||||
}
|
||||
volumeEventLog(volumeMount.Volume.Name(), "unmount", attributes)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue