Commit Graph

996 Commits

Author SHA1 Message Date
dfd9e32dcf Merge pull request #20803 from WeiZhang555/empty-stats-no-stream
Bug fix: stats --no-stream always print zero values
Upstream-commit: 160abfbeeaa20314d5d971061d3bad7aaf87e66c
Component: engine
2016-03-05 08:47:41 -05:00
b9d5da8192 Bug fix: stats --no-stream always print zero values
`docker stats --no-stream` always print zero values.

```
$ docker stats --no-stream
CONTAINER           CPU %               MEM USAGE / LIMIT   MEM %
NET I/O             BLOCK I/O
7f4ef234ca8c        0.00%               0 B / 0 B           0.00%
0 B / 0 B           0 B / 0 B
f05bd18819aa        0.00%               0 B / 0 B           0.00%
0 B / 0 B           0 B / 0 B

```

This commit will let docker client wait until it gets correct stat
data before print it on screen.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
Upstream-commit: ea86c30a4acd53ef626d4c53aaf8f91134173948
Component: engine
2016-03-05 13:22:26 +08:00
41c1b3cb5a Merge pull request #20943 from vdemeester/20942-fix-containerPsContext
Fix #20942 TestContainerPsContext unit test
Upstream-commit: 44b56341d9d40a53ad8d5c2cc87e3c5b2b0f28f3
Component: engine
2016-03-04 16:49:47 +01:00
9892cd5446 Try to fix #20942 TestContainerPsContext unit test
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 2787072a65efac3dee0b5299322e4a7cfba51f04
Component: engine
2016-03-04 14:20:41 +01:00
3c99541c75 Merge pull request #20890 from riyazdf/notary-snapshot-remote
Rotate snapshot key to server when initializing new notary repos
Upstream-commit: 52d4fff0d7e958e191b1aa9faf2e132c1776c5e4
Component: engine
2016-03-03 08:45:06 -08:00
4dd14aa176 Merge pull request #20863 from thaJeztah/add-kernel-memory-warning
Add KernelMemory to "info" and show warning
Upstream-commit: 15e68dc8eefad6b5b125209438a04d1d443e5b26
Component: engine
2016-03-03 13:14:51 +01:00
3a79a75181 Rotate snapshot key to server when initializing new notary repos
Signed-off-by: Riyaz Faizullabhoy <riyaz.faizullabhoy@docker.com>
Upstream-commit: f75622e52acad0213b74c6210c73243d82c8f1be
Component: engine
2016-03-02 16:51:32 -08:00
ba183000bc Merge pull request #20824 from runcom/fix-creds-store
cliconfig: credentials: support getting all auths
Upstream-commit: f4cb5f4a32ecb8e6e860b505337331f213658a99
Component: engine
2016-03-02 16:37:57 -08:00
7f5a363deb Add KernelMemory to "info" and show warning
This change adds "KernelMemory" to the /info endpoint and
shows a warning if KernelMemory is not supported by the kernel.

This makes it more consistent with the other memory-limit
options.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 747a486b4aac2ebbbb28bd713b9a4a929f89353b
Component: engine
2016-03-02 23:32:25 +01:00
576af48c09 Merge pull request #20388 from hqhq/hq_add_cgroup_driver_info
Add CgroupDriver to docker info
Upstream-commit: 508a17baba3c39496008fc5b5e3fe890b8a1b31b
Component: engine
2016-03-02 23:17:27 +01:00
1bcabe12e7 api: client: fix login/logout with creds store
Make sure credentials are removed from the store at logout (not only
in the config file). Remove not needed error check and auth erasing
at login (auths aren't stored anywhere at that point).
Add regression test.

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
Upstream-commit: 0eccc3838e4aac5318e98dcbfbe2100e253462de
Component: engine
2016-03-02 17:51:50 +01:00
049d8d3bcf cliconfig: credentials: support getting all auths
docker build is broken because it sends to the daemon the full
cliconfig file which has only Email(s). This patch retrieves all auth
configs from the credentials store.

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
Upstream-commit: 44152144ca766221e97fdaa5200fec3557a64f58
Component: engine
2016-03-02 17:48:56 +01:00
17d0f2d01e Add CgroupDriver to docker info
Fixes: #19539

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: ca89c329b9f0748da74d08d02a47bc494e7965e2
Component: engine
2016-03-02 20:07:06 +08:00
cf6760a787 Remove some unused structs and fields
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 0a352e1a906fbf7592aa95d6327776236d13392a
Component: engine
2016-03-01 09:59:29 -08:00
afc4d63ffe Merge pull request #20565 from kencochrane/remove_email_on_login
Remove email address field from login
Upstream-commit: 2453262e7ba131fede74dbf31df41da9d2f36c34
Component: engine
2016-03-01 08:02:16 -08:00
2919d69a0c Remove email address field from login
This removes the email prompt when you use docker login, and also removes the ability to register via the docker cli. Docker login, will strictly be used for logging into a registry server.

Signed-off-by: Ken Cochrane <kencochrane@gmail.com>
Upstream-commit: aee260d4eb3aa0fc86ee5038010b7bbc24512ae5
Component: engine
2016-02-29 17:53:27 -08:00
5692b958f8 Merge pull request #20792 from cpuguy83/more_stats_client_cleanup
Fixes issue with stats on start event
Upstream-commit: 187a2fb40390f52a45e5b77c2ccc2d4609e354a9
Component: engine
2016-02-29 17:33:37 -08:00
aa8f3c4116 Fixes issue with stats on start event
In situations where a client is called like `docker stats` with no
arguments or flags, if a container which was already created but not
started yet is then subsequently started it will not be added to the
stats list as expected.

Also splits some of the stats helpers to a separate file from the stats
CLI which is already quite long.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: df95474885aeaaa77eeea4c4b31a92b58fc2a67c
Component: engine
2016-02-29 16:34:42 -05:00
2180969e3a Merge pull request #20107 from calavera/client_auth_store
Client credentials store.
Upstream-commit: 29ce086e38384c54f6f2d8f09578a75c4c9d9593
Component: engine
2016-02-29 22:31:34 +01:00
f3c9f69224 Merge pull request #20307 from HuKeping/trust
Refactor trust push
Upstream-commit: 1ba0358a10e6ad61832a47ac2f99dda7a7d57429
Component: engine
2016-02-29 11:12:09 -08:00
8a7585ce8e Client credentials store.
This change implements communication with an external credentials store,
ala git-credential-helper. The client falls back the plain text store,
what we're currently using, if there is no remote store configured.

It shells out to helper program when a credential store is
configured. Those programs can be implemented with any language as long as they
follow the convention to pass arguments and information.

There is an implementation for the OS X keychain in https://github.com/calavera/docker-credential-helpers.
That package also provides basic structure to create other helpers.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: cf721c23e715e545eccf8484e145c2d18d6a6a23
Component: engine
2016-02-29 13:01:31 -05:00
26d7a7de66 Fix client-side race in docker stats
Subscribe to events and monitor for new containers before the initial
listing of currently running containers.

This fixes a race where a new container could appear between the first
list call but before the client was subscribed to events, leading to a
container never appearing in the output of `docker stats`.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 3041aa53efbbfddbc10a66027d973bd353e3b525
Component: engine
2016-02-28 18:44:23 -08:00
1063341f9e Messaging both succeed and failure about the signing
It would be good to add a clearer failure or succeed message.

Signed-off-by: Hu Keping <hukeping@huawei.com>
Upstream-commit: 1a6866273697361f33ec908f51cf0e071a36b69d
Component: engine
2016-02-27 15:46:41 +08:00
c1ea49044b Refactor trust push
Unlike the untrusted push without an explicit tag will push all
tags for that repo, the trusted push would expect an explicit tag.

So that the code that attempts to do smart logic around signing multiple
tags should be removed.

Signed-off-by: Hu Keping <hukeping@huawei.com>
Upstream-commit: 5dddf7e98e3296ddec07e104ea829bebdb15d98d
Component: engine
2016-02-27 15:46:35 +08:00
b2ac99b3fa Remove static errors from errors package.
Moving all strings to the errors package wasn't a good idea after all.

Our custom implementation of Go errors predates everything that's nice
and good about working with errors in Go. Take as an example what we
have to do to get an error message:

```go
func GetErrorMessage(err error) string {
	switch err.(type) {
	case errcode.Error:
		e, _ := err.(errcode.Error)
		return e.Message

	case errcode.ErrorCode:
		ec, _ := err.(errcode.ErrorCode)
		return ec.Message()

	default:
		return err.Error()
	}
}
```

This goes against every good practice for Go development. The language already provides a simple, intuitive and standard way to get error messages, that is calling the `Error()` method from an error. Reinventing the error interface is a mistake.

Our custom implementation also makes very hard to reason about errors, another nice thing about Go. I found several (>10) error declarations that we don't use anywhere. This is a clear sign about how little we know about the errors we return. I also found several error usages where the number of arguments was different than the parameters declared in the error, another clear example of how difficult is to reason about errors.

Moreover, our custom implementation didn't really make easier for people to return custom HTTP status code depending on the errors. Again, it's hard to reason about when to set custom codes and how. Take an example what we have to do to extract the message and status code from an error before returning a response from the API:

```go
	switch err.(type) {
	case errcode.ErrorCode:
		daError, _ := err.(errcode.ErrorCode)
		statusCode = daError.Descriptor().HTTPStatusCode
		errMsg = daError.Message()

	case errcode.Error:
		// For reference, if you're looking for a particular error
		// then you can do something like :
		//   import ( derr "github.com/docker/docker/errors" )
		//   if daError.ErrorCode() == derr.ErrorCodeNoSuchContainer { ... }

		daError, _ := err.(errcode.Error)
		statusCode = daError.ErrorCode().Descriptor().HTTPStatusCode
		errMsg = daError.Message

	default:
		// This part of will be removed once we've
		// converted everything over to use the errcode package

		// FIXME: this is brittle and should not be necessary.
		// If we need to differentiate between different possible error types,
		// we should create appropriate error types with clearly defined meaning
		errStr := strings.ToLower(err.Error())
		for keyword, status := range map[string]int{
			"not found":             http.StatusNotFound,
			"no such":               http.StatusNotFound,
			"bad parameter":         http.StatusBadRequest,
			"conflict":              http.StatusConflict,
			"impossible":            http.StatusNotAcceptable,
			"wrong login/password":  http.StatusUnauthorized,
			"hasn't been activated": http.StatusForbidden,
		} {
			if strings.Contains(errStr, keyword) {
				statusCode = status
				break
			}
		}
	}
```

You can notice two things in that code:

1. We have to explain how errors work, because our implementation goes against how easy to use Go errors are.
2. At no moment we arrived to remove that `switch` statement that was the original reason to use our custom implementation.

This change removes all our status errors from the errors package and puts them back in their specific contexts.
IT puts the messages back with their contexts. That way, we know right away when errors used and how to generate their messages.
It uses custom interfaces to reason about errors. Errors that need to response with a custom status code MUST implementent this simple interface:

```go
type errorWithStatus interface {
	HTTPErrorStatusCode() int
}
```

This interface is very straightforward to implement. It also preserves Go errors real behavior, getting the message is as simple as using the `Error()` method.

I included helper functions to generate errors that use custom status code in `errors/errors.go`.

By doing this, we remove the hard dependency we have eeverywhere to our custom errors package. Yes, you can use it as a helper to generate error, but it's still very easy to generate errors without it.

Please, read this fantastic blog post about errors in Go: http://dave.cheney.net/2014/12/24/inspecting-errors

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: a793564b2591035aec5412fbcbcccf220c773a4c
Component: engine
2016-02-26 15:49:09 -05:00
34876f5fef Merge pull request #20017 from calavera/expose_volumes_in_ps
Add mounts to docker ps.
Upstream-commit: 034a1a8dfd17d89123bf0405f898e880575ed775
Component: engine
2016-02-24 11:08:21 +01:00
edf220176a Add mounts to docker ps.
- Allow to filter containers by volume with `--filter volume=name` and `filter volume=/dest`.
- Show their names in the list with the custom format `{{ .Mounts }}`.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: bd4fb00fb6241d35537b460a2d9f48256111ae7a
Component: engine
2016-02-23 12:10:24 -05:00
f153cf13ed Update RestartPolicy of container
Add `--restart` flag for `update` command, so we can change restart
policy for a container no matter it's running or stopped.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
Upstream-commit: ff3ea4c90f2ede5cccc6b49c4d2aad7201c91a4c
Component: engine
2016-02-20 17:06:32 +08:00
34184bd076 Merge pull request #20383 from HackToday/addsort
Make network ls output order
Upstream-commit: 0e72550c5b27704ac1ec043302fe2aaebe3b1956
Component: engine
2016-02-19 15:42:48 -05:00
033a056f03 Merge pull request #20389 from HackToday/addvolumesupport
Make volume ls output order
Upstream-commit: 48701888c216868379ee430e041f7a9568970117
Component: engine
2016-02-19 15:41:34 -05:00
7d665cca4e Merge pull request #17513 from aidanhs/aphs-expose-ipv6-default-bridge
Expose bridge IPv6 setting to `docker network inspect`
Upstream-commit: 2e6c841b826cc73332c44d5a04a5996fc65af724
Component: engine
2016-02-18 10:35:04 -08:00
880238a939 Make volume ls output order
Fixes: #20384
Add order support for volume ls to make it easy
to external users to consume.

Signed-off-by: Kai Qiang Wu(Kennan) <wkqwu@cn.ibm.com>
Upstream-commit: 60ffd6c880024c5ab3ad96dc79b01dccd23dd766
Component: engine
2016-02-17 09:01:27 +00:00
f8aea9f057 Make network ls output order
Fixes: #20328
We sort network ls output with incresing order,
it may make output more easy to consume for users.

Signed-off-by: Kai Qiang Wu(Kennan) <wkqwu@cn.ibm.com>
Upstream-commit: 838ed1866bf285759efdc01a97ae837f0f1c326a
Component: engine
2016-02-17 04:35:36 +00:00
c165bf9e34 Bugfix: the actions when pull from notary should not contains push
Signed-off-by: Hu Keping <hukeping@huawei.com>
Upstream-commit: 6b8a2a0fe47b218aaba3050c1f376941e4773313
Component: engine
2016-02-17 10:36:09 +08:00
ddc0af4e6a Merge pull request #19986 from vishh/expose-root-dir
Expose docker's root directory by default as part of `docker info`.
Upstream-commit: 80187df25708782db20846e63aef7ddb0419c7cf
Component: engine
2016-02-16 12:57:57 -08:00
9315309e4c Expose docker's root directory by default as part of docker info.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
Upstream-commit: 6a3176d4fee3e747ecb6b2d27ab2eb68471f3f8f
Component: engine
2016-02-16 10:40:15 -08:00
7f66344ec0 Add docs for --ipv6 option, also add --internal as appropriate
Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Upstream-commit: d736a9d2c3758fcc4eac0b62e9c7b128388021c1
Component: engine
2016-02-12 01:42:15 +00:00
697a990701 fix common misspell
Signed-off-by: Victor Vieux <vieux@docker.com>
Upstream-commit: 99a396902f0ea9d81ef87a683489b2435408f415
Component: engine
2016-02-11 15:49:36 -08:00
cfb6f193ab Expose bridge IPv6 setting to docker network inspect
Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Upstream-commit: dfb00652aa801ecd7fcc3bf492434bd140d9d1ea
Component: engine
2016-02-11 22:13:47 +00:00
e56e27b666 Move getContext… function to builder package
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 312f5e435bed2ca45477dc9e4713d35aabe37075
Component: engine
2016-02-11 20:59:59 +01:00
f35a03ff6d Windows: Fix 'isolation'
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: d4b0732499feac87cf7c433b9490a4e21e94fb45
Component: engine
2016-02-10 13:19:19 -08:00
def405f4e4 Merge pull request #20165 from vdemeester/move-validatecontextdirectory-to-builder
Move validateContextDirectory to builder package.
Upstream-commit: e18eb6ef394522fa44bce7a3b9bb244d45ce9b56
Component: engine
2016-02-10 08:35:25 -08:00
0a01ad0c9c Merge pull request #19835 from ncdc/resize-after-attach
Move resize after attaching
Upstream-commit: c2ebdb3e573cbbb053eb4644119f3c99a6111bdc
Component: engine
2016-02-10 15:32:51 +01:00
566c96f73b Move validateContextDirectory to builder package.
This feels like it's where it belongs and it makes it exported
again (which is needed for libcompose that was using it before 1.10).

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: fc6122a947f9eb9fc2f54fb8ba3b9da4531a6b99
Component: engine
2016-02-09 22:19:09 +01:00
311dc4f8a6 Add progress bar to docker load
Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: fae09e25698006a190d14fe64f1576f68431fabf
Component: engine
2016-02-05 02:24:23 -05:00
32fac24f32 Apply context changes to the client.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: fe53be4e1785ab4d8cadf246e5f2de419f337adc
Component: engine
2016-02-04 13:59:57 -05:00
6e2fab11f7 Remove unnecessary call to /info
Avoid using the `/info` endpoint in the `login` and `logout` workflows
when the Registry endpoint is overriden by the user through the command
line.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 243d0d6bbe0376fb43a2718710f31bb068d22168
Component: engine
2016-02-03 13:10:25 -08:00
556e3002c9 Merge pull request #19975 from aaronlehmann/resolve-auth-config
Introduce a client-side version of resolveAuthConfig
Upstream-commit: 7e236e623b234616ca8536a0d2e3f96103aa061b
Component: engine
2016-02-03 15:57:29 -05:00
9ca2cca984 Introduce a client-side version of resolveAuthConfig
This is similar to the version in the registry package, but uses the
daemon's default index (as opposed to the default for the client's
platform) if using the "official index".

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: ff17cd0bf07fb8fbd811b3a1bf472d701405b1d1
Component: engine
2016-02-03 11:01:29 -08:00
b8fbe028ea Enable cross-platforms logout from Registry
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 8ee7ad2209502f43496ff65e32fbcd7573b13c26
Component: engine
2016-02-03 10:32:22 -08:00