Merge pull request #1585 from bamarni/overlay2

[docker] add overlay2 storage driver
This commit is contained in:
David Ashpole 2017-05-31 14:36:07 -07:00 committed by GitHub
commit e5edc45865
6 changed files with 30 additions and 11 deletions

View File

@ -84,6 +84,7 @@ const (
devicemapperStorageDriver storageDriver = "devicemapper"
aufsStorageDriver storageDriver = "aufs"
overlayStorageDriver storageDriver = "overlay"
overlay2StorageDriver storageDriver = "overlay2"
zfsStorageDriver storageDriver = "zfs"
)

View File

@ -195,8 +195,8 @@ func newDockerContainerHandler(
switch storageDriver {
case aufsStorageDriver:
rootfsStorageDir = path.Join(storageDir, string(aufsStorageDriver), aufsRWLayer, rwLayerID)
case overlayStorageDriver:
rootfsStorageDir = path.Join(storageDir, string(overlayStorageDriver), rwLayerID)
case overlayStorageDriver, overlay2StorageDriver:
rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID)
case zfsStorageDriver:
status, err := Status()
if err != nil {
@ -411,7 +411,7 @@ func (self *dockerContainerHandler) getFsStats(stats *info.ContainerStats) error
// Device has to be the pool name to correlate with the device name as
// set in the machine info filesystems.
device = self.poolName
case aufsStorageDriver, overlayStorageDriver:
case aufsStorageDriver, overlayStorageDriver, overlay2StorageDriver:
deviceInfo, err := self.fsInfo.GetDirFsDevice(self.rootfsStorageDir)
if err != nil {
return fmt.Errorf("unable to determine device info for dir: %v: %v", self.rootfsStorageDir, err)

View File

@ -266,7 +266,7 @@ func getDockerImagePaths(context Context) map[string]struct{} {
// TODO(rjnagal): Detect docker root and graphdriver directories from docker info.
dockerRoot := context.Docker.Root
for _, dir := range []string{"devicemapper", "btrfs", "aufs", "overlay", "zfs"} {
for _, dir := range []string{"devicemapper", "btrfs", "aufs", "overlay", "overlay2", "zfs"} {
dockerImagePaths[path.Join(dockerRoot, dir)] = struct{}{}
}
for dockerRoot != "/" && dockerRoot != "." {

View File

@ -418,6 +418,27 @@ func TestAddDockerImagesLabel(t *testing.T) {
},
expectedDockerDevice: "/dev/sda1",
},
{
name: "[overlay2] root fs inside container - /var/lib/docker bindmount",
mounts: []*mount.Info{
{
Source: "overlay",
Mountpoint: "/",
Fstype: "overlay",
},
{
Source: "/dev/sdb1",
Mountpoint: "/var/lib/docker",
Fstype: "ext4",
},
{
Source: "/dev/sdb2",
Mountpoint: "/var/lib/docker/overlay2",
Fstype: "ext4",
},
},
expectedDockerDevice: "/dev/sdb2",
},
}
for _, tt := range tests {

View File

@ -91,6 +91,7 @@ func New(t *testing.T) Framework {
const (
Aufs string = "aufs"
Overlay string = "overlay"
Overlay2 string = "overlay2"
DeviceMapper string = "devicemapper"
Unknown string = ""
)
@ -276,12 +277,8 @@ func (self dockerActions) StorageDriver() string {
idx := strings.LastIndex(line, ": ") + 2
driver := line[idx:]
switch driver {
case Aufs:
return Aufs
case Overlay:
return Overlay
case DeviceMapper:
return DeviceMapper
case Aufs, Overlay, Overlay2, DeviceMapper:
return driver
default:
return Unknown
}

View File

@ -333,7 +333,7 @@ func TestDockerFilesystemStats(t *testing.T) {
}
needsBaseUsageCheck := false
switch storageDriver {
case framework.Aufs, framework.Overlay, framework.DeviceMapper:
case framework.Aufs, framework.Overlay, framework.Overlay2, framework.DeviceMapper:
needsBaseUsageCheck = true
}
pass := false