Commit Graph
168 Commits
Author SHA1 Message Date
Sebastiaan van Stijn 9a2a79217f Merge pull request #21487 from tonistiigi/fix-old-dind
Fix setting cgroup permission to user/privileged devices
Upstream-commit: f3d824771a10a8143ea97afb6864d0a587c7b7e3
Component: engine
2016-03-24 22:56:39 -07:00
Tonis Tiigi 88d26b09ba Fix wrong variable name on blkio resources
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 8784bd6fdeb7bd87fcbbdee884d42d1dca0c4cca
Component: engine
2016-03-24 14:16:40 -07:00
Sebastiaan van Stijn ee44cd51fb Merge pull request #21315 from hqhq/hq_check_quota
Add validation for cpu period and quota
Upstream-commit: f2847f8ab3467b43eccf0a9580d4ea3e8abdf146
Component: engine
2016-03-24 14:10:48 -07:00
allencloud 0986455243 fix typos in daemon_unix.go
Signed-off-by: allencloud <allen.sun@daocloud.io>
Upstream-commit: 25c9bd81f6d293996856daeb19108ebb2522416b
Component: engine
2016-03-24 23:57:11 +08:00
Tibor Vass 7c90f8b43b Merge pull request #21370 from tonistiigi/expose-layer-ids
Expose RootFS in image inspect
Upstream-commit: 694b32df51ac82afdf4695569e87dad7eaf71de4
Component: engine
2016-03-22 20:33:18 -04:00
Tibor Vass 48cef14de6 Merge pull request #21367 from mlaventure/containerd-docs-cleanup
Remove unneeded references to execDriver
Upstream-commit: 3ce494f48cc37b1e4065b62e58ec1c0a5df0e00c
Component: engine
2016-03-22 19:40:27 -04:00
Tonis Tiigi 296caafbd2 Expose RootFS in image inspect
Fixes #20451

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 14dc4a7158a141b5c13aa63231e467f0c3235850
Component: engine
2016-03-22 13:49:30 -07:00
Phil Estes 19b58f8f21 Allow net and IPC namespaces to be shared when userns=on
Now that the namespace sharing code via runc is vendored with the
containerd changes, we can disable the restrictions on container to
container net and IPC namespace sharing when the daemon has user
namespaces enabled.

Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
Upstream-commit: 2b278f48460453691c63ad81b0c87b50d8b18979
Component: engine
2016-03-21 22:20:26 -04:00
Qiang Huang ec3df3b28a Remove dot in suffix to avoid double dot error message
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: aae4bcf773a88f854c720387040a0a289a2fca87
Component: engine
2016-03-22 09:17:54 +08:00
Qiang Huang 42b42ce4ee Add validation for cpu period and quota
Accoding to:
https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt

It has minimal and maximal limit.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: b041fdc0d53c209a5e0614d2b35c6fa2209fe12d
Component: engine
2016-03-22 09:17:54 +08:00
Kenfe-Mickael Laventure bf213f3332 Remove unneeded references to execDriver
This includes:
 - updating the docs
 - removing dangling variables

Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
Upstream-commit: 8af4f89cba09105f3d581926aca6e231326f7054
Component: engine
2016-03-21 13:06:08 -07:00
Jess Frazelle 20351391ce Merge pull request #21274 from jfrazelle/fix-variables-that-werent-being-used
fix variables that werent being called
Upstream-commit: b77573f48e4022c7b8b829c4a33c6963fe08e18a
Component: engine
2016-03-18 18:03:15 -07:00
Jess Frazelle ba41c51be4 Merge pull request #20662 from tonistiigi/containerd-integration
Containerd integration
Upstream-commit: e5a3f86e447dd659da3c2e759f3c088a0bfcfe3d
Component: engine
2016-03-18 17:21:18 -07:00
Tonis Tiigi 8ba16d91c8 Replace execdrivers with containerd implementation
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
Signed-off-by: Anusha Ragunathan <anusha@docker.com>
Upstream-commit: 9c4570a958df42d1ad19364b1a8da55b891d850a
Component: engine
2016-03-18 13:38:32 -07:00
Jessica Frazelle ae0977f1d1 fix variables that werent being called
Signed-off-by: Jessica Frazelle <acidburn@docker.com>
Upstream-commit: 0e025b4bb16c0d4cc6b3f0c040713d061b9b051a
Component: engine
2016-03-17 13:19:55 -07:00
David Calavera cb854bf11c Consolidate security options to use = as separator.
All other options we have use `=` as separator, labels,
log configurations, graph configurations and so on.
We should be consistent and use `=` for the security
options too.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: cb9aeb0413ca75bb3af7fa723a1f2e6b2bdbcb0e
Component: engine
2016-03-17 13:34:42 -04:00
Aleksa Sarai 8930418a24 daemon: use 0711 for /var/lib/docker
This fixes problems encountered when running with a remapped root (the
syscalls related to the metadata directory will fail under user
namespaces). Using 0711 rather than 0701 (which solved the problem
previously) fixes the issue.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
Upstream-commit: e91ca0e239f1e6c71a5a6c789ec8177806773355
Component: engine
2016-03-16 19:24:03 +11:00
Liron Levin e578be78a3 Run privileged containers when userns are specified
Following #19995 and #17409 this PR enables skipping userns re-mapping
when creating a container (or when executing a command). Thus, enabling
privileged containers running side by side with userns remapped
containers.

The feature is enabled by specifying ```--userns:host```, which will not
remapped the user if userns are applied. If this flag is not specified,
the existing behavior (which blocks specific privileged operation)
remains.

Signed-off-by: Liron Levin <liron@twistlock.com>
Upstream-commit: 6993e891d10c760d22e0ea3d455f13858cd0de46
Component: engine
2016-03-14 17:09:25 +02:00
msabansal 23f9a9fa41 Windows libnetwork integration
Signed-off-by: msabansal <sabansal@microsoft.com>
Upstream-commit: e8026d8a98ef30ff0ada303404e02567caebb1b0
Component: engine
2016-03-09 20:33:21 -08:00
David Calavera 356157b64b Merge pull request #18697 from jfrazelle/pids-cgroup
Add PIDs cgroup support to Docker
Upstream-commit: dd32445ecc6b706e8681dcc9d80c42c9b6cbf6cd
Component: engine
2016-03-08 14:03:36 -08:00
Jessica Frazelle de84e87a00 pids limit support
update bash commpletion for pids limit

update check config for kernel

add docs for pids limit

add pids stats

add stats to docker client

Signed-off-by: Jessica Frazelle <acidburn@docker.com>
Upstream-commit: 69cf03700fed7bf5eb7fe00c9214737e21478e49
Component: engine
2016-03-08 07:55:01 -08:00
Mrunal Patel 3e9b68d581 Add support for NoNewPrivileges in docker
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>

Add tests for no-new-privileges

Signed-off-by: Mrunal Patel <mrunalp@gmail.com>

Update documentation for no-new-privileges

Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
Upstream-commit: 74bb1ce9e9dbfa9dd866e84f891e865fca906d9a
Component: engine
2016-03-07 09:47:02 -08:00
Qiang Huang 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
David Calavera 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
Qiang Huang da2ba30b2d Support update swap memory only
We should support update swap memory without memory.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: 8ae6f6ac28c1e9e28c1503b8118691580b66d885
Component: engine
2016-02-24 13:36:47 +08:00
Aidan Hobson Sayers 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
Liron Levin d672770336 user namespaces: duplicate dot in user namespaces error message
duplicate dot in user namespaces error message:

$ docker run -ti --net=host ubuntu /bin/bash
docker: Error response from daemon: Cannot share the host or a
container's network namespace when user namespaces are enabled..

Signed-off-by: Liron Levin <liron@twistlock.com>
Upstream-commit: 858f852da48a7d075cbc5139356a36ac975bf10f
Component: engine
2016-02-03 16:56:34 +02:00
Antonio Murdaca 01cb29485d daemon_unix: set golang runtime max threads
SetMaxThreads from runtime/debug in Golang is called to set max threads
value to 90% of /proc/sys/kernel/threads-max

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
Upstream-commit: 140a74347d7fde130598aeca028b72af99737239
Component: engine
2016-01-30 21:37:24 +01:00
Aleksa Sarai 4edafc3bc1 *: purge dockerinit from source code
dockerinit has been around for a very long time. It was originally used
as a way for us to do configuration for LXC containers once the
container had started. LXC is no longer supported, and /.dockerinit has
been dead code for quite a while. This removes all code and references
in code to dockerinit.

Signed-off-by: Aleksa Sarai <asarai@suse.com>
Upstream-commit: 4357ed4a7363a1032edf93cf03232953c805184f
Component: engine
2016-01-26 23:47:02 +11:00
Vincent Demeester dda7a5fe00 Merge pull request #19154 from hqhq/hq_verify_cgroupparent
Verify cgroup-parent name for systemd cgroup
Upstream-commit: 141a301dca9ff00259157116f479e1c8405a9c14
Component: engine
2016-01-26 11:44:31 +01:00
David Calavera 3ec10b17fa Allow network configuration via daemon config file.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: c539be88332815aeb2d466a973443127c1c676a6
Component: engine
2016-01-25 18:54:56 -05:00
Qiang Huang 06b6f08b9c Verify cgroup-parent name for systemd cgroup
Fixes: #17126

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: 5ce5a8e966ea41b7f40922dab3fbaf1ac85971bd
Component: engine
2016-01-22 21:17:23 -05:00
Alexander Morozov 1e5e2cad46 Reuse *sysinfo.SysInfo instance in verification
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 22ebeede3010e30a0b74c58900f7ed08f7489f93
Component: engine
2016-01-20 17:08:10 -08:00
David Calavera b6d75433b3 Merge pull request #19311 from estesp/no-oom-warning-when-cant-even
Only warn on OOMKill disable if the feature is actually requested
Upstream-commit: 9c30492e9e5cf8da5771af87d2b0a83a627ff2b4
Component: engine
2016-01-13 13:43:37 -08:00
Phil Estes 5e9b25b836 Only warn on OOMKill disable if the feature is actually requested
Instead of warning the caller who is disabling OOM killer that the
feature isn't available, only warn if they are trying to **enable** OOM
killer and it can't be done.

Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
Upstream-commit: 5a707d94d605fdf2a35d5a7033d1971b49745352
Component: engine
2016-01-13 11:53:44 -08:00
Alexander Morozov f9405712ff Merge pull request #19254 from aboch/v6b
Account docker0 IPv6 address on daemon start
Upstream-commit: 7ea65da7efe317d9dabc07557c8b2d196d20d815
Component: engine
2016-01-13 09:48:41 -08:00
Qiang Huang eed3a9a5f1 Do not fail if not support OomKillDisable
Fixes: #19278

The issue seems existed since we add support for OomKillDisable,
OomKillDisable support should not be hard request, we just
discard it if not support and move on.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: 7b616d4743c94f8be3eb59f8c23ed7a19fb2786d
Component: engine
2016-01-13 09:07:40 +08:00
Madhu Venugopal 6c7b14647b Support --link for user-defined networks
This brings in the container-local alias functionality for containers
connected to u ser-defined networks.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Upstream-commit: e221b8a3d64c13178e156fc3ece5e9894dac1603
Component: engine
2016-01-12 13:38:48 -08:00
Qiang Huang 410757a181 Change OomKillDisable to be pointer
It's like `MemorySwappiness`, the default value has specific
meaning (default false means enable oom kill).

We need to change it to pointer so we can update it after
container is created.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
(cherry picked from commit 9c2ea42329179c589f5a8991ccf0253eb10fc897)

Conflicts:
	vendor/src/github.com/docker/engine-api/types/container/host_config.go
Upstream-commit: f4a687334b1d026c84809fd005e1a82225d1c86f
Component: engine
2016-01-12 13:19:17 -05:00
Sebastiaan van Stijn 4a64d99bbc Merge pull request #19187 from estesp/lets-do-this
User namespaces: graduate from experimental
Upstream-commit: c72be040bb893e49bb12baf7e688c88b635d8ea1
Component: engine
2016-01-12 09:34:19 -08:00
Alessandro Boch 06015504e0 Account dcoker0 IPv6 address on daemon start
- In case --fixed-cidr-v6 is specified and docker0 bridge already
  has a global scope IPv6 address belonging to that v6 network
  (likely from a previous daemon instance), to maintain consistency
  with what done for the docker0 IPv4 address, daemon has to pass it
  down to libnetwork in the IPAMConfig as network gateway to make
  sure that the address is not given to some container.

Signed-off-by: Alessandro Boch <aboch@docker.com>
Upstream-commit: cfa3682ca4e04f4311bc9b1c6186069c9d4f5a90
Component: engine
2016-01-11 23:47:44 -08:00
Phil Estes 664cab4653 Properly report conflicting namespace options when using userns
This prevents strange errors and clarifies which namespace options are
incompatible with user namespaces (at this time).

Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
Upstream-commit: d5743a3a5c0864686a300b1fe5f58b89a36bb2f6
Component: engine
2016-01-11 20:50:22 -05:00
Alexander Morozov bc47f91463 Merge pull request #16032 from cpuguy83/remove_sqlite_dep
Build names and links at runtime - no more sqlite
Upstream-commit: 9a23569ecf48e07b6c6e7c1d734b54c7ce4c666a
Component: engine
2016-01-11 10:59:49 -08:00
Santhosh Manohar d8dc8b7d33 Docker changes for libnetwork vendoring..
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
Upstream-commit: 64a6dc355815261ac438b12a262e3cda7c9181df
Component: engine
2016-01-08 14:13:55 -08:00
Phil Estes 898ac34e33 Move userns support out of experimental into master
Adds the `--userns-remap` flag to the master build

Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
Upstream-commit: 557c7cb888ad8e2f1f378c9cf34e5fba14551904
Component: engine
2016-01-08 15:06:22 -05:00
Brian Goff 20a5900d4d Build names and links at runtime
Don't rely on sqlite db for name registration and linking.
Instead register names and links when the daemon starts to an in-memory
store.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 0f9f99500c40f2a46682967ca358cd2346fd5e13
Component: engine
2016-01-07 14:10:42 -05:00
David Calavera 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
Anusha Ragunathan f688b73835 Use ImageBuildOptions in builder.
dockerfile.Config is almost redundant with ImageBuildOptions.
Unify the two so that the latter can be removed. This also
helps build's API endpoint code to be less dependent on package
dockerfile.

Signed-off-by: Anusha Ragunathan <anusha@docker.com>
Upstream-commit: 5190794f1d85d5406611eb69c270df62ac1cdc7f
Component: engine
2016-01-05 10:09:34 -08:00
Daniel Nephin c43ba74b61 Move the runconfig.Parse() function into the runconfig/opts package.
The parse.go file is used almost exclusively in the client. The few small
functions that are used outside of the client could easily be copied out
when the client is extracted, allowing this runconfig/opts package to
move to the client.

Signed-off-by: Daniel Nephin <dnephin@docker.com>
Upstream-commit: 2b7ad47bd2649c3f164e8b57b31fae313045c8f4
Component: engine
2016-01-04 12:06:29 -05:00
Alessandro Boch 40fe4ff4d5 Properly initialize IpamConf structure in initBridgeDriver
Signed-off-by: Alessandro Boch <aboch@docker.com>
Upstream-commit: aa97eee1a3cf5c932bdd31535b1e82ca53347ca5
Component: engine
2015-12-30 15:44:50 -08:00