Commit Graph

33208 Commits

Author SHA1 Message Date
6aff3ef24e Merge pull request #37174 from thaJeztah/no_additional_magic_matching
Be explicit about github.com prefix being a legacy feature
Upstream-commit: 2ea4ece674e04c04174ee9fff8005cdccdc4fad0
Component: engine
2018-05-31 09:45:59 +02:00
065fbace32 Merge pull request #37178 from tonistiigi/layer-leak
builder: fix layer leak on multi-stage wildcard copy
Upstream-commit: 3e494c4b934b7fc3756d91b6e8117c9e4d7c28f1
Component: engine
2018-05-31 09:39:28 +02:00
98281f1a9c fix the mis-used skip condition
Signed-off-by: Anda Xu <anda.xu@docker.com>
Upstream-commit: d8e6f273b5016880c5d49673ddf531ceecc2bc0d
Component: engine
2018-05-30 17:13:20 -07:00
84cf46c71d Merge pull request #37134 from thaJeztah/fix-env-substitution
builder: fix processing of invalid substitusion syntax
Upstream-commit: b2719e35f58c5420ae3dd6ab8e583fba8c6cf6d9
Component: engine
2018-05-30 16:52:01 -07:00
442215fe6a builder: fix layer leak on multi-stage wildcard copy
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 4a18c11bdc1300692def2453c441190d73e1e942
Component: engine
2018-05-30 15:18:40 -07:00
ab001b0599 Merge pull request #37169 from AntaresS/add-version-checking
add api version checking for tests from new feature
Upstream-commit: 0a94468a5bed080a77a01847515123b9c2eff62e
Component: engine
2018-05-30 09:58:45 -10:00
75e47b0eb6 Merge pull request #36874 from kolyshkin/stop-timeout
daemon.ContainerStop(): fix for a negative timeout
Upstream-commit: b85799b63fb25423620ed16e717a99401cd3a39b
Component: engine
2018-05-30 13:38:42 -04:00
231bc963aa Merge pull request #37017 from cpuguy83/plugins_addr
Move plugin client creation to the extension point
Upstream-commit: cbbe0ff5119c7e3480827f57a2210f03152644f7
Component: engine
2018-05-30 09:54:46 -07:00
90dfa0b4ee Be explicit about github.com prefix being a legacy feature
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: babb0c14fd1281b309de46c3481a5bea88b8031d
Component: engine
2018-05-30 11:09:14 +02:00
f21c0ccd84 Merge pull request #37131 from kolyshkin/top-opt
Optimize ContainerTop() aka docker top
Upstream-commit: 65bd038fc5e47ed37d2702cbdd6ce484d320380b
Component: engine
2018-05-30 03:28:07 +02:00
a99e1e1ff6 add api version checking for tests from new feature
Signed-off-by: Anda Xu <anda.xu@docker.com>
Upstream-commit: 8ed0fdebe714c64aa697ed7e2187d2233e34eb22
Component: engine
2018-05-29 15:25:33 -07:00
8b1898b015 Merge pull request #37166 from yongtang/05282018-unique-service-name
Add `t.Name()` to tests so that service names are unique
Upstream-commit: 864b36255dce627443b18e7e44549d506a71f14a
Component: engine
2018-05-29 12:04:21 +02:00
37672d40d5 Add t.Name() to tests so that service names are unique
This fix adds `t.Name()` to tests in integration/network
so that services created in those tests have unique names.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Upstream-commit: 76195f8047eb9a6be710d53ec493ab97bcf86e20
Component: engine
2018-05-28 22:57:52 +00:00
2c7c1d708b Alternative failure mitigation of TestExecInteractiveStdinClose
Begin to copy the data until the command to exit and any coping to
stdin or copy from stdout/stderr has completed.
Also adding defense code to trim the possible '\x00' null value.

Signed-off-by: Dennis Chen <dennis.chen@arm.com>
Upstream-commit: 386e0f36c42593ef434517448ccfac5262f958d6
Component: engine
2018-05-28 11:25:31 +08:00
4c7a840b18 Move plugin client creation to the extension point
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: f51a96c0165fdcbbe11f62b66b582b7e202f211b
Component: engine
2018-05-25 15:18:53 -04:00
87e43e1762 Handle multi-digit positional parameters
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 2628896b5e813491f8767ec7fa9d0f057ed4a86e
Component: engine
2018-05-25 18:51:11 +02:00
45e3784610 Add detection of "special parameters" for substitution
Detect Special parameters as defined in
http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_02

Treat these as parameters that are not set, instead of
producing an error that a modifier is missing.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 9654e9b6f80e1b931763c04400a19596e256c99a
Component: engine
2018-05-25 18:20:22 +02:00
0ed9886f87 Add more test-cases for positional parameters
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 8687a3f4b8b7ffbc3f32dfe959cb771d662211e6
Component: engine
2018-05-25 18:20:10 +02:00
ad9f08c725 Add line-numbers to asserts
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: b80e0309d220268a2b9e6aec5bb05d7af330e591
Component: engine
2018-05-25 18:20:01 +02:00
1f9af8d4f9 Fix detection for missing parameter in substitution
`${}`, `${:}` and so on are invalid because there's
no parameter within the brackets; fix detection for
this situation and add/update tests.

There were some existing test-cases that were testing
for the wrong behavior, which are now updated.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 334bf3ea76004d0abe02dd1698989f9eaf87a86a
Component: engine
2018-05-25 18:19:32 +02:00
c8db46ad05 builder: fix processing of invalid substitusion syntax
The builder did not detect syntax errors in substitusions in the
Dockerfile, causing those values to be processed incorrectly instead of
producing an error.

Example 1: missing `}`

    docker build --no-cache -<<'EOF'
    FROM busybox
    ARG var=${aaa:-bbb
    RUN echo $var
    EOF

Before:

    Step 3/3 : RUN echo $var
     ---> Running in f06571e77146
    bbb

After:

    Step 2/3 : ARG var=${aaa:-bbb
    failed to process "${aaa:-bbb": syntax error: missing '}'

Example 2: missing closing `}`, no default value

    docker build --no-cache -<<'EOF'
    FROM busybox
    ARG var=${aaa
    RUN echo $var
    EOF

Before:

    Step 2/3 : ARG var=${aaa
    failed to process "${aaa": missing ':' in substitution

After:

    Step 2/3 : ARG var=${aaa
    failed to process "${aaa": syntax error: missing '}'

Example 3: double opening bracket (`{`)

    docker build --no-cache -<<'EOF'
    FROM busybox
    ARG var=${{aaa:-bbb}
    RUN echo $var
    EOF

Before:

    Step 2/3 : ARG var=${{aaa:-bbb}
    failed to process "${{aaa:-bbb}": missing ':' in substitution

After:

    Step 2/3 : ARG var=${{aaa:-bbb}
    failed to process "${{aaa:-bbb}": syntax error: bad substitution

Example 4: double opening bracket (`{`), no default value

    docker build --no-cache -<<'EOF'
    FROM busybox
    ARG var=${{aaa}
    RUN echo $var
    EOF

Before:

    Step 2/3 : ARG var=${{aaa}
    failed to process "${{aaa}": missing ':' in substitution

After:

    Step 2/3 : ARG var=${{aaa}
    failed to process "${{aaa}": syntax error: bad substitution

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 955a6ad95f7891a45692d975793abf1eeb07cdd5
Component: engine
2018-05-25 18:19:17 +02:00
7cd3587aa3 Merge pull request #37141 from thaJeztah/bump_api_v1_38
Update API version to v1 38
Upstream-commit: 9c2c887b125df56e622d20ebbbe626c55b61e44a
Component: engine
2018-05-24 17:54:05 -10:00
034a285949 ContainerTop: improve error message
If "ps" fails, in many cases it prints a meaningful error message
which a user can benefit from. Let's use it.

While at it, let's use errdefs.System to classify the error,
as well as errors.Wrap.

Before:

> $ docker top $CT <any bad ps options>
> Error response from daemon: Error running ps: exit status 1

After:

> $ docker top $CT auxm
> Error response from daemon: ps: error: thread display conflicts with forest display

or

> $ docker top $CT saur
> Error response from daemon: ps: error: conflicting format options

or, if there's no meaningful error on stderr, same as before:

> $ docker top $CT 1234
> Error response from daemon: ps: exit status 1

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: a41328d5704b8d1adbcd099fb4bb0697060df806
Component: engine
2018-05-24 18:24:36 -07:00
b7dcd71938 ContainerTop: speed up
Current ContainerTop (a.k.a. docker top) implementation uses "ps"
to get the info about *all* running processes, then parses it, then
filters the results to only contain PIDs used by the container.
Collecting data only to throw most of it away is inefficient,
especially on a system running many containers (or processes).
For example, "docker top" on a container with a single process
can take up to 0.5 seconds to execute (on a mostly idle system)
which is noticeably slow.

Since the containers PIDs are known beforehand, let's use ps's
"-q" option to provide it with a list of PIDs we want info about.

The problem with this approach is, some ps options can't be used
with "-q" (the only one I'm aware of is "f" ("forest view") but
there might be more). As the list of such options is not known,
in case ps fails, it is executed again without "q" (retaining
the old behavior).

Next, the data produced by "ps" is filtered in the same way as before.
The difference here is, in case "-q" worked, the list is much shorter.

I ran some benchmarks on my laptop, with about 8000 "sleep" processes
running to amplify the savings.

The improvement in "docker top" execution times is 5x to 10x (roughly
0.05s vs 0.5s).

The improvement in ContainerTop() execution time is up to 100x
(roughly 3ms vs 300ms).

I haven't measured the memory or the CPU time savings, guess those
are not that critical.

NOTE that busybox ps does not implement -q so the fallback is always
used, but AFAIK it is not usable anyway and Docker expects a normal
ps to be on the system (say the list of fields produced by
"busybox ps -ef" differs from normal "ps -ef" etc.).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: a076badb8b33f1ecdc5d46f0a3701f10c0579f73
Component: engine
2018-05-24 18:24:27 -07:00
8c68c67c26 Merge pull request #37136 from muesli/sdnotify-api-const
Use go-systemd const instead of magic string in Linux version of dockerd
Upstream-commit: 80bfcc3a7a870c5b3683489ebc6fec9d67a3dfc4
Component: engine
2018-05-24 14:30:28 +02:00
d75e37db71 Merge pull request #37133 from cpuguy83/bump_continuity
Bump continuity
Upstream-commit: aa2d23a7357d4e827391705b8796a59df78c466d
Component: engine
2018-05-24 13:56:59 +02:00
db35657a47 Adjust API version to match correct release
This fix was not yet included in Docker 17.05, so
API version v1.37 was not the right selector (Docker
18.03, 18.04 and 18.05 all support API v1.37).

We should change these checks for engine versions,
or use a different method to skip tests when running
against older engines.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: a061b1e2d8f6117b0524e44de7b6bc391245864e
Component: engine
2018-05-24 02:39:56 +02:00
17b4dbf7d5 Bump API version to v1.38
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: df5175e1ee955a429ac5a4f8bdfacffd4d066c26
Component: engine
2018-05-24 02:39:28 +02:00
1a3da70ee0 Merge pull request #37108 from thaJeztah/remove_unneeded_aliases
Various code-cleanup
Upstream-commit: 8e2f9203065987116aec9e2d2a1d5c7039e1a5d4
Component: engine
2018-05-24 01:38:56 +02:00
75bf6c61a8 Adapt listeners to upstream API changes in go-systemd
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
Upstream-commit: 703c3c573599e20e1059d18f74cb4a05647587ae
Component: engine
2018-05-23 21:57:30 +02:00
8e008e90c3 Merge pull request #35246 from dperny/attachment-inspect
Output network attachment task information
Upstream-commit: 5a68e2617da4b18ea4bae9fb3205026bb541e8d4
Component: engine
2018-05-23 15:44:39 -04:00
33e8d89a75 Use go-systemd const instead of magic string in Linux version of dockerd
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
Upstream-commit: d393774a53e0a45486047a80ca4ae8faf5599386
Component: engine
2018-05-23 19:06:34 +02:00
93d19d1ff6 Bump go-systemd dependency to v17
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
Upstream-commit: 8991bac2e045b8cac4a289928ebb743e978bbfc5
Component: engine
2018-05-23 19:06:13 +02:00
0f96e98e12 Various code-cleanup
remove unnescessary import aliases, brackets, and so on.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: f23c00d8701e4bd0f2372a586dacbf66a26f9a51
Component: engine
2018-05-23 17:50:54 +02:00
7a450d43c0 Bump continuity
Fixes an issue where `CopyDir` would truncate files larger than 2^32
bytes.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 616fa9446e49502da501a7d0f92b13191f5058dd
Component: engine
2018-05-23 10:05:06 -04:00
144693e197 Merge pull request #36750 from kolyshkin/t-mount-seclabel
pkg/mount/TestMount: fix wrt selinux
Upstream-commit: 0846a02d549d3e0a28e7f7962b92af98992eba17
Component: engine
2018-05-23 15:22:37 +02:00
b08e109289 Merge pull request #37121 from thaJeztah/fix-exec-ids-itemtype
Set item-type for ExecIDs
Upstream-commit: bbca556a80b43ebd8383048bac03d49ac182e1a4
Component: engine
2018-05-23 11:56:47 +02:00
3f553880b1 Merge pull request #37119 from kolyshkin/test-top
TestContainerAPITop: fix flakyness
Upstream-commit: f800701008d4efdd5e92c117e99f49f343f22a93
Component: engine
2018-05-23 10:05:42 +02:00
4056a6dfa4 pkg/mount/TestMount: fix wrt selinux
Sometimes docker-master CI fails on rhel4+selinux configuration,
like this:

--- FAIL: TestMount (0.12s)
    --- FAIL: TestMount/none-remount,size=128k (0.01s)
    	mounter_linux_test.go:209: unexpected mount option "seclabel" expected "rw,size=128k"
    --- FAIL: TestMount/none-remount,ro,size=128k (0.01s)
    	mounter_linux_test.go:209: unexpected mount option "seclabel" expected "ro,size=128k"

Earlier, commit 8bebd42df2 (PR #34965) fixed this failure,
but not entirely (i.e. the test is now flaky). It looks like
either selinux detection code is not always working (it won't
work in d-in-d), or the kernel might or might not add 'seclabel'
option).

As the subject of this test case is definitely not selinux,
it can just ignore the option added by it.

While at it, fix error messages:
 - add missing commas;
 - fix a typo;
 - allow for clear distinction between mount
   and vfs (per-superblock) options.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: d78e885326213e8ef89919c3cc6d16e712e852a8
Component: engine
2018-05-22 23:30:47 -07:00
66dfe0e944 TestContainerAPITop: fix flakyness
The following failure is seen in CI from time to time:

> FAIL: docker_api_containers_test.go:435: DockerSuite.TestContainerAPITop
>
> docker_api_containers_test.go:453:
>     c.Assert(top.Processes[0][10], checker.Equals, "/bin/sh -c top")
> ... obtained string = "top"
> ... expected string = "/bin/sh -c top"

The test case expects two processes in the output:

1. /bin/sh -c top
2. top

in the given order.

Now, "ps aux" output is sorted by PID*, and so since the "top" is a child
of "/bin/sh -c top" it has a higher PID and will come second as expected
by the test... unless the PIDs on the system are exhausted and PID rollover
happens, in which case PID of "top" will be lower than that of "/bin/sh".

Fix: sort output by process name.

* - in fact it is not sorted, but is being printed in the same order as
    the kernel list PID entries in /proc directory, which appears to be
    sorted by PID (see ls -1 -U /proc).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 0823ab70990fa4cbf520726013e75c264e6c5231
Component: engine
2018-05-22 18:11:36 -07:00
6280cae03a skip feature/test added that is breaking ee
Signed-off-by: Anda Xu <anda.xu@docker.com>
Upstream-commit: 84598be35f200bd0ea28a615100c51dbaeb51898
Component: engine
2018-05-22 17:42:41 -07:00
843828ae85 daemon/parsePsOutput: minor optimisation
It does not make sense to keep looking for PID once
we found it, so let's give it a break.

The side effect of this patch is, if there's more than one column
titled "PID", the last (rightmost) column was used before, and now
the first (leftmost) column is used. Should make no practical
difference whatsoever.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 654a7625fc9f0b7b04da0e0e4d151af04a65cc7f
Component: engine
2018-05-22 16:24:13 -07:00
53104fbd7c Update swagger and API history
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 3682703ad4a75ea489aa84cbaddcfa4697a4e57e
Component: engine
2018-05-22 23:37:33 +02:00
c0a75ea18d Output network attachment task information
Adds functionality to parse and return network attachment spec
information. Network attachment tasks are phony tasks created in
swarmkit to deal with unmanaged containers attached to swarmkit. Before
this change, attempting `docker inspect` on the task id of a network
attachment task would result in an empty task object. After this change,
a full task object is returned

Fixes #26548 the correct way.

Signed-off-by: Drew Erny <drew.erny@docker.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 5b69ff466e61fa168f24869710f2070c742a5565
Component: engine
2018-05-22 23:36:30 +02:00
60c2eac8bf daemon unit tests: skip some if non-root
This prevents the following test case failures "go test" is run
as non-root in the daemon/ directory:

> --- FAIL: TestContainerInitDNS (0.02s)
> 	daemon_test.go:209: chown /tmp/docker-container-test-054812199/volumes: operation not permitted
>
> --- FAIL: TestDaemonReloadNetworkDiagnosticPort (0.00s)
>	reload_test.go:525: mkdir /var/lib/docker/network/files/: permission denied
> --- FAIL: TestRootMountCleanup (0.00s)
> 	daemon_linux_test.go:240: assertion failed: error is not nil: operation not permitted

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 16670ed4842b1ee4853ba39b6ebf2b771d28db9a
Component: engine
2018-05-22 13:12:29 -07:00
717e3937b9 more fixes on integration
Signed-off-by: Anda Xu <anda.xu@docker.com>
Upstream-commit: b9b4f888703a20ddd7670c1b978dcb1621fa210f
Component: engine
2018-05-22 11:25:25 -07:00
272a5bdcba Set item-type for ExecIDs
Arrays expect a type to be set for items in the array.

This patch adds the "string" type, adds a short description,
and some example values.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 8b6b55986644c093564497bfef51733a8d598baf
Component: engine
2018-05-22 13:18:44 +02:00
5657eef95c Merge pull request #35402 from thaJeztah/fix-GetTimestamp-parsing
Improve GetTimestamp parsing
Upstream-commit: da99009bbb1165d1ac5688b5c81d2f589d418341
Component: engine
2018-05-22 12:28:01 +02:00
ee3ee2f6b0 Merge pull request #37113 from thaJeztah/update-authors
Update authors and mailmap
Upstream-commit: dc65e85faeb2d984ea6e102fb4f5616859b1269f
Component: engine
2018-05-22 09:42:06 +02:00
4a53a3c7a9 Merge pull request #37106 from thaJeztah/unfork-cobra
Bump spf13/cobra to v0.0.3, pflag to v1.0.1
Upstream-commit: 032a4b6ef641d588556133b57c5fc2107680fcbb
Component: engine
2018-05-22 09:39:52 +02:00