1
0
mirror of https://github.com/docker/cli.git synced 2026-01-18 08:21:31 +03:00
Commit Graph

3401 Commits

Author SHA1 Message Date
Brian Goff
9247bf6e84 Merge pull request #22043 from WeiZhang555/remove-start-event-failed-start
Remove start/die event when fail to start container
Upstream-commit: bb91bd3a89d93f74de99ea5158d68a92e4c6cd6a
Component: engine
2016-04-19 19:45:40 -04:00
Alexander Morozov
2f96f680c7 Merge pull request #22153 from vdemeester/update-engine-api-again
Update engine api again for CopyToContainer and versions
Upstream-commit: eab65e438ecc406baf935c8df544982164cff72f
Component: engine
2016-04-19 11:05:27 -07:00
Vincent Demeester
4ebf703e54 Merge pull request #21495 from HackToday/addnetworkfilter
Add network label filter support
Upstream-commit: 75cc2c926b3296ed07af130a91ed2409f823ff70
Component: engine
2016-04-19 19:15:14 +02:00
Vincent Demeester
03d17b8c5f Update code for latest engine-api
- Update CopyToContainer uses
- Use engine-api/types/versions instead of pkg/version

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 7534f17261d0bb74557ca2f7cd893d5b7b531d49
Component: engine
2016-04-19 16:56:54 +02:00
Brian Goff
c026bc562f Merge pull request #21901 from mavenugo/sid
Add container's short-id as default network alias
Upstream-commit: 8adc8c3a686be09212a894cc91dcd974b830f330
Component: engine
2016-04-19 08:16:41 -04:00
Brian Goff
dbfba75d3e Merge pull request #22122 from Microsoft/jjh/defaultdir
Windows: Set default directory
Upstream-commit: 42a7efd69171e94063f0be2b1ad88262ee6bad81
Component: engine
2016-04-19 07:27:13 -04:00
David Calavera
f8a8c81f4e Merge pull request #21657 from vdemeester/update-engine-api
Update engine api with required arguments
Upstream-commit: 7fd53f7c711474791ce4292326e0b1dc7d4d6b0f
Component: engine
2016-04-18 19:47:22 -07:00
Michael Crosby
a55432da08 Merge pull request #22120 from crosbymichael/stats-panic
Create a copy of stats value before modifications
Upstream-commit: eed9c930b85ac1489129e4e36e0945bb3ee6954f
Component: engine
2016-04-18 16:26:23 -07:00
John Howard
430ab207ac Windows: Set default directory
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: c2d183426ba2fb4e850dc006d3ad3cc3bd86cc24
Component: engine
2016-04-18 15:59:41 -07:00
Alexander Morozov
487a876338 Merge pull request #22069 from rhvgoyal/overlay-private
Make overlay home dir Private mount
Upstream-commit: 7f767d8ff5c23979042dfd66db8e9487ee8f7eb8
Component: engine
2016-04-18 14:56:34 -07:00
Vivek Goyal
f3325d63fe Make overlay home dir Private mount
People have reported following issue with overlay

$ docker run -ti --name=foo -v /dev/:/dev fedora bash
$ docker cp foo:/bin/bash /tmp
$ exit container

Upon container exit, /dev/pts gets unmounted too. This happens because
docker cp volume mounts get propagated to /run/docker/libcontainer/....
and when container exits, it must be tearing down mount point under
/run/docker/libcontainerd/... and as these are "shared" mounts it
propagates events to /dev/pts and it gets unmounted too.

One way to solve this problem is to make sure "docker cp" volume mounts
don't become visible under /run/docker/libcontainerd/..

Here are more details of what is actually happening.

Make overlay home directory (/var/lib/docker/overlay) private mount when
docker starts and unmount it when docker stops. Following is the reason
to do it.

In fedora and some other distributions / is "shared". That means when
docker creates a container and mounts it root in /var/lib/docker/overlay/...
that mount point is "shared".

Looks like after that containerd/runc bind mounts that rootfs into
/runc/docker/libcontainerd/container-id/rootfs. And this puts both source
and destination mounts points in shared group and they both are setup
to propagate mount events to each other.

Later when "docker cp" is run it sets up container volumes under
/var/lib/dokcer/overlay/container-id/... And all these mounts propagate
to /runc/docker/libcontainerd/... Now mountVolumes() makes these new
mount points private but by that time propagation already has happened
and private only takes affect when unmount happens.

So to stop this propagation of volumes by docker cp, make
/var/lib/docker/overlay a private mount point. That means when a container
rootfs is created, that mount point will be private too (it will inherit
property from parent). And that means when bind mount happens in /runc/
dir, overlay mount point will not propagate mounts to /runc/.

Other graphdrivers like devicemapper are already doing it and they don't
face this issue.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: e076bccb458aeadab9380ce0636456ad6317a85f
Component: engine
2016-04-18 21:48:09 +00:00
Madhu Venugopal
7e0d42a8a5 Add container's short-id as default network alias
link feature in docker0 bridge by default provides short-id as a
container alias. With built-in SD feature, providing a container
short-id as a network alias will fill that gap.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Upstream-commit: ea531f061d3c511e376753f9863cb41f1b96d87e
Component: engine
2016-04-18 14:45:16 -07:00
Michael Crosby
b8faf44733 Create a copy of stats value before modifications
Fixes #22030

Because the publisher uses this same value to all the
stats endpoints we need to make a copy of this as soon as we get it so
that we can make our modifications without it affecting others.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Upstream-commit: d17ee4b506af842b2d9fe6f8736b4636e32db599
Component: engine
2016-04-18 11:41:38 -07:00
Kai Qiang Wu(Kennan)
1beaa5c119 Add network label filter support
This patch did following:

1) Make filter check logic same as `docker ps ` filters

Right now docker container logic work as following:
when same filter used like below:
 -f name=jack -f name=tom
it would get all containers name is jack or tom(it is or logic)

when different filter used like below:

 -f name=jack -f id=7d1
it would get all containers name is jack and id contains 7d1(it is and logic)

It would make sense in many user cases, but it did lack of compliate filter cases,
like "I want to get containers name is jack or id=7d1", it could work around use
(get id=7d1 containers' name and get name=jack containers, and then construct the
final containers, they could be done in user side use shell or rest API)

2) Fix one network filter bug which could include duplicate result
when use -f name=  -f id=, it would get duplicate results

3) Make id filter same as container id filter, which means match any string.
not use prefix match.

It is for consistent match logic

Closes: #21417

Signed-off-by: Kai Qiang Wu(Kennan) <wkqwu@cn.ibm.com>
Upstream-commit: f812b55692f5d50d427684216ad6c806bac5a702
Component: engine
2016-04-18 00:38:48 +00:00
Brian Goff
8d9f1bcb22 Merge pull request #21939 from calavera/events_until_past
Get events until a time in the past.
Upstream-commit: 19a453e6b40177af31703f107131aae5ca81adf2
Component: engine
2016-04-15 15:33:41 -04:00
David Calavera
4ccce743db Merge pull request #22066 from thaJeztah/fail-on-unsupported-kernels
Produce fatal error when running on kernel < 3.10.0
Upstream-commit: caf21c81ff91d48178f2616d1f5bd9c6df716b4c
Component: engine
2016-04-15 11:41:31 -07:00
David Calavera
c6ef103dcf Merge pull request #22009 from rhvgoyal/docker-cp-fix
Mount volumes rprivate for archival and other use cases
Upstream-commit: a1968615176001904e58300339df8f6d7b9b7086
Component: engine
2016-04-15 10:11:33 -07:00
Vincent Demeester
23c1fd9d95 Merge pull request #21006 from cpuguy83/volume_inspect_meta
Allow volume drivers to provide a `Status` field
Upstream-commit: e40e5b97c1ad540aa0be568467546f27932ef3a5
Component: engine
2016-04-15 18:53:39 +02:00
Brian Goff
ed92db4f93 Allow volume drivers to provide a Status field
The `Status` field is a `map[string]interface{}` which allows the driver to pass
back low-level details about the underlying volume.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 36a1c56cf555f8fe9ceabeebb8fc956e05863fc7
Component: engine
2016-04-15 10:56:38 -04:00
Vivek Goyal
76b4a1f20d Mount volumes rprivate for archival and other use cases
People have reported following problem.

- docker run -ti --name=foo -v /dev/:/dev/ fedora bash
- docker cp foo:/bin/bash /tmp

Once the cp operation is complete, it unmounted /dev/pts on the host. /dev/pts
is a submount of /dev/. This is completely unexpected. Following is the
reson for this behavior.

containerArchivePath() call mountVolumes() which goes through all the mounts
points of a container and mounts them in daemon mount namespace in
/var/lib/docker/devicemapper/mnt/<containerid>/rootfs dir. And once we have
extracted the data required, these are unmounted using UnmountVolumes().

Mounts are done using recursive bind (rbind). And these are unmounted using
lazy mount option on top level mount. (detachMounted()). That means if there
are submounts under top level mounts, these mount events will propagate and
they were "shared" mounts with host, it will unmount the submount on host
as well.

For example, try following.

- Prepare a parent and child mount point.
  $ mkdir /root/foo
  $ mount --bind /root/foo /root/foo 
  $ mount --make-rshared /root/foo
  
- Prepare a child mount 

  $ mkdir /root/foo/foo1
  $ mount --bind /root/foo/foo1 /root/foo/foo1
 
- Bind mount foo at bar

  $ mkdir /root/bar
  $ mount --rbind /root/foo /root/bar
  
- Now lazy unmount /root/bar and it will unmount /root/foo/foo1 as well.

  $ umount -l /root/bar

This is not unintended. We just wanted to unmount /root/bar and anything
underneath but did not have intentions of unmounting anything on source.

So far this was not a problem as docker daemon was running in a seprate
mount namespace where all propagation was "slave". That means any unmounts
in docker daemon namespace did not propagate to host namespace. 

But now we are running docker daemon in host namespace so that it is possible
to mount some volumes "shared" with container. So that if container mounts
something it propagates to host namespace as well. 

Given mountVolumes() seems to be doing only temporary mounts to read some
data, there does not seem to be a need to mount these shared/slave. Just
mount these private so that on unmount, nothing propagates and does not
have unintended consequences. 

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: cacd4007776672e918162936d8846eb51a5300e6
Component: engine
2016-04-15 14:03:11 +00:00
Sebastiaan van Stijn
1cc08f7023 Produce fatal error when running on kernel < 3.10.0
Running on kernel versions older than 3.10 has not been
supported for a while (as it's known to be unstable).

With the containerd integration, this has become more
apparent, because kernels < 3.4 don't support PR_SET_CHILD_SUBREAPER,
which is required for containerd-shim to run.

Change the previous "warning" to a "fatal" error, so
that we refuse to start.

There's still an escape-hatch for users by setting
"DOCKER_NOWARN_KERNEL_VERSION=1" so that they can
run "at their own risk".

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 51b23d88422918c24291f5876df35f91b23a446a
Component: engine
2016-04-15 14:33:56 +02:00
Vincent Demeester
b48cb728b8 Update client code with api changes
Using new methods from engine-api, that make it clearer which element is
required when consuming the API.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: b9c94b70bf2f703f260844b3862a61f93dee6337
Component: engine
2016-04-15 12:48:01 +02:00
Vincent Demeester
4e9b36b9f3 Merge pull request #20924 from Microsoft/10662-CPUResourceControls
Add CPU count and maximum resource controls for Windows
Upstream-commit: 172ca1ca8c4d5157789feb97a6424104b81a3479
Component: engine
2016-04-15 08:14:59 +02:00
Zhang Wei
9cdf9be514 Remove start/die event when fail to start container
If contaner start fail of (say) "command not found", the container
actually didn't start at all, we shouldn't log start and die event for
it, because that doesnt actually happen.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
Upstream-commit: 5548966c37147875fb5e07f4ba7f633dd882c782
Component: engine
2016-04-15 13:02:34 +08:00
Vincent Demeester
b6c2e57eab Merge pull request #21172 from yongtang/20909-seccomp-in-docker-info
Show "seccomp" in docker info (#20909).
Upstream-commit: bc0c8828e9afc32f1660a1f679ed523376c7d3d2
Component: engine
2016-04-15 01:24:54 +02:00
David Calavera
de95cbad37 Get events until a time in the past.
This change allow to filter events that happened in the past
without waiting for future events. Example:

docker events --since -1h --until -30m

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 55053d3537100eaeaad9c83b43e31f22d14fde7b
Component: engine
2016-04-14 16:22:16 -07:00
Darren Stahl
22a06166b3 Add CPU count and maximum resource controls for Windows
Signed-off-by: Darren Stahl <darst@microsoft.com>
Upstream-commit: ea8c690886970b2929d52d8b61dcfb8becc24db9
Component: engine
2016-04-14 15:40:25 -07:00
Alexander Morozov
925ceebdbf Merge pull request #21970 from cpuguy83/use_cached_path_on_ls
Fix N+1 calling `Path()` on `volume ls`
Upstream-commit: 7cd420d63a708c7763bceff231873c4e73b29c31
Component: engine
2016-04-13 22:47:53 -07:00
Tõnis Tiigi
4447d74a76 Move build endpoint handler from daemon (#21972)
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 73ac6d199cacbcdba4c062f982b31f8d57e03f3c
Component: engine
2016-04-13 10:21:00 -07:00
John Starks
6761133f09 Windows: Fix Hyper-V container ACLs for TP5 (#21974)
In TP5, Hyper-V containers need all image files ACLed so that the virtual
machine process can access them. This was fixed post-TP5 in Windows, but
for TP5 we need to explicitly add these ACLs.

Signed-off-by: John Starks <jostarks@microsoft.com>
Upstream-commit: 6f8878872f8782d4300faeb80413c8c60f56cff1
Component: engine
2016-04-13 10:15:38 -07:00
Vincent Demeester
2a0b94972b Merge pull request #19265 from rhatdan/netsysctl
Add support for setting sysctls
Upstream-commit: 988508a2b5aa18c04fd3db143b4e4f5f207ea15e
Component: engine
2016-04-13 18:36:30 +02:00
Brian Goff
1442a95a2d Fix N+1 calling Path() on volume ls
Implements a `CachedPath` function on the volume plugin adapter that we
call from the volume list function instead of `Path.
If a driver does not implement `CachedPath` it will just call `Path`.

Also makes sure we store the path on Mount and remove the path on
Unmount.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 9e6b1852a78eda6ed2cb255d6be8a0d0e5a5ca40
Component: engine
2016-04-12 20:30:34 -04:00
David Calavera
13ff1eed5b Merge pull request #21714 from hallyn/2016-03-31/aufs.2
don't try to use aufs in a user namespace
Upstream-commit: 7c16063afaafaddf0b738fe9ad6221f55ee85a99
Component: engine
2016-04-12 14:07:51 -07:00
Dan Walsh
3b52ebb9ff Add support for setting sysctls
This patch will allow users to specify namespace specific "kernel parameters"
for running inside of a container.

Signed-off-by: Dan Walsh <dwalsh@redhat.com>
Upstream-commit: 9caf7aeefd23263a209c26c8439d26c147972d81
Component: engine
2016-04-12 13:37:31 -04:00
Alexander Morozov
28a44b680b Merge pull request #21904 from yongtang/21848-stats-connected-containers
Docker stats is not working when a container is using another container's network.
Upstream-commit: d648d40ace5440d1a3c8c9dbc1115d40ebcbae3c
Component: engine
2016-04-12 10:28:05 -07:00
Alexander Morozov
e6c347efc9 Merge pull request #21943 from Microsoft/jstarks/utilityvm
Windows: support embedded utility VM images
Upstream-commit: 7b5a6844c2a517e8b6927666e33becf341ac016b
Component: engine
2016-04-12 10:19:47 -07:00
Rodolfo Carvalho
d31afa6053 Fix a typo in hostConfig.ShmSize validation
Other places referring to the same configuration, including docs, have
the correct spelling.

Signed-off-by: Rodolfo Carvalho <rhcarvalho@gmail.com>
Upstream-commit: fee7e7c7a31023be9f0c26608e6cbd4e8a97d25b
Component: engine
2016-04-12 16:45:05 +02:00
John Starks
78ecc63dec Windows: Support embedded utility VM images
For TP5, the utility VM for Hyper-V containers is embedded in the base
layer's contents.

Signed-off-by: John Starks <jostarks@microsoft.com>
Upstream-commit: c70f153f52c8ca75a395d4dc1c4a5759871ada19
Component: engine
2016-04-11 17:16:17 -07:00
Serge Hallyn
2be81f74a1 don't try to use aufs in a user namespace
If aufs is already modprobe'd but we are in a user namespace, the
aufs driver will happily load but then get eperm when it actually tries
to do something.  So detect that condition.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Upstream-commit: 2a71f28a4e1167dee32aa16ddbc819c9d9e77f71
Component: engine
2016-04-11 13:38:15 -05:00
Shishir Mahajan
0e63dec985 parseStorageOpt: return size rather than updating devInfo.Size field
Signed-off-by: Shishir Mahajan <shishir.mahajan@redhat.com>
Upstream-commit: 45dc5b46e2018d0a8c2d15c6b2917f3581211a6e
Component: engine
2016-04-11 10:34:13 -04:00
Vincent Demeester
870a7271d1 Merge pull request #20853 from WeiZhang555/fix-ShouldRestart
Fix ShouldRestart for on-failure handle
Upstream-commit: a692910277dfbd077af4db891cab0c4130962377
Component: engine
2016-04-11 14:01:52 +02:00
Vincent Demeester
b83c7378b4 Merge pull request #21724 from flyinprogrammer/syslog-opts-env-labels
enable syslog logger to have access to env and labels
Upstream-commit: f9386538ec6744512a07b61fe06e953b52065ead
Component: engine
2016-04-10 10:58:25 +02:00
Zhang Wei
c018129666 Fix ShouldRestart for on-failure handle
Currently if you restart docker daemon, all the containers with restart
policy `on-failure` regardless of its `RestartCount` will be started,
this will make daemon cost more extra time for restart.

This commit will stop these containers to do unnecessary start on
daemon's restart.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
Upstream-commit: 51e42e6ee01eb4b5c8c7678e2fc7be0f13ef6a68
Component: engine
2016-04-10 15:44:47 +08:00
Lei Jitang
afb9d9b8d8 Merge pull request #21854 from WeiZhang555/restart-failure
Fix critical bug: can't restart an restarting container
Upstream-commit: b4664e3f8669ca02925c31a08822b73ee7969bd5
Component: engine
2016-04-10 11:17:19 +08:00
Yong Tang
7511f16a58 Docker stats is not working when a container is using another container's network.
This fix tries to fix the issue in #21848 where `docker stats` will not correctly
display the container stats in case the container reuse another container's
network stack.

The issue is that when `stats` is performed, the daemon will check for container
network setting's `SandboxID`. Unfortunately, for containers that reuse another
container's network stack (`NetworkMode.IsConnected()`), SandboxID is not assigned.
Therefore, the daemon thinks the id is invalid and remote API will never return.

This fix tries to resolve the SandboxID by iterating through connected containers
and identify the appropriate SandboxID.

A test case for `stats` remote API has been added to check if `stats` will return
within the timeout.

This fix fixes #21848.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Upstream-commit: faf2b6f7aaca7f9ef400e227921b8125590fc9e5
Component: engine
2016-04-09 20:15:51 +00:00
Vincent Demeester
9a26745f83 Merge pull request #21853 from coolljt0725/fix_stats
Fix docker stats missing mem limit
Upstream-commit: a01f4dc2292ecba30b1e3db3251e6408610f8c8f
Component: engine
2016-04-09 13:46:58 +02:00
John Howard
9499ce7691 Merge pull request #20525 from Microsoft/sjw/update-graphdriver-create
Adding readOnly parameter to graphdriver Create method
Upstream-commit: fec6cd2eb988f77d7442fd8edd8cc864c87ae88b
Component: engine
2016-04-08 20:44:03 -07:00
Sebastiaan van Stijn
d050e36225 Merge pull request #21839 from WeiZhang555/add-start-event
Add missing "start" event back for auto-restart container
Upstream-commit: eaa1e8a8c49c58fb3770d673c8c7dcd4c1da4d17
Component: engine
2016-04-08 17:52:22 -07:00
Alan Scherger
c931d8e5af enable syslog logger to have access to env and labels
Signed-off-by: Alan Scherger <flyinprogrammer@gmail.com>
Upstream-commit: f67b7112775fd9957cc156cc4483e11b8c0c981a
Component: engine
2016-04-08 19:50:18 -05:00
David Calavera
ac13b98614 Merge pull request #21894 from Microsoft/sjw/nanoserver-fix
Fixing warning to correctly output error string.
Upstream-commit: f62b26571a2727b1fabfb7e88cbdbcfa2144a1fa
Component: engine
2016-04-08 16:43:07 -07:00