Commit Graph

2196 Commits

Author SHA1 Message Date
8709c3083b Merge pull request #16780 from Microsoft/jjh/vfs-build-tags
Fix VFS build tags
Upstream-commit: 53d24291648f3c610ddb13e131a498e1d27ae676
Component: engine
2015-10-08 09:43:06 +02:00
6b3f6691b5 Merge pull request #16645 from mavenugo/ux
Docker Network UX & remote API changes
Upstream-commit: 8e31036816e200dfe54cc2205235de7dea54bcd0
Component: engine
2015-10-07 10:44:58 -07:00
362fe5af33 Merge pull request #16381 from rhvgoyal/deferred_deletion
devicemapper: Implement deferred deletion capability
Upstream-commit: 8cee3018740374ae44ae5f71b8032cc1b3d98cb4
Component: engine
2015-10-07 09:27:41 -07:00
8623fdfb48 Network remote APIs using new router, --net=<user-defined-network> changes
* Moving Network Remote APIs out of experimental
* --net can now accept user created networks using network drivers/plugins
* Removed the experimental services concept and --default-network option
* Neccessary backend changes to accomodate multiple networks per container
* Integration Tests

Signed-off-by: David Calavera <david.calavera@gmail.com>
Signed-off-by: Madhu Venugopal <madhu@docker.com>
Upstream-commit: 2ab94e11a2a8499088a72ab27fd09e897d8c810a
Component: engine
2015-10-07 03:54:19 -07:00
5a9d726a00 Merge pull request #16147 from tiborvass/refactor-builder
Refactor builder with new Go interfaces
Upstream-commit: 2606a2e4d3bf810ec82e373a6cd334e22e504e83
Component: engine
2015-10-06 20:36:07 -04:00
d8db4defa7 Abstract builder and implement server-side dockerfile builder
This patch creates interfaces in builder/ for building Docker images.
It is a first step in a series of patches to remove the daemon
dependency on builder and later allow a client-side Dockerfile builder
as well as potential builder plugins.

It is needed because we cannot remove the /build API endpoint, so we
need to keep the server-side Dockerfile builder, but we also want to
reuse the same Dockerfile parser and evaluator for both server-side and
client-side.

builder/dockerfile/ and api/server/builder.go contain implementations
of those interfaces as a refactoring of the current code.

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: e0ef11a4c2c6789e08b61df082b5b9aa70898e7a
Component: engine
2015-10-06 19:10:19 -04:00
c46b8dfd3a devmapper: Implement a goroutine to cleanup deleted devices
Start a goroutine which runs every 30 seconds and if there are deferred
deleted devices, it tries to clean those up.

Also it moves the call to cleanupDeletedDevices() into goroutine and
moves the locking completely inside the function. Now function does not
assume that device lock is held at the time of entry.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 87de04005d61ab986d70a31e3ac82ec92912df55
Component: engine
2015-10-06 17:37:21 -04:00
fb33696b35 devmapper: Keep track of number of deleted devices
Keep track of number of deleted devices and export this information through
"docker info".

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: d295dc66521e2734390473ec1f1da8a73ad3288a
Component: engine
2015-10-06 17:37:21 -04:00
7bb486d26e devmapper: Implement deferred deletion functionality
Finally here is the patch to implement deferred deletion functionality.
Deferred deleted devices are marked as "Deleted" in device meta file. 

First we try to delete the device and only if deletion fails and user has
enabled deferred deletion, device is marked for deferred deletion.

When docker starts up again, we go through list of deleted devices and
try to delete these again.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: d929589c1fc4538dcd1b2a7a3dc7d4afbdfa72fd
Component: engine
2015-10-06 17:37:21 -04:00
cd659bcc9c devmapper: Provide option to enabled deferred device deletion
Provide a command line option dm.use_deferred_deletion to enable deferred
device deletion feature. By default feature will be turned off.

Not sure if there is much value in deferred deletion being turned on
without deferred removal being turned on. So for now, this feature can
be enabled only if deferred removal is on.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 51e059e7e90f37848596a0b6ec83f7835e6e4131
Component: engine
2015-10-06 17:37:21 -04:00
3c327a4ced devmapper: construct used device ID map from device Hash map
Currently during startup we walk through all the device files and read
their device ID and mark in a bitmap that device id is used.

We are anyway going through all device files. So we can as well load all
that data into device hash map. This will save us little time when
container is actually launched later.

Also this will help with later patches where cleanup deferred device
wants to go through all the devices and see which have been marked for
deletion and delete these.

So re-organize the code a bit.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 6b8b4feaa165af630dd33423f0538a0b987703ae
Component: engine
2015-10-06 17:37:21 -04:00
c8875071f3 Merge pull request #16799 from rhvgoyal/code-reorg
devmapper: Break down setupBaseImage() function into smaller pieces
Upstream-commit: 670c48857ace676b43649b39bd12e83b19558d23
Component: engine
2015-10-06 16:15:31 -04:00
3fb0ea6fd2 Merge pull request #16795 from runcom/bump-libcontainer
Bump libcontainer
Upstream-commit: 931e6129d0c27acc81fc2eea57f333f31f1cfb69
Component: engine
2015-10-06 12:24:19 -07:00
e9bd508682 bump libcontainer to 902c012e85cdae6bb68d8c7a0df69a42f818ce96
Signed-off-by: Antonio Murdaca <amurdaca@redhat.com>
Upstream-commit: 753901343624f15264b46fe9ade01cf451be99f1
Component: engine
2015-10-06 17:55:09 +02:00
a37c8bb04a devmapper: Move UUID setup and verification code in a function
Simplify setupBaseImage() even further. Move some more code in a separate
function. Pure code reorganization. No functionality change.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 0fcd485626f110bbf39e8a6b1edc11b4ac6f7065
Component: engine
2015-10-06 08:38:03 -04:00
b4d2c9486c devmapper: Move thin pool related checks in a function
Move thin pool related checks in a separate function. Pure code reorganization.
Makes reading code easier.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 69051ec0a58906e5252f902063ccead2075c8bed
Component: engine
2015-10-06 08:38:03 -04:00
0f1a89a462 devmapper: Move base device creation in separate function
This moves base device creation function in a separate function. Pure
code reorganization. Makes reading code little easier.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: efc1ddd7e3341124a2ebbb8a358f44754b32f310
Component: engine
2015-10-06 08:38:03 -04:00
3d6e7d79f9 Merge pull request #16727 from rhvgoyal/code-cleanup
devmapper: Little code cleanup and code reorganization
Upstream-commit: 1529343a3fc78251a2d62befebdbd669db133a3b
Component: engine
2015-10-05 22:23:10 -07:00
98d72c0286 Fix VFS build tags
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 7db08b4e62555055031ad6228221dc8c11ebe6a2
Component: engine
2015-10-05 15:52:09 -07:00
250a07900f Merge pull request #16718 from mavenugo/discovery
Vendoring libnetwork integrated with Docker discovery service
Upstream-commit: 33e9d70c82a9dee04e5e6d50dd890a6b96650b0a
Component: engine
2015-10-05 12:06:36 -07:00
1c5745b90e devmapper: Few code cleanups
This patch does three things. Following are the descriptions.

===
Create a separate function for delete transactions so that parent function
is little smaller.

Also close transaction if an error happens.
===
When docker is being shutdown, save deviceset metadata first before
trying to remove the devices. Generally caller gives only 10 seconds
for shutdown to complete and then kills it after that. So if some device
is busy, we will wait 20 seconds for it removal and never be able to save
metadata. So first save metadata and then deal with device removal.
===
Move issue discard operation in a separate function. This makes reading code
little easier.

Also don't issue discards if device is still open. That means devices is
still probably being used and issuing discards is not a good idea.

This is especially true in case of deferred deletion. We want to issue
discards when device is not open. At that time device can be deleted too.
Otherwise we will issue discards and deletion will actually fail. Later
we will try deletion again and issue discards again and deletion will
fail again as device is open and busy.

So this will ensure that discards are issued once when device is not open
and it can actually be deleted.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 482eca3099ad4bf3a7db62a31f88e2158cbbc933
Component: engine
2015-10-05 09:02:31 -04:00
e846ce8223 Merge pull request #16530 from dnephin/filter_events_by_label
Filter events by labels
Upstream-commit: e86291edd88641cc866c842d0f4a8f8296820aeb
Component: engine
2015-10-04 20:36:42 +02:00
b6b2359efc Docker daemon updates to libnetwork discovery support
Signed-off-by: Madhu Venugopal <madhu@docker.com>
Upstream-commit: 139ea5b7f2a1b981a8c9556a21e52ceaa8c65d5c
Component: engine
2015-10-02 20:57:47 -07:00
5fa21cf8ee Don't let Names be null on GET /containers/JSON
Fixes an issue where a `Dead` container has no names so the API returns
`null` instead of an empty array.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 59b8a0f697355f1d404121f0c3e96c4957ac4608
Component: engine
2015-10-02 17:09:14 -04:00
1dfde818a2 Resolves #16458 - filter events by labels.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
Upstream-commit: 08b117517d6d6b5daebe4c056c135e1598f44385
Component: engine
2015-10-02 16:33:20 -04:00
3b057aaeb2 Merge pull request #16250 from cpuguy83/15487_exec_error_codes
Make exec start return proper error codes
Upstream-commit: 5a43beda91efd9a53c798082abbc5b287167aa0c
Component: engine
2015-10-02 12:55:17 -07:00
56b56acf38 Merge pull request #16708 from jfrazelle/fix-shm-mqueue-when-mounted-from-host
do not mount /dev/shm or /dev/mqueue if we are mounting from the host
Upstream-commit: 662f55d11d2f278daf5b9be215608540af35be4d
Component: engine
2015-10-02 15:13:59 -04:00
d911d85df7 Merge pull request #16490 from Microsoft/10662-mtimefix
Fixed file modified time not changing on windows
Upstream-commit: 134fefbaa2b63e337a5ef247111bb5a2733809be
Component: engine
2015-10-02 12:06:03 -07:00
a9fcaeb043 Make exec start return proper error codes
Exec start was sending HTTP 500 for every error.

Fixed an error where pausing a container and then calling exec start
caused the daemon to freeze.

Updated API docs which incorrectly showed that a successful exec start
was an HTTP 201, in reality it is HTTP 200.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 2d43d93410c29cec87deb9cd940c3b2a8af5fbbb
Component: engine
2015-10-02 14:40:22 -04:00
f14e695085 Merge pull request #16159 from runcom/validate-cpuset-cpus
Validate --cpuset-cpus, --cpuset-mems
Upstream-commit: 698e14902a06af0613b697d88935ae0200659bff
Component: engine
2015-10-02 11:30:46 -07:00
7d8a56e425 Merge pull request #16470 from tonistiigi/fix-aufs-opq
Add basic support for .wh..wh..opq
Upstream-commit: aa2e3247cb87a7a55fa0258b4ae92c026512ed2a
Component: engine
2015-10-02 11:28:33 -07:00
c09d7183ed do not mount /dev/shm or /dev/mqueue if we are mounting from the host
Signed-off-by: Jessica Frazelle <acidburn@docker.com>
Upstream-commit: b8605a11070af73713f2127d9e9d3e35bb78e1ab
Component: engine
2015-10-02 11:14:04 -07:00
6f5edad812 Fix docker ps truncate long image name by default
Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: 3fcf481361400acd5e56da2a8c76cf888092b2e4
Component: engine
2015-10-02 22:56:42 +08:00
5b5431a0c1 Fixed file modified time not changing on Windows
Signed-off-by: Darren Stahl <darst@microsoft.com>
Upstream-commit: 40b77af234319f02029368732249c2de0babb380
Component: engine
2015-10-01 10:45:32 -07:00
42e7721be4 devmapper: Get rid of metaData.devicesLock
Right now we seem to have 3 locks. 

- devinfo.lock
  This is a per device lock

- metaData.devicesLock

  This is supposedely protecting map of devices.

- Global DeviceSet lock

  This is protecting map of devices as well as serializing calls to libdevmapper.

Semantics of per devices lock and global deviceset lock seem to be very clear.
Even ordering between these two locks has been defined properly.

What is not clear is the need and ordering of metaData.devicesLock. Looks like
this lock is not necessary and global DeviceSet lock should be used to
protect map of devices as it is part of DeviceSet.

This patchset gets rid of metaData.devicesLock and instead uses DeviceSet
lock to protect map of devices.

Also at couple of places during initialization takes devices.Lock(). That
is not strictly necessary as there is supposed to be one thread of execution
during initializaiton. Still it makes the code clearer.

I think this makes code more clear and easier to understand and easier to
make further changes.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 289145ecc6c016b8bb6797cc50905e34da911e84
Component: engine
2015-10-01 13:02:55 -04:00
644e005e90 devmapper: Get rid of unused function HasActivatedDevice()
Looks like nobody is calling HasActivatedDevice(). Get rid of it.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 73f8b46d84e73929eacafe4c2f9676469f862c49
Component: engine
2015-10-01 07:59:12 -04:00
6479d844f2 devmapper: Move maxDeviceID check in loadMetadata
maxDeviceID is upper limit on device Id thin pool can support. Right now
we have this check only during startup. It is a good idea to move this
check in loadMetadata so that any time a device file is loaded and if it
is corrupted and device Id is more than maxDevieceID, it will be detected
right then and there.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 94caae2477f42b55adeab22f14bcef22b90373d6
Component: engine
2015-09-30 18:54:06 -04:00
67663efaad devmapper: Use deactivateDevice() instead of removeDevice() in deleteDevice()
Use deactivateDevice() instead of removeDevice() directly. This will make
sure for device deletion, deferred removal is used if user has configured
it in. Also this makes reading code litle easier as there is single function
to remove a device and that is deactivateDevice().

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: 39081eb3aa8f715c1da6f798c6531efd7a8a494c
Component: engine
2015-09-30 18:54:06 -04:00
e4c6aa28bc Merge pull request #16683 from rhvgoyal/fix-couple-of-bugs
devmapper: Fix a bug and fix a comment and add one reliability check
Upstream-commit: 8ebd0c972aaa9c24058ace74b72d10d4c1ef0613
Component: engine
2015-09-30 15:17:29 -07:00
7fb23fc9ef devmapper: Fail device deletion early if device is still mounted
If a device is still mounted at the time of DeleteDevice(), that means
higher layers have not called Put() properly on the device and are trying
to delete it. This is a bug in the code where Get() and Put() have not been
properly paired up. Fail device deletion if it is still mounted.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: e97e46b7376c3195383636d305d832b2ba3f82c5
Component: engine
2015-09-30 15:21:22 -04:00
91a056571d devmapper: Fix comments and for HasDevice() and Exists()
Exists() and HasDevice() just check if device file exists or not. It does
not say anything about if device is mounted or not. Fix comments.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: f5c0eb9ffe9a9d30ac6ff81fa1a4c216908189a6
Component: engine
2015-09-30 15:21:22 -04:00
9dabe752c1 devmapper: Do not load transaction meta file in device Hash map
device has map (device.Devices), contains valid devices and we skip all
the files which are not device files. transaction metadata file is not
device file. Skip this file when devices files are being read and loaded
into map.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: ba02bf31cbffe329e549516e0004cf113ab4517e
Component: engine
2015-09-30 15:21:22 -04:00
4c0ba86867 Extract api types to version packages.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 61634758c42014543e0ce429587bbba7fc6106ec
Component: engine
2015-09-30 14:14:27 -04:00
bc369be3ad Merge pull request #16539 from calavera/router_interfaces
Separate API router from server.
Upstream-commit: 4f677df0d1fe1cdb24ecacd16f8692a6c46ffc21
Component: engine
2015-09-30 11:51:30 -04:00
d0e8d580f1 Merge pull request #16562 from Microsoft/10662-fixhttppull
Windows: Fix ADD from URL in dockerfile
Upstream-commit: c3009783700154b6f0ad26bb492ddda9da783ad4
Component: engine
2015-09-30 11:46:57 +02:00
c48d02c824 Merge pull request #16666 from calavera/golint_graph_windows
Fix golint issues on the windows graph driver.
Upstream-commit: 36592a4bc2c50cf8c84c494f467057c989475a1b
Component: engine
2015-09-29 17:36:37 -07:00
2a8c716e73 Merge pull request #16650 from cpuguy83/no_named_volumes_for_builder
Do not parse config.Volumes for named volumes
Upstream-commit: ae03e544e78dd478c72021fa72fd91351553fba5
Component: engine
2015-09-29 17:04:29 -07:00
1fb74bb17c Separate API router from server.
Implement basic interfaces to write custom routers that can be plugged
to the server. Remove server coupling with the daemon.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: da982cf5511814b6897244ecaa9c016f8800340a
Component: engine
2015-09-29 19:43:03 -04:00
eb95300866 Fix golint issues on the windows graph driver.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 1fffc7a89dd69800317e881009188871906cce6a
Component: engine
2015-09-29 18:32:45 -04:00
69db6279aa Revert "Merge pull request #16228 from duglin/ContextualizeEvents"
Although having a request ID available throughout the codebase is very
valuable, the impact of requiring a Context as an argument to every
function in the codepath of an API request, is too significant and was
not properly understood at the time of the review.

Furthermore, mixing API-layer code with non-API-layer code makes the
latter usable only by API-layer code (one that has a notion of Context).

This reverts commit de4164043546d2b9ee3bf323dbc41f4979c84480, reversing
changes made to 7daeecd42d7bb112bfe01532c8c9a962bb0c7967.

Signed-off-by: Tibor Vass <tibor@docker.com>

Conflicts:
	api/server/container.go
	builder/internals.go
	daemon/container_unix.go
	daemon/create.go
Upstream-commit: b08f071e18043abe8ce15f56826d38dd26bedb78
Component: engine
2015-09-29 14:26:51 -04:00