Commit Graph

396 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
d75894fcf6 Improvements to the original sharing implementation.
- Print the mount table as in /proc/self/mountinfo
- Do not exit prematurely when one of the ipc mounts doesn't exist.
- Do not exit prematurely when one of the ipc mounts cannot be unmounted.
- Add a unit test to see if the cleanup really works.
- Use syscall.MNT_DETACH to cleanup mounts after a crash.
- Unmount IPC mounts when the daemon unregisters an old running container.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: b1d2f52bb2bb900cddb526320b13da18634fe518
Component: engine
2015-09-23 12:07:24 -04:00
fca7da0a8e Merge pull request #16235 from HuKeping/oom-event
Events for OOM needs to be shift to an earlier time
Upstream-commit: 114612305c798735e7022274cc9db382f30aa174
Component: engine
2015-09-22 11:50:30 -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
99072d662d Events for OOM needs to be shift to an earlier time
It's worth to warn user as soon as possilbe when OOM happend.

Signed-off-by: Hu Keping <hukeping@huawei.com>
Upstream-commit: f05bacbe509823e2ca65583f35188ca09d01db80
Component: engine
2015-09-21 10:18:08 +08: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
9f76426e0b Windows: Enabled docker volume
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 42a46ed1a4cd1a6116b3bc5018c29c80db93f928
Component: engine
2015-09-16 14:33:13 -07:00
e3b5e8b7ff Update native execdriver to exploit libcontainer hooks
Using @mavenugo's patch for enabling the libcontainer pre-start hook to
be used for network namespace initialization (correcting the conflict
with user namespaces); updated the boolean check to the more generic
SupportsHooks() name, and fixed the hook state function signature.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
Upstream-commit: e148e763b8e7879855022690fdea88a6bf869195
Component: engine
2015-09-16 12:51:14 -04:00
700bfcfe4a Merge pull request #15069 from duglin/UseErrorPackage
Use the new error package
Upstream-commit: e91f2c26ce38787e159162d2c4a43744396e3308
Component: engine
2015-09-15 09:28:53 -04:00
852d9066b4 Merge pull request #16275 from coolljt0725/fix_register_failed_and_start
Fix container register failed during daemon start and then start the container
Upstream-commit: db2ac8655d046b97b33636077faa420a700d8bfc
Component: engine
2015-09-15 11:46:03 +02:00
bb8ff26c08 Use the new error package
This is the first step in converting out static strings into well-defined
error types.  This shows just a few examples of it to get a feel for how things
will look. Once we agree on the basic outline we can then work on converting
the rest of the code over.

Signed-off-by: Doug Davis <dug@us.ibm.com>
Upstream-commit: 628b9a41b09fde3ce1493f7d4f1495b9afaa506c
Component: engine
2015-09-14 13:11:01 -07:00
7c0ce8d93c Vendor-in 2baa2ddc78b42f011f55633282ac63a72e1b09c1 for userns support
Changes include :
* libnetwork support for userns
* driver api change to have 1 interface per endpoint

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Upstream-commit: d0e0c13b603efaff14c0269d19ac7e3710307fab
Component: engine
2015-09-14 11:04:12 -07:00
2cfd978e65 Fix container register failed during daemon start and try to start the container
Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: b4841dd2371cdab8ef6e01d8304622fdb3578644
Component: engine
2015-09-13 22:52:56 -04:00
7504cfc715 Add support for sharing /dev/shm/ and /dev/mqueue between containers
This changeset creates /dev/shm and /dev/mqueue mounts for each container under
/var/lib/containers/<id>/ and bind mounts them into the container. When --ipc:container<id/name>
is used, then the /dev/shm and /dev/mqueue of the ipc container are used instead of creating
new ones for the container.

Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
Docker-DCO-1.1-Signed-off-by: Dan Walsh <dwalsh@redhat.com> (github: rhatdan)

(cherry picked from commit d88fe447df0e87b3a57f9d08b108b141dd72678c)
Upstream-commit: c8291f7107b071656fedda032584018d815ca14f
Component: engine
2015-09-11 14:02:11 -04:00
1e38e54eff Add STOPSIGNAL instruction to dockerfiles.
This way, images creators can set the exit signal their programs use.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 3781cde61ff10b1d9114ae5b4c5c1d1b2c20a1ee
Component: engine
2015-09-10 19:56:05 -04:00
d563cc164c Signal to stop a container.
Allow to set the signal to stop a container in `docker run`:
- Use `--stop-signal` with docker-run to set the default signal the container will use to exit.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 0e50d946a25beb134bce2aaf4a209b5cfcbacf8f
Component: engine
2015-09-10 19:56:05 -04:00
2ced70f4fb daemon: remove unused function params
Signed-off-by: Antonio Murdaca <runcom@linux.com>
Upstream-commit: 587823af2723801ffdb6841b6e2c3d7d73ff10db
Component: engine
2015-09-09 22:37:46 +02:00
4a380ba714 Don't lookup container 4 times for stats
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: dc8a39036b8c9da4c21c48f492cdbb795170bb21
Component: engine
2015-09-08 10:12:46 -04:00
b9c2a00198 daemon/daemon: fix typo
Signed-off-by: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
Upstream-commit: 89f99343ff3df3cc5ac243a3a056f136885d012b
Component: engine
2015-09-07 14:43:22 +08:00
d965c25392 Windows: Ensure workdir handled in platform semantics
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 6c56f917d3facec1438d03712f8a26d929fbe5ea
Component: engine
2015-09-01 18:50:41 -07:00
c60fcca7ee Merge pull request #15913 from mountkin/abstract
abstract the string slice struct to stringutils package
Upstream-commit: 4bb2449188a7d09de5fd35d1be4b35dd5780c825
Component: engine
2015-09-01 17:06:13 +02:00
6190aee4a2 abstract the string slice struct to stringutils package
Signed-off-by: Shijiang Wei <mountkin@gmail.com>
Upstream-commit: ea4a06740b6d4579f77507c1d7e0897a870fd72d
Component: engine
2015-08-29 01:08:40 +08:00
d5c2dfe3ee Merge pull request #15310 from MHBauer/demon-lint-squash
golint fixes for daemon/ package
Upstream-commit: 433956cc47c4cf7a52068c0518bd30ad044fa3b7
Component: engine
2015-08-28 17:34:36 +02:00
1870e3919c golint fixes for daemon/ package
- some method names were changed to have a 'Locking' suffix, as the
 downcased versions already existed, and the existing functions simply
 had locks around the already downcased version.
 - deleting unused functions
 - package comment
 - magic numbers replaced by golang constants
 - comments all over

Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
Upstream-commit: abd72d4008dde7ee8249170d49eb4bc963c51e24
Component: engine
2015-08-27 22:07:42 -07:00
a8d6119113 Finish linting opts and trust package.
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 0bd016b1c31f807169019d10a496144c34698431
Component: engine
2015-08-27 17:36:11 +02:00
20b02657f2 Merge pull request #15865 from Microsoft/10662-isabs
Windows: Fix use of IsAbs check
Upstream-commit: 47cdae243a7e0108d487e88cab966ff09e8d94c0
Component: engine
2015-08-26 13:29:24 -07:00
05f2bb7d8b Merge pull request #14242 from cpuguy83/add_volume_api
Add volume api
Upstream-commit: fa13f7cde81d1d92c17740efb05823e7f9cc5468
Component: engine
2015-08-26 21:57:12 +02:00
799fa64220 Windows: Fix use of IsAbs check
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: f11ba3135b19006a47cf80861f3c291a3211eb1e
Component: engine
2015-08-26 12:38:28 -07: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
34f99e4291 Merge pull request #15848 from calavera/revert_ipc_mounts
DO NOT MERGE: Check if these commits broke the builds.
Upstream-commit: 5dadfa8b697f83619f4782eb2421c161a779b859
Component: engine
2015-08-26 10:29:25 -07:00
c1608c666a Merge pull request #13304 from coolljt0725/restart_daemon_with_paused_containers
Fix restart docker daemon with paused containers
Upstream-commit: 2cec06fbcd0b4cb6107ae432d92c3997075a4035
Component: engine
2015-08-26 09:04:14 -04:00
8c106c9224 Revert "Add support for sharing /dev/shm/ and /dev/mqueue between containers"
This reverts commit d88fe447df0e87b3a57f9d08b108b141dd72678c.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 688dd8477e907ca1899c6c2863775b3af2c30174
Component: engine
2015-08-26 05:23:00 -04:00
ef9b8937c0 Fix docker daemon restart with paused container.
Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: 9a9724ad5616dc1a29efabe8082bde043c1a2bc9
Component: engine
2015-08-25 09:42:58 +08:00
322a07231d Merge pull request #12159 from mrunalp/feature/ipc_share_dev
ipc: Share /dev/shm and /dev/mqueue when --ipc container:<id/name> is used
Upstream-commit: 903cd2b9e3e2cea8b5ee7c0b74d52ff4a3beafb5
Component: engine
2015-08-24 17:55:03 -07:00
83ec490c79 Merge pull request #15348 from tonistiigi/11008-always-unless-stopped-restart-policy
Add always-unless-stopped restart policy
Upstream-commit: fd8b25c802780683cc5776e6d3aaca9536e7370b
Component: engine
2015-08-24 13:48:56 -04:00
0313208649 Fix docker daemon start with old running container which user volume plugin. Fixes #15720
Signed-off-by: Lei Jitang <leijitang@huawei>
Upstream-commit: c8a46cb0b2793bb7d742a3d221ec733d1bbaae2c
Component: engine
2015-08-21 11:29:53 +08:00
58ef88608a Add support for sharing /dev/shm/ and /dev/mqueue between containers
This changeset creates /dev/shm and /dev/mqueue mounts for each container under
/var/lib/containers/<id>/ and bind mounts them into the container. When --ipc:container<id/name>
is used, then the /dev/shm and /dev/mqueue of the ipc container are used instead of creating
new ones for the container.

Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
Docker-DCO-1.1-Signed-off-by: Dan Walsh <dwalsh@redhat.com> (github: rhatdan)
Upstream-commit: d88fe447df0e87b3a57f9d08b108b141dd72678c
Component: engine
2015-08-19 12:36:52 -04:00
2bf42179ec Add unless-stopped restart policy
Fixes #11008

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 10305dc5e8cc7e2e1560ce2abe93c17e923a1c47
Component: engine
2015-08-18 11:39:06 -07:00
39fa3c5eb8 Merge pull request #15632 from mountkin/fix-15626
a quick fix to #15626
Upstream-commit: 1c916dbd8359beb9db14f2688879977db86b2c1d
Component: engine
2015-08-17 20:26:47 -04:00
e353ad2a0e a quick fix to #15626
Signed-off-by: Shijiang Wei <mountkin@gmail.com>
Upstream-commit: 3977f30869fad2c679d7913ce968add7c7987282
Component: engine
2015-08-17 21:35:57 +08:00
73f39654a9 Windows: Graph remove custom interface and add central store
Signed-off-by: Stefan J. Wernli <swernli@microsoft.com>

Windows: add support for images stored in alternate location.

Signed-off-by: Stefan J. Wernli <swernli@microsoft.com>
Upstream-commit: dfbb5520e3b35030f3eef38d5a2d86ad20ea0a2f
Component: engine
2015-08-14 23:45:53 -07:00