Commit graph

38900 commits

Author SHA1 Message Date
Christian Becker
322c9e6866 add partial metadata to journald logs
add all partial metadata available to journald logs to allow easier reassembly of partial messages in downstream logging systems

fixes #41403

Signed-off-by: Christian Becker <christian.becker@sixt.com>
2020-09-01 12:54:05 +02:00
Akihiro Suda
7ae5222c72
Merge pull request #40982 from AkihiroSuda/containerd14beta0
update containerd binary to v1.4.0
2020-08-21 16:46:27 +09:00
Brian Goff
3902057020
Merge pull request #41377 from thaJeztah/refactor_idtools
pkg/idtools: refactor to avoid string-splitting
2020-08-20 11:54:01 -07:00
Sebastiaan van Stijn
ea9886cec4
pkg/idtools: refactor to avoid string-splitting
The package used a lot of string-formatting, followed by string-splitting.
This looked to originate from attempts to use templating to allow future
extensibility (9a3ab0358e).

Looking at the history of the package, only a single update was made to
these templates, 5 years go, which makes it unlikely that more templating
will be needed.

This patch simplifies the handling of arguments to use `[]string` instead
of a single `string` (and splitting to a `[]string`). This both simplifies
the code somewhat, and prevents user/group-names containing spaces to be
splitted (causing, e.g. `getent` to fail).

Note that user/group-names containing spaces are invalid (or at least
discouraged), there are situations where such names may be used, so we
should avoid breaking on such names.

Before this change, a user/group name with a space in its name would fail;

    dockerd --userns-remap="user:domain users"
    INFO[2020-08-19T10:26:59.288868661+02:00] Starting up
    Error during groupname lookup for "domain users": getent unable to find entry "domain" in group database

With this change:

    # Add some possibly problematic usernames for testing
    # need to do this manually, as `adduser` / `useradd` won't accept these names
    echo 'user name1002:1002::/home/one:/bin/false' >> /etc/passwd; \
    echo 'user name1002:' >> /etc/group; \
    echo 'user name:1266401166:65536' >> /etc/subuid; \
    echo 'user name:1266401153:65536' >> /etc/subgid; \
    echo 'user$HOME1003:1003::/home/one:/bin/false' >> /etc/passwd; \
    echo 'user$HOME1003:' >> /etc/group; \
    echo 'user$HOME:1266401166:65536' >> /etc/subuid; \
    echo 'user$HOME:1266401153:65536' >> /etc/subgid; \
    echo 'user'"'"'name1004:1004::/home/one:/bin/false' >> /etc/passwd; \
    echo 'user'"'"'name1004:' >> /etc/group; \
    echo 'user'"'"'name:1266401166:65536' >> /etc/subuid; \
    echo 'user'"'"'name:1266401153:65536' >> /etc/subgid; \
    echo 'user"name1005:1005::/home/one:/bin/false' >> /etc/passwd; \
    echo 'user"name1005:' >> /etc/group; \
    echo 'user"name:1266401166:65536' >> /etc/subuid; \
    echo 'user"name:1266401153:65536' >> /etc/subgid;

    # Start the daemon using those users
    dockerd --userns-remap="user name:user name"
    dockerd --userns-remap='user$HOME:user$HOME'
    dockerd --userns-remap="user'name":"user'name"
    dockerd --userns-remap='user"name':'user"name'

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-20 12:24:38 +02:00
Akihiro Suda
15292d7abf
update containerd binary to v1.4.0
release note: https://github.com/containerd/containerd/releases/tag/v1.4.0

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2020-08-19 23:01:28 +09:00
Brian Goff
d0eff1f86f
Merge pull request #41357 from thaJeztah/simplify_env_handling
opts: simplify ValidateEnv to use os.LookupEnv
2020-08-18 06:19:33 -07:00
Akihiro Suda
111f9c3fdf
Merge pull request #41335 from thaJeztah/remove_unneeded_eval_symlinks
daemon.setupPathsAndSandboxOptions() skip resolving symlinks
2020-08-18 19:55:51 +09:00
Sebastiaan van Stijn
0db8310ec1
Merge pull request #41327 from thaJeztah/improve_build_errors
Builder: print relative path if COPY/ADD source path was not found
2020-08-18 09:50:34 +02:00
Sebastiaan van Stijn
868578e493
Merge pull request #41353 from tao12345666333/add-openat2-to-seccomp-profile
Add openat2 and faccessat2 to default seccomp profile.
2020-08-17 17:24:11 +02:00
Sebastiaan van Stijn
ae8d371613
Merge pull request #41344 from tao12345666333/vendor-runc-rc92
vendor runc rc92
2020-08-17 17:23:04 +02:00
Jintao Zhang
a18139111d Add faccessat2 to default seccomp profile.
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-17 21:13:03 +08:00
Sebastiaan van Stijn
010adeec55
Builder: print relative path if COPY/ADD source path was not found
Before this change, the error returned to the user would include the physical
path inside the tmp dir on the daemon host. These paths should be considered
an implementation detail, and provide no value to the user. Printing the tmp
path can confuse users, and will be even more confusing if the daemon is running
remotely (or in a VM, such as on Docker Desktop), in which case the path in the
error message does not exist on the local machine;

    echo -e "FROM busybox\nCOPY /some/non-existing/file.txt ." | DOCKER_BUILDKIT=0 docker build -f- .

    Sending build context to Docker daemon   1.57kB
    Step 1/2 : FROM busybox
     ---> 1c35c4412082
    Step 2/2 : COPY /some/non-existing/file.txt .
    COPY failed: stat /var/lib/docker/tmp/docker-builder405687992/some/non-existing/file.txt: no such file or directory

When copying files from an image or a build stage, using `--from`, the error
is similarly confusing:

    echo -e "FROM busybox\nCOPY --from=busybox /some/non-existing/file.txt ." | DOCKER_BUILDKIT=0 docker build -f- .
    Sending build context to Docker daemon  4.671kB
    Step 1/2 : FROM busybox
     ---> 018c9d7b792b
    Step 2/2 : COPY --from=busybox /some/non-existing/file.txt .
    COPY failed: stat /var/lib/docker/overlay2/ef34239c80526c779b7afaeaedbf11c1b201d7f7681d45613102c4541da0e156/merged/some/non-existing/file.txt: no such file or directory

This patch updates the error messages to be more user-friendly. Changes are slightly
different, depending on if the source was a local path, or an image (or build-stage),
using `--from`.

If `--from` is used, only the path is updated, and we print the relative path
instead of the full path;

    echo -e "FROM busybox\nCOPY --from=busybox /some/non-existing/file.txt ." | DOCKER_BUILDKIT=0 docker build -f- .
    Sending build context to Docker daemon  1.583kB
    Step 1/2 : FROM busybox
     ---> 018c9d7b792b
    Step 2/2 : COPY --from=busybox /some/non-existing/file.txt .
    COPY failed: stat some/non-existing/file.txt: file does not exist

In other cases, additional information is added to mention "build context" and
".dockerignore", which could provide the user some hints to find the problem:

    echo -e "FROM busybox\nCOPY /some/non-existing/file.txt ." | DOCKER_BUILDKIT=0 docker build -f- .
    Sending build context to Docker daemon  1.583kB
    Step 1/2 : FROM busybox
     ---> 018c9d7b792b
    Step 2/2 : COPY /some/non-existing/file.txt .
    COPY failed: file not found in build context or excluded by .dockerignore: stat some/non-existing/file.txt: file does not exist

    echo -e "FROM busybox\nADD /some/non-existing/file.txt ." | DOCKER_BUILDKIT=0 docker build -f- .
    Sending build context to Docker daemon  1.583kB
    Step 1/2 : FROM busybox
     ---> 018c9d7b792b
    Step 2/2 : ADD /some/non-existing/file.txt .
    ADD failed: file not found in build context or excluded by .dockerignore: stat some/non-existing/file.txt: file does not exist

This patch only improves the error for the classic builder. Similar changes could
be made for BuildKit, which produces equally, or even more confusing errors;

    echo -e "FROM busybox\nCOPY /some/non-existing/file.txt ." | DOCKER_BUILDKIT=1 docker build -f- .
    [+] Building 1.2s (6/6) FINISHED
     => [internal] load build definition from Dockerfile                 0.0s
     => => transferring dockerfile: 85B                                  0.0s
     => [internal] load .dockerignore                                    0.0s
     => => transferring context: 2B                                      0.0s
     => [internal] load metadata for docker.io/library/busybox:latest    1.2s
     => [internal] load build context                                    0.0s
     => => transferring context: 2B                                      0.0s
     => CACHED [1/2] FROM docker.io/library/busybox@sha256:4f47c01...    0.0s
     => ERROR [2/2] COPY /some/non-existing/file.txt .                   0.0s
    ------
     > [2/2] COPY /some/non-existing/file.txt .:
    ------
    failed to compute cache key: failed to walk /var/lib/docker/tmp/buildkit-mount181923793/some/non-existing:
    lstat /var/lib/docker/tmp/buildkit-mount181923793/some/non-existing: no such file or directory

    echo -e "FROM busybox\nCOPY --from=busybox /some/non-existing/file.txt ." | DOCKER_BUILDKIT=1 docker build -f- .
    [+] Building 2.5s (6/6) FINISHED
     => [internal] load build definition from Dockerfile                        0.0s
     => => transferring dockerfile: 100B                                        0.0s
     => [internal] load .dockerignore                                           0.0s
     => => transferring context: 2B                                             0.0s
     => [internal] load metadata for docker.io/library/busybox:latest           1.2s
     => FROM docker.io/library/busybox:latest                                   1.2s
     => => resolve docker.io/library/busybox:latest                             1.2s
     => CACHED [stage-0 1/2] FROM docker.io/library/busybox@sha256:4f47c01...   0.0s
     => ERROR [stage-0 2/2] COPY --from=busybox /some/non-existing/file.txt .   0.0s
    ------
     > [stage-0 2/2] COPY --from=busybox /some/non-existing/file.txt .:
    ------
    failed to compute cache key: failed to walk /var/lib/docker/overlay2/2a796d91e46fc038648c6010f062bdfd612ee62b0e8fe77bc632688e3fba32d9/merged/some/non-existing:
    lstat /var/lib/docker/overlay2/2a796d91e46fc038648c6010f062bdfd612ee62b0e8fe77bc632688e3fba32d9/merged/some/non-existing: no such file or directory

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-17 12:03:18 +02:00
Jintao Zhang
b8988c8475 Add openat2 to default seccomp profile.
follow up to https://github.com/moby/moby/pull/41344#discussion_r469919978

Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-16 15:58:57 +08:00
Sebastiaan van Stijn
c255404a25
opts: simplify ValidateEnv to use os.LookupEnv
os.LookupEnv() was not available yet at the time that this was
implemented (9ab73260f8), but now
provides the functionality we need, so replacing our custom handling.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-14 16:58:30 +02:00
Sebastiaan van Stijn
e9b4655bc9
Merge pull request #41345 from OpenFlowLabs/master
Add solaris support to lstat
2020-08-14 13:01:51 +02:00
Jintao Zhang
c353c7cc71 vendor runc library to v1.0.0-rc92
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-14 14:19:01 +08:00
Jintao Zhang
7ab5b00a9c vendor golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-14 14:18:24 +08:00
Jintao Zhang
2ee753a28f vendor golang.org/x/net v0.0.0-20200707034311-ab3426394381
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-14 14:17:03 +08:00
Jintao Zhang
5eccaaceb5 vendor golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-14 14:14:19 +08:00
Jintao Zhang
15d38650ee vendor containerd library to v1.4.0-rc.1
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-14 14:11:09 +08:00
Sebastiaan van Stijn
0906c7fae9
Merge pull request #41333 from thaJeztah/bump_golang_1.13.15
Bump Golang 1.13.15
2020-08-13 20:10:28 +02:00
Tianon Gravi
9328859c1e
Merge pull request #41316 from thaJeztah/update_authors
Update authors and mailmap
2020-08-13 10:55:04 -07:00
Sebastiaan van Stijn
b837751e40
Merge pull request #41329 from zvier/master
Add more error message for ops when container limit use an device whi…
2020-08-13 15:07:25 +02:00
Akihiro Suda
a4c7f3482e
Merge pull request #41326 from thaJeztah/fix_error_lintint
builder/remotecontext: use lowercase for error
2020-08-13 20:57:53 +09:00
Sebastiaan van Stijn
cf169b45bb
daemon.setupPathsAndSandboxOptions() skip resolving symlinks
This came up in a review of a5324d6950, but
for some reason that comment didn't find its way to GitHub, and/or I
forgot to push the change.

These files are "copied" by reading their content with ioutil.Readfile(),
resolving the symlinks should therefore not be needed, and paths can be
passed as-is;

```go
func copyFile(src, dst string) error {
	sBytes, err := ioutil.ReadFile(src)
	if err != nil {
		return err
	}
	return ioutil.WriteFile(dst, sBytes, filePerm)
}
```

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-13 13:54:09 +02:00
Akihiro Suda
52d019221b
Merge pull request #41340 from thaJeztah/bump_docker_py
Update docker-py to 4.3.0
2020-08-13 19:46:26 +09:00
Sebastiaan van Stijn
3ee1ab87b7
Update docker-py to 4.3.0
full diff: https://github.com/docker/docker-py/compare/4.2.2...4.3.0

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-13 10:38:32 +02:00
Sebastiaan van Stijn
0168ddc77d
Merge pull request #41339 from thaJeztah/bump_tini
Update tini v0.19.0
2020-08-13 10:25:15 +02:00
Akihiro Suda
ab4d0c9264
Merge pull request #41341 from cpuguy83/fix_exit_event_race
Wait for container exit before forcing handler
2020-08-13 15:15:02 +09:00
Till Wegmüller
e3ab236309 Add solaris support to lstat
Signed-off-by: Till Wegmüller <toasterson@gmail.com>
2020-08-12 11:40:58 +02:00
Brian Goff
7fd23345c9 Wait for container exit before forcing handler
This code assumes that we missed an exit event since the container is
still marked as running in Docker but attempts to signal the process in
containerd returns a "process not found" error.

There is a case where the event wasn't missed, just that it hasn't been
processed yet.

This change tries to work around that possibility by waiting to see if
the container is eventually marked as stopped. It uses the container's
configured stop timeout for this.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2020-08-11 21:33:59 +00:00
Sebastiaan van Stijn
31d83961e9
Update tini v0.19.0
full diff: https://github.com/krallin/tini/compare/v0.18.0...v0.19.0

Release notes:

- mipsel build
- include checksums in releases
- ppc64le alias for the ppc64el build

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-11 11:26:28 +02:00
Sebastiaan van Stijn
afd9a6c2b2
builder/remotecontext: use lowercase for error
Errors should not be capitalized. This error was marked as
"being compatible" with the old error, However, looking at
the original error that was in place before d1faf3df27,
I noticed that the error was lowercase before, so it should
be ok to change it back to be lowercase.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-11 10:46:18 +02:00
Jeff Zvier
a7c279f203 Add more error message for ops when container limit use an device which not exist
Signed-off-by: Jeff Zvier <zvier20@gmail.com>
2020-08-11 06:33:22 +08:00
Sebastiaan van Stijn
2a6325e310
Bump Golang 1.13.15
full diff: https://github.com/golang/go/compare/go1.13.14...go1.13.15

go1.13.15 (released 2020/08/06) includes security fixes to the encoding/binary
package. See the Go 1.13.15 milestone on the issue tracker for details.

https://github.com/golang/go/issues?q=milestone%3AGo1.13.15+label%3ACherryPickApproved

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-10 12:13:38 +02:00
Sebastiaan van Stijn
c997a4995d
Merge pull request #41317 from tao12345666333/upgrade-runc-rc92
Update runc binary to v1.0.0-rc92
2020-08-07 19:53:56 +02:00
Akihiro Suda
1370072eb7
Merge pull request #41311 from wanghuaiqing2010/stretch
fix TestDaemonNoSpaceLeftOnDeviceError for mips64le
2020-08-06 15:20:25 +09:00
Jintao Zhang
2c7b48decd Update runc binary to v1.0.0-rc92
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-06 13:37:18 +08:00
Sebastiaan van Stijn
a6b00ed9b9
Update authors and mailmap
Updated and sorted .mailmap and re-generated authors

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-08-06 01:57:12 +02:00
Sebastiaan van Stijn
aaf92f6276
Merge pull request #41310 from AkihiroSuda/containerd137
update containerd to v1.3.7
2020-08-05 20:53:52 +02:00
wanghuaiqing
0f0c1c04c8 fix TestDaemonNoSpaceLeftOnDeviceError for mips64le
Signed-off-by: wanghuaiqing <wanghuaiqing@loongson.cn>
2020-08-05 11:31:51 +08:00
Sebastiaan van Stijn
3f9876e631
Merge pull request #41292 from eelf/pass_network_error
Pass underlying network error in ErrorConnectionFailed
2020-08-04 17:43:14 +02:00
Sebastiaan van Stijn
79eef6e78c
Merge pull request #41178 from tao12345666333/update-runc-to-v1.0.0-rc91
vendor runc libraryv1.0.0-rc91-48-g67169a9d
2020-08-04 14:06:25 +02:00
Akihiro Suda
43d13054c5
update containerd to v1.3.7
Release note: https://github.com/containerd/containerd/releases/tag/v1.3.7

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2020-08-04 14:47:57 +09:00
Sebastiaan van Stijn
c560686600
Merge pull request #41295 from thaJeztah/disable_v1_push
Disable manifest v2 schema 1 push
2020-08-03 18:31:40 +02:00
Sebastiaan van Stijn
bf99523a45
Merge pull request #41306 from wanghuaiqing2010/fix_pr#41145
Supplement the omission of pr#41145
2020-08-03 15:51:48 +02:00
Evgeniy Makhrov
8ccb46a521 Check for context error that is wrapped in url.Error
Signed-off-by: Evgeniy Makhrov <e.makhrov@corp.badoo.com>
2020-08-03 15:59:22 +03:00
wanghuaiqing
ad30ef9113 Supplement the omission of pr#41145
Signed-off-by: wanghuaiqing <wanghuaiqing@loongson.cn>
2020-08-03 14:12:55 +08:00
Sebastiaan van Stijn
39691204f1
Merge pull request #41301 from wangyumu/fix-buildkit-pull-nil-panic
fix buildkit nil panic when frontend image exists
2020-07-31 21:24:09 +02:00
Sebastiaan van Stijn
6302dbbf46
Disable manifest v2 schema 1 push
For CI, a temporary `DOCKER_ALLOW_SCHEMA1_PUSH_DONOTUSE` environment
variable was added while we work out a solution for testing schema 1
pulls (which currently require pushing them to a local registry first
for testing).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-07-31 20:13:58 +02:00