Skip to content

Commit

Permalink
graphdriver: build tags
Browse files Browse the repository at this point in the history
Enable build tags for all the graphdrivers to be excludable.

As an example:
```
$ go build
$ ls -l docker
-rwxr-xr-x 1 vbatts vbatts 18400158 Mar 14 14:22 docker*
$ go build -tags "exclude_graphdriver_aufs exclude_graphdriver_vfs exclude_graphdriver_devicemapper"
$ ls -l docker
-rwxr-xr-x 1 vbatts vbatts 17467068 Mar 14 14:22 docker*
```

Docker-DCO-1.1-Signed-off-by: Vincent Batts <vbatts@redhat.com> (github: vbatts)
  • Loading branch information
vbatts committed Mar 18, 2014
1 parent 68dc189 commit 670ce98
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 8 deletions.
17 changes: 17 additions & 0 deletions hack/PACKAGERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,23 @@ AppArmor, you will need to set `DOCKER_BUILDTAGS` as follows:
export DOCKER_BUILDTAGS='apparmor'
```

There are build tags for disabling graphdrivers as well. By default, support
for all graphdrivers are built in.

To disable vfs
```bash
export DOCKER_BUILDTAGS='exclude_graphdriver_vfs'
```

To disable devicemapper
```bash
export DOCKER_BUILDTAGS='exclude_graphdriver_devicemapper'
```
To disable aufs
```bash
export DOCKER_BUILDTAGS='exclude_graphdriver_aufs'
```

### Static Daemon

If it is feasible within the constraints of your distribution, you should
Expand Down
11 changes: 3 additions & 8 deletions runtime/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ import (
"github.com/dotcloud/docker/runtime/execdriver/execdrivers"
"github.com/dotcloud/docker/runtime/execdriver/lxc"
"github.com/dotcloud/docker/runtime/graphdriver"
"github.com/dotcloud/docker/runtime/graphdriver/aufs"
_ "github.com/dotcloud/docker/runtime/graphdriver/btrfs"
_ "github.com/dotcloud/docker/runtime/graphdriver/devmapper"
_ "github.com/dotcloud/docker/runtime/graphdriver/vfs"
_ "github.com/dotcloud/docker/runtime/networkdriver/lxc"
"github.com/dotcloud/docker/runtime/networkdriver/portallocator"
"github.com/dotcloud/docker/utils"
Expand Down Expand Up @@ -652,11 +649,9 @@ func NewRuntimeFromDirectory(config *daemonconfig.Config, eng *engine.Engine) (*
return nil, err
}

if ad, ok := driver.(*aufs.Driver); ok {
utils.Debugf("Migrating existing containers")
if err := ad.Migrate(config.Root, graph.SetupInitLayer); err != nil {
return nil, err
}
// Migrate the container if it is aufs and aufs is enabled
if err = migrateIfAufs(driver, config.Root); err != nil {
return nil, err
}

utils.Debugf("Creating images graph")
Expand Down
22 changes: 22 additions & 0 deletions runtime/runtime_aufs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// +build !exclude_graphdriver_aufs

package runtime

import (
"github.com/dotcloud/docker/graph"
"github.com/dotcloud/docker/runtime/graphdriver"
"github.com/dotcloud/docker/runtime/graphdriver/aufs"
"github.com/dotcloud/docker/utils"
)

// Given the graphdriver ad, if it is aufs, then migrate it.
// If aufs driver is not built, this func is a noop.
func migrateIfAufs(driver graphdriver.Driver, root string) error {
if ad, ok := driver.(*aufs.Driver); ok {
utils.Debugf("Migrating existing containers")
if err := ad.Migrate(root, graph.SetupInitLayer); err != nil {
return err
}
}
return nil
}
7 changes: 7 additions & 0 deletions runtime/runtime_devicemapper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// +build !exclude_graphdriver_devicemapper

package runtime

import (
_ "github.com/dotcloud/docker/runtime/graphdriver/devmapper"
)
11 changes: 11 additions & 0 deletions runtime/runtime_no_aufs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// +build exclude_graphdriver_aufs

package runtime

import (
"github.com/dotcloud/docker/runtime/graphdriver"
)

func migrateIfAufs(driver graphdriver.Driver, root string) error {
return nil
}
7 changes: 7 additions & 0 deletions runtime/runtime_vfs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// +build !exclude_graphdriver_vfs

package runtime

import (
_ "github.com/dotcloud/docker/runtime/graphdriver/vfs"
)

0 comments on commit 670ce98

Please sign in to comment.