Commit Graph

2171 Commits

Author SHA1 Message Date
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
1ef276acc9 Add constants for AUFS whiteout files
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 2fb5d0c32376951ef41a6f64bb7dbd8f6fd14fba
Component: engine
2015-09-29 11:21:45 -07:00
fef14476a9 Revert "Merge pull request #16567 from calavera/context_per_request"
This reverts commit ff92f45be49146cd7ac7716c36d89de989cb262e, reversing
changes made to 80e31df3b6fdf6c1fbd6a5d0aceb0a148066508c.

Reverting to make the next revert easier.

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 79c31f4b13d331d4011b2975a96dcdeab2036865
Component: engine
2015-09-29 13:40:46 -04:00
cd1e105d78 Add basic support for .wh..wh..opq
This fixes the case where directory is removed in
aufs and then the same layer is imported to a
different graphdriver.

Currently when you do `rm -rf /foo && mkdir /foo`
in a layer in aufs the files under `foo` would
only be be hidden on aufs.

The problems with this fix:

1) When a new diff is recreated from non-aufs driver
the `opq` files would not be there. This should not
mean layer differences for the user but still
different content in the tar (one would have one
`opq` file, the others would have `.wh.*` for every
file inside that folder). This difference also only
happens if the tar-split file isn’t stored for the
layer.

2) New files that have the filenames before `.wh..wh..opq`
when they are sorted do not get picked up by non-aufs
graphdrivers. Fixing this would require a bigger
refactoring that is planned in the future.


Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 00e3277107a63218b656a36457caf380f9cabf37
Component: engine
2015-09-29 08:22:25 -07:00
4b1e83454e Do not parse config.Volumes for named volumes
Fixes an issue where `VOLUME some_name:/foo` would be parsed as a named
volume, allowing access from the builder to any volume on the host.

This makes sure that named volumes must always be passed in as a bind.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 8e5bb8fdd37879ec04c3419b8ecfce7a0477cdcf
Component: engine
2015-09-29 10:01:57 -04:00
cf83257849 Move setRunningLocking to test code
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: eff253dfaf5f6a18a83df946823049b301931995
Component: engine
2015-09-28 13:48:12 -07:00
0b0feca4e8 Fix comment typo in attach.go
Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: 4e62bd97d37df252213218e5b756ba7da9b1f336
Component: engine
2015-09-28 08:59:40 -04:00
360eb92f7d Validate --cpuset-cpus, --cpuset-mems
Before this patch libcontainer badly errored out with `invalid
argument` or `numerical result out of range` while trying to write
to cpuset.cpus or cpuset.mems with an invalid value provided.
This patch adds validation to --cpuset-cpus and --cpuset-mems flag along with
validation based on system's available cpus/mems before starting a container.

Signed-off-by: Antonio Murdaca <runcom@linux.com>
Upstream-commit: 94464e3a5e1dce0f6b3e821f79fe193278f67dba
Component: engine
2015-09-27 16:38:58 +02:00
ff72d92410 Add builtin nodes discovery
Use `pkg/discovery` to provide nodes discovery between daemon instances.

The functionality is driven by two different command-line flags: the
experimental `--cluster-store` (previously `--kv-store`) and
`--cluster-advertise`. It can be used in two ways by interested
components:

1. Externally by calling the `/info` API and examining the cluster store
   field. The `pkg/discovery` package can then be used to hit the same
   endpoint and watch for appearing or disappearing nodes. That is the
   method that will for example be used by Swarm.
2. Internally by using the `Daemon.discoveryWatcher` instance. That is
   the method that will for example be used by libnetwork.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 7d193ef1f3b5fcd6aa55b7376116e2617be12e06
Component: engine
2015-09-25 14:52:09 -07:00
51abe1412d Merge pull request #16589 from mavenugo/ln_vin_ls
Vendoring libnetwork and libkv
Upstream-commit: 3c3d232e0af829ab6c98e21eb4de58cae3a289ff
Component: engine
2015-09-25 13:31:14 -07:00
b31922f0fe Merge pull request #16567 from calavera/context_per_request
Define a context per request.
Upstream-commit: ff92f45be49146cd7ac7716c36d89de989cb262e
Component: engine
2015-09-25 13:01:51 -07:00
fe01f0420f Docker daemon changes to use default gateway service
* Thanks to the Default gateway service in libnetwork, we dont have to add
containers explicitly to secondary public network. This is handled
automatically regardless of the primary network driver.

* Fixed the URL convention for kv-store to be aligned with the upcoming
changes to discovery URL

* Also, in order to bring consistency between external and internal network
drivers, we moved the driver configs via controller Init.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Upstream-commit: 6db1592066da48cf9ac619cef7d8d7b3a39db518
Component: engine
2015-09-25 11:00:42 -07:00
556d0a0826 refactor create to not expose internal data structures
- use existing exposed type

Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
Upstream-commit: 93bd57b0b21e1a802b80388c8fc034780e3200fc
Component: engine
2015-09-25 09:35:18 -07:00
8cec2a263a Define a context per request.
Avoid creating a global context object that will be used while the daemon is running.

Not only this object won't ever be garbage collected, but it won't ever be used for anything else than creating other contexts in each request. I think it's a bad practive to have something like this sprawling aroud the code.

This change removes that global object and initializes a context in the cases we don't have already one, like shutting down the server.
This also removes a bunch of context arguments from functions that did nothing with it.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 27c76522dea91ec585f0b5f0ae1fec8c255b7b22
Component: engine
2015-09-24 18:44:53 -04:00
cb64a89077 Fix windows cross compile with new netlink
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Upstream-commit: 7d8b5fc3aa291e1126f43157a26b9b021023d76f
Component: engine
2015-09-24 15:01:03 -07:00
80b964fca7 Update CAP_ prefix for new spec format
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Upstream-commit: f6064cb42b7016641a4823ebd49032edff54befa
Component: engine
2015-09-24 15:00:30 -07:00
d9f4d6c1cc Fix netlink dependency with new pkg
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Upstream-commit: d0fdc3b5dfa951870f4a7c0a08dea8c1bc68a31b
Component: engine
2015-09-24 15:00:30 -07:00
a273d038b8 Merge pull request #16228 from duglin/ContextualizeEvents
Add context.RequestID to event stream
Upstream-commit: de4164043546d2b9ee3bf323dbc41f4979c84480
Component: engine
2015-09-24 14:16:22 -07:00
4437543c47 Windows: Fix ADD from URL in dockerfile
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 608b3db5c8ae0515270e058e3406726fb0d30852
Component: engine
2015-09-24 13:20:15 -07:00
58c0f4ebe8 Merge pull request #14579 from hqhq/hq_add_softlimit
Add support for memory reservation
Upstream-commit: 84b53c8d87c0ab887209a51e54fad60a591e737a
Component: engine
2015-09-24 12:11:36 -07:00
bf44c732da Add context.RequestID to event stream
This PR adds a "request ID" to each event generated, the 'docker events'
stream now looks like this:

```
2015-09-10T15:02:50.000000000-07:00 [reqid: c01e3534ddca] de7c5d4ca927253cf4e978ee9c4545161e406e9b5a14617efb52c658b249174a: (from ubuntu) create
```
Note the `[reqID: c01e3534ddca]` part, that's new.

Each HTTP request will generate its own unique ID. So, if you do a
`docker build` you'll see a series of events all with the same reqID.
This allow for log processing tools to determine which events are all related
to the same http request.

I didn't propigate the context to all possible funcs in the daemon,
I decided to just do the ones that needed it in order to get the reqID
into the events. I'd like to have people review this direction first, and
if we're ok with it then I'll make sure we're consistent about when
we pass around the context - IOW, make sure that all funcs at the same level
have a context passed in even if they don't call the log funcs - this will
ensure we're consistent w/o passing it around for all calls unnecessarily.

ping @icecrime @calavera @crosbymichael

Signed-off-by: Doug Davis <dug@us.ibm.com>
Upstream-commit: 26b1064967d9fcefd4c35f60e96bf6d7c9a3b5f8
Component: engine
2015-09-24 11:56:37 -07:00
65bd47ac3a Merge pull request #15862 from calavera/share_shm_and_mqueue
Share shm and mqueue between containers.
Upstream-commit: 23750fb80280e6770590b0ea30781c43f42e430d
Component: engine
2015-09-24 11:23:59 -07:00
ea22c47211 Merge pull request #16538 from Microsoft/10662-escapeargs
Windows: Fixed escaping of command line arguments
Upstream-commit: c8bc02ea35775b048cc84a9c10d6284675f3b297
Component: engine
2015-09-24 11:18:29 -07:00
faecb581fa Merge pull request #15021 from chenchun/resize_pool
Try to resize data and metadata loopback file when initiating devicemapper
Upstream-commit: 22877e1b165337a84629f5e513f69007e01a9c8e
Component: engine
2015-09-23 22:22:51 -04:00
87c29288c8 Try to resize data and metadata loopback file when initiating devicemapper
Signed-off-by: Chun Chen <ramichen@tencent.com>
Upstream-commit: 2458452a3b96d0e6f6dfa44d7c30585db83c2fd1
Component: engine
2015-09-24 09:31:00 +08:00
8316b128fe Merge pull request #16411 from duglin/DaemonErrors
Move more 'daemon' errors to the new error package
Upstream-commit: ebe7ef9fc2238f008101f31c0c405cbc460ab757
Component: engine
2015-09-23 21:20:56 -04:00