Commit Graph

119 Commits

Author SHA1 Message Date
7e07ac8939 On container rm, don't remove named mountpoints
This makes it so when calling `docker run --rm`, or `docker rm -v`, only
volumes specified without a name, e.g. `docker run -v /foo` instead of
`docker run -v awesome:/foo` are removed.

Note that all volumes are named, some are named by the user, some get a
generated name. This is specifically about how the volume was specified
on `run`, assuming that if the user specified it with a name they expect
it to persist after the container is cleaned up.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: dd7d1c8a02d8693aa4f381f82c5bbdcad9a5ff58
Component: engine
2016-01-25 15:51:28 -05:00
7568d41513 Fix loading of containerized plugins
During daemon startup, all containers are registered before any are
started.
During container registration it was calling out to initialize volumes.
If the volume uses a plugin that is running in a container, this will
cause the restart of that container to fail since the plugin is not yet
running.
This also slowed down daemon startup since volume initialization was
happening sequentially, which can be slow (and is flat out slow since
initialization would fail but take 8 seconds for each volume to do it).

This fix holds off on volume initialization until after containers are
restarted and does the initialization in parallel.

The containers that are restarted will have thier volumes initialized
because they are being started. If any of these containers are using a
plugin they will just keep retrying to reach the plugin (up to the
timeout, which is 8seconds) until the container with the plugin is up
and running.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: d85b9f858050dbfb2dde3d68517952958b8e38ee
Component: engine
2016-01-20 12:23:17 -05:00
e92314d4dc Remove duplicated lazy volume initialization.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: aab3596397c7b4fceac9061625898b3d2606597d
Component: engine
2016-01-13 11:22:31 -05:00
4ec2693c9e Modify import paths to point to the new engine-api package.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 907407d0b2e5863f0e1b40b93a356bbf03c7b9fb
Component: engine
2016-01-06 19:48:59 -05:00
db1910a30c Move responsibility of ls/inspect to volume driver
Makes `docker volume ls` and `docker volume inspect` ask the volume
drivers rather than only using what is cached locally.

Previously in order to use a volume from an external driver, one would
either have to use `docker volume create` or have a container that is
already using that volume for it to be visible to the other volume
API's.

For keeping uniqueness of volume names in the daemon, names are bound to
a driver on a first come first serve basis. If two drivers have a volume
with the same name, the first one is chosen, and a warning is logged
about the second one.

Adds 2 new methods to the plugin API, `List` and `Get`.
If a plugin does not implement these endpoints, a user will not be able
to find the specified volumes as well requests go through the drivers.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: d3eca4451d264aac564594fe46b8c097bd85a5cc
Component: engine
2016-01-05 16:28:38 -05:00
027f002cb3 Move Config and HostConfig from runconfig to types/container.
- Make the API client library completely standalone.
- Move windows partition isolation detection to the client, so the
  driver doesn't use external types.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 7ac4232e70fe7cf7318333cd0890db7f95663079
Component: engine
2015-12-22 13:34:30 -05:00
2a2006ef18 Merge pull request #17034 from rhvgoyal/volume-propagation
Capability to specify per volume mount propagation mode
Upstream-commit: ce0b1841c82b6972d96654e083f813944e72443f
Component: engine
2015-12-15 12:14:41 -05:00
c0860c6bed Add capability to specify mount propagation per volume
Allow passing mount propagation option shared, slave, or private as volume
property.

For example.
docker run -ti -v /root/mnt-source:/root/mnt-dest:slave fedora bash

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: a2dc4f79f260247afe55ab7117c9de02a769d883
Component: engine
2015-12-14 10:39:53 -05:00
3c4fcf6b7a Fix typos found across repository
Signed-off-by: Justas Brazauskas <brazauskasjustas@gmail.com>
Upstream-commit: 927b334ebfc786276a039e45ec097e71bf9a104c
Component: engine
2015-12-13 18:04:12 +02:00
2cee7ddb46 Rename Daemon.Get to Daemon.GetContainer.
This is more aligned with `Daemon.GetImage` and less confusing.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: d7d512bb927023b76c3c01f54a3655ee7c341637
Component: engine
2015-12-11 12:39:28 -05:00
d010c48ce4 Move Container to its own package.
So other packages don't need to import the daemon package when they
want to use this struct.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 6bb0d1816acd8d4f7a542a6aac047da2b874f476
Component: engine
2015-12-03 17:39:49 +01:00
71b21cf347 This patch adds --tmpfs as a option for mounting tmpfs on directories
It will Tar up contents of child directory onto tmpfs if mounted over

This patch will use the new PreMount and PostMount hooks to "tar"
up the contents of the base image on top of tmpfs mount points.

Signed-off-by: Dan Walsh <dwalsh@redhat.com>
Upstream-commit: b3e527dfd242ad30c0297c8b257862116cf2c50e
Component: engine
2015-12-02 10:06:59 -05:00
b104ad8df6 Remove the container initializers per platform.
By removing deprecated volume structures, now that windows mount volumes we don't need a initializer per platform.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 060f4ae6179b10aeafa883670826159fdae8204a
Component: engine
2015-11-18 08:41:46 -05:00
21f4b9fc72 Fix relabel for SELinux
With the changes merged into runc/libcontainer, are now causing
SELinux to attempt a relabel always, even if the user did not
request the relabel.

If the user does not specify Z or z on the volume mount we should
not attempt a relabel.

Signed-off-by: Dan Walsh <dwalsh@redhat.com>
Upstream-commit: d9011b36176d6245bdc25401633c213d73e14ea0
Component: engine
2015-11-09 14:04:57 -05:00
f7f7ce4926 Windows: Add volume support
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: a7e686a779523100a092acb2683b849126953931
Component: engine
2015-10-22 10:42:53 -07:00
5a458f78ee Move volume ref counting store to a package.
- Add unit tests to make sure the functionality is correct.
- Add FilterByDriver to allow filtering volumes by driver, for future
  `volume ls` filtering and whatnot.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 72bb56618b522fc3cece7cfd706c56296824673d
Component: engine
2015-09-21 12:46:49 -04:00
7f1e77e56a Cleanup: remove unnecessary return at the end of block in volumes.go
Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: 5746eb950130793a1833860b7bc03c2c8fa7b46f
Component: engine
2015-09-21 04:32:37 -04:00
64aea80dba Merge pull request #16349 from cpuguy83/16302_deprecate_autocreate_binds
deprecate bind path auto-create
Upstream-commit: e61abac5fa1c1ce2330e34c8eb51d9592dde2dd3
Component: engine
2015-09-18 12:53:06 -07:00
4e8ec3d151 deprecate bind path auto-create
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 249f45bcfe1adf4b3550306951f2768b17802217
Component: engine
2015-09-18 10:28:38 -04:00
3904dd3167 Move api/errors/ to errors/
Per @calavera's suggestion: https://github.com/docker/docker/pull/16355#issuecomment-141139220

Signed-off-by: Doug Davis <dug@us.ibm.com>
Upstream-commit: a283a30fb026aad4434a9f2e34f7ce955d27a957
Component: engine
2015-09-17 11:54:14 -07:00
2d5e18cda2 Merge pull request #16355 from duglin/DaemonErrors
Convert some "daemon" static error strings to the new errocode package format
Upstream-commit: 828e4ac45a5b4954997949570b9b032c57137849
Component: engine
2015-09-17 11:48:37 -07:00
6295202aba Convert some "daemon" static error strings to the new errocode package format
Signed-off-by: Doug Davis <dug@us.ibm.com>
Upstream-commit: f7d4b4fe2b130a522dee847a657218806180fa52
Component: engine
2015-09-16 16:16:42 -07:00
8dd1931b2b volumes: add synchronization to Count and List
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 2d21996eec8d3e6100f19fa0d0fa7adad25285ca
Component: engine
2015-09-15 10:38:53 -07:00
bfef76b67b Remove volume references when container creation fails.
Volumes are accounted when a container is created.
If the creation fails we should remove the reference from the counter.
Do not log ErrVolumeInUse as an error, having other volume references is
not an error.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 2c6c07752c8d89fa72249c24285ede1b4e579b24
Component: engine
2015-09-14 16:16:46 -04:00
a9bff20ad7 Don't hold lock around volume driver for volume create.
Signed-off-by: Stephen Rust <srust@blockbridge.com>
Upstream-commit: 0ef740a5bf093aa544802ccfbb0612e04ed8492a
Component: engine
2015-08-28 16:28:28 -04:00
bfe1bbc7d2 Add volume API/CLI
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: b3b7eb2723461b1eb4be692f4bced0ae8ea9cb58
Component: engine
2015-08-26 13:37:52 -04:00
804da3f9c2 Tidy volume*.go
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 72c04ab87ce16ab592e66da1753c0dc6cdc89517
Component: engine
2015-07-31 13:13:40 -07:00
5acbf86531 Windows: Factoring out unused fields
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 47c56e4353792e16f994a35ea4063768bee6590e
Component: engine
2015-07-27 17:44:18 -07:00
7f686f0d54 Rename internel field Relabel to Mode
Docker-DCO-1.1-Signed-off-by: Dan Walsh <dwalsh@redhat.com> (github: rhatdan)
Upstream-commit: 4cb9479ce490408daae2ffc2b7d28ad181ce24c3
Component: engine
2015-07-24 07:14:37 -04:00
5ad9da5031 daemon: container ArchivePath and ExtractToDir
The following methods will deprecate the Copy method and introduce
two new, well-behaved methods for creating a tar archive of a resource
in a container and for extracting a tar archive into a directory in a
container.

Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn)
Upstream-commit: c32dde5baadc8c472666ef9d5cead13ab6de28ea
Component: engine
2015-07-21 11:20:10 -07:00
bfde6861a0 Promote volume drivers from experimental to master.
Remove volume stubs and use the experimental path as the only path.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: c4d45b6a29a91f2fb5d7a51ac36572f2a9b295c6
Component: engine
2015-07-21 09:32:44 -07:00
d9e652a366 Update libcontainer
Replaced github.com/docker/libcontainer with
github.com/opencontainers/runc/libcontaier.
Also I moved AppArmor profile generation to docker.

Main idea of this update is to fix mounting cgroups inside containers.
After updating docker on CI we can even remove dind.

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: c86189d554ba14aa04b6314970d3699e5ddbf4de
Component: engine
2015-07-16 16:02:26 -07:00
9ec8332d92 Fix read-write check for volumes.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 82a54001fdbd3d0c9bcdab1b5caf0a6c6c8079be
Component: engine
2015-07-14 15:50:43 -07:00
b7855d52d5 Merge pull request #13694 from vdemeester/opts-test-coverage
Tests, refactor and coverage on package opts
Upstream-commit: ecdbf868842f702e2b824aa1e11097809d48a659
Component: engine
2015-07-14 15:09:48 -07:00
2f5df0962e We now support multiple roModes
Docker-DCO-1.1-Signed-off-by: Dan Walsh <dwalsh@redhat.com> (github: rhatdan)
Upstream-commit: b28d6eaa94e994e7102df94ceb13a3fb6c53ab59
Component: engine
2015-07-13 09:19:15 -04:00
22ed49846c Add test coverage to opts and refactor
- Refactor opts.ValidatePath and add an opts.ValidateDevice
  ValidePath will now accept : containerPath:mode, hostPath:containerPath:mode
  and hostPath:containerPath.
  ValidateDevice will have the same behavior as current.

- Refactor opts.ValidateEnv, opts.ParseEnvFile
  Environment variables will now be validated with the following
  definition :
  > Environment variables set by the user must have a name consisting
  > solely of alphabetics, numerics, and underscores - the first of
  > which must not be numeric.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: dfc6c04fa3f7dcb0e78e9dd5e8e4dd285b98546d
Component: engine
2015-07-12 10:33:30 +02:00
1296feade8 Windows: Graph driver implementation
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 52f4d09ffb376ffaa6677cb1e0413c6a97f53f24
Component: engine
2015-07-10 14:33:11 -07:00
81d1e83005 Fix volumes-from mount references.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 3d029c3bf335bc2867d1efc803096d2912b81799
Component: engine
2015-07-09 09:01:57 -06:00
84f0d29cf2 Windows: Docker build starting to work
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 3c177dc8777e76b4913294d17da4eac30edbd8db
Component: engine
2015-06-17 10:41:28 -07:00
416f8a0f5b Allow to downgrade local volumes from > 1.7 to 1.6.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: bd9814f0db9c8a087e42b66eabb8413bf1b2ab66
Component: engine
2015-06-09 18:04:59 -07:00
93011f5563 Windows: Fix PR13278 compile break
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 71eadd4176a968399671e5cb4c8de52c40992b01
Component: engine
2015-06-08 13:47:09 -07:00
02d7f238fb Merge pull request #13684 from lizf-os/cleanup-verify-volumes-info
Cleanup Daemon.verifyVolumesInfo() a bit
Upstream-commit: a2602c617d0afcf829983c46abd9cc95f2003078
Component: engine
2015-06-04 15:39:31 -07:00
148ef92617 Migrate data from old vfs paths to new local volumes path.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 16a5590c5be4be555a1ebe52d031d4e9e0e6da23
Component: engine
2015-06-04 10:16:19 -07:00
3cf411b6db Cleanup Daemon.verifyVolumesInfo() a bit
vols.VolumesRW has been initialized so it can't be nil. Furthermore
it's ok to read a nil map.

Signed-off-by: Zefan Li <lizefan@huawei.com>
Upstream-commit: 8b4c0decfc6a3ef748a70c2f53d1351d5aa8ab64
Component: engine
2015-06-03 09:19:16 +08:00
744dbdd6f9 Mount bind volumes coming from the old volumes configuration.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 53d9609de472f2fc9e6aaef2b713f526605f4ab8
Component: engine
2015-05-28 14:06:17 -07:00
c59e5318a9 Use SELinux labels for volumes
Fixes a regression from the volumes refactor where the vfs graphdriver
was setting labels for volumes to `s0` so that they can both be written
to by the container and shared with other containers.
When moving away from vfs this was never re-introduced.
Since this needs to happen regardless of volume driver, this is
implemented outside of the driver.

Fixes issue where `z` and `Z` labels are not set for bind-mounts.

Don't lock while creating volumes

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: b2a43baf2e2cc68c83383a7524441f81bc4c4725
Component: engine
2015-05-27 13:43:38 -07:00
3a11c11495 apply selinux labels volume patch on volumes refactor
Signed-off-by: Jessica Frazelle <princess@docker.com>
Upstream-commit: af7d17a6c906d348eb0929766a81fd04fc173c44
Component: engine
2015-05-27 12:50:16 -07:00
aee141571b Fix container unmount networkMounts
UnmountVolumes used to also unmount 'specialMounts' but it no longer does after
a recent refactor of volumes. This patch corrects this behavior to include
unmounting of `networkMounts` which replaces `specialMounts` (now dead code).

Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn)
Upstream-commit: 04f99a6ca8232e43169b9a0706e435c551c798a3
Component: engine
2015-05-26 17:38:26 -07:00
39e76a661b Allow named volumes for external drivers.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 3bf0ca31cf61e445554326ba405cc32c7ef64189
Component: engine
2015-05-21 20:34:17 -07:00
778241cd3a Make API volume-driver dependent on 'experimental'
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 2653c7c16cf87029c7e2e35427fbd1c83a0c96ba
Component: engine
2015-05-21 20:34:17 -07:00