On systems that supports reflinking (i.e. btrfs) this means the dummy
backend is much faster at copying files and will be sharing file data in
a CoW fashion.
On my (btrfs) system this makes "docker run ubuntu echo hello world" go
from about 3 seconds to about 1 second. Not instant, but clearly better.
cp --reflink=auto is availible since coreutils 7.5 (around 2009), so this
seems pretty ok to rely on.
cp is also better at preserving file metadata than tar, so for instance
it will copy xattrs.
Upstream-commit: 242fd4b3ef32b5a20135d6031040bcf099b5df4e
Component: engine
This moves Driver.Size() to Differ.DiffSize(), removing the empty
implementations in devmapper and dummy, and renaming the one in aufs.
Then we fall back to a container.Changes() implementation in the non-aufs
case.
Upstream-commit: 5d76681c3d0cbb744205a397420603ce029ce754
Component: engine
This makes the device mapper tool work again and adds new features
to get pool status, device status and to list all devices.
Upstream-commit: 80aecc70141f3e7b3138752bf3f0c33b9a273714
Component: engine
We place the actual image/containers in the "rootfs" directory, which
allows us to have other data in the toplevel directory in the mount.
For starters, this means the "lost+found" directory from mkfs will
not always be in your container/image.
Secondly, we can create a file "id" in the toplevel dir which is not
visible from the container. This is useful because it allows us to map
back from the device fs to the container if something goes wrong with
the devicemapper metadata.
Upstream-commit: 00401a30b73d897255b7b99996d7c6a53fe2d4af
Component: engine
This will try to move the directories that were
previously symlinked until a full migration is complete.
Upstream-commit: 5ee8e41e43892694f66b4d6d01ed95f4ca2e7cb6
Component: engine
It makes no sense to use the aufs or devicemapper drivers for volumes.
The aufs one is perhaps not a big problem, but the devicemapper one
certainly is. It will be unnecessarily using a dm
blockdevice-over-loopback with a limited size base FS.
This just hardcodes the driver to be the dummy, perhaps in the future
we can have other drivers that make sense for the volumes.
Upstream-commit: 10f23a94f6daaf03c684937daea67d10205b4b89
Component: engine
This adds a generic Status call in the Driver api and
implements if for the devicemapper backend.
The status is an array of key/value strings rather than a map so that
we can guarantee some static order of the docker info output.
Upstream-commit: 243843c0787ce2b56c8bbf72a2d4bd7604e84b2e
Component: engine
Add the methods to the Driver interface
to force the drivers to implement the methods
Upstream-commit: 4d1a537433ede2bbc75b0a4817e8121f9e03fd86
Component: engine
This moves the Diff() operation to a separate Differ interface and
implements a fallback that uses the Changes() results to encode
a diff tar.
Upstream-commit: e82f8c1661f3fa18e4dc6ca3aebe4dcc46e8961b
Component: engine