Commit Graph

44344 Commits

Author SHA1 Message Date
Sebastiaan van Stijn
2bfc7aedab Merge pull request #43866 from olljanat/win-enable-attach-websocket
integration-cli: Enable TestGetContainersAttachWebsocket for Windows
2022-07-26 14:20:05 +02:00
Sebastiaan van Stijn
45f845a260 Merge pull request #43863 from vvoland/nit-windowscode
integration-cli: Remove unnecessary Windows-only code
2022-07-26 14:16:25 +02:00
Olli Janatuinen
a61f7abf5a integration-cli: Enable TestGetContainersAttachWebsocket for Windows
Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
2022-07-25 08:17:53 -07:00
Paweł Gronowski
6cc644abef integration-cli: Remove unnecessary Windows-only code
This test is skipped on Windows anyway.
Also add a short explanation why emptyfs image was chosen.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2022-07-25 15:08:55 +02:00
Sebastiaan van Stijn
98d8343aa2 Merge pull request #43838 from thaJeztah/remove_journald_compat
logger/journald: remove journald_compat (for systemd < 209)
2022-07-25 11:25:52 +02:00
Sebastiaan van Stijn
49f021ebf0 Merge pull request #42829 from zq-david-wang/testfix_TestNetworkDBNodeJoinLeaveIteration
Test: wait for network changes in TestNetworkDBNodeJoinLeaveIteration
2022-07-22 06:55:12 +02:00
Sebastiaan van Stijn
d515863abc Merge pull request #43836 from olljanat/restore-custom-nat-networks
Windows: Re-create custom NAT networks after restart if missing from HNS
2022-07-21 22:37:27 +02:00
Sebastiaan van Stijn
e3a18e1990 Merge pull request #43816 from thaJeztah/image_filters
containerd integration: add support for since,before,labels images filters
2022-07-21 21:45:35 +02:00
David Wang
f499c6b9ec Test: wait for network changes in TestNetworkDBNodeJoinLeaveIteration
In network node change test, the expected behavior is focused on how many nodes
left in networkDB, besides timing issues, things would also go tricky for a
leave-then-join sequence, if the check (counting the nodes) happened before the
first "leave" event, then the testcase actually miss its target and report PASS
without verifying its final result; if the check happened after the 'leave' event,
but before the 'join' event, the test would report FAIL unnecessary;

This code change would check both the db changes and the node count, it would
report PASS only when networkdb has indeed changed and the node count is expected.

Signed-off-by: David Wang <00107082@163.com>
2022-07-21 22:56:58 +08:00
Sebastiaan van Stijn
669fbed1ac daemon/containerd: validate image filters
Not all filters are implemented yet, so make sure an error
is returned if a not-yet implemented filter is used.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-21 11:14:12 +02:00
Nicolas De Loof
4d3b32bf3d add support for since, before, labels images filters
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-21 11:14:05 +02:00
Sebastiaan van Stijn
0e9a66d35a logger/journald: remove journald_compat (for systemd < 209)
This was added in 6cdc4ba6cd in 2016, likely
because at the time we were still building for CentOS 6 and Ubuntu 14.04.

All currently supported distros appear to be on _at least_ 219 now, so it looks
safe to remove this;

```bash
docker run -it --rm centos:7

yum install -y systemd-devel

pkg-config 'libsystemd >= 209' && echo "OK" || echo "KO"
OK

pkg-config --print-provides 'libsystemd'
libsystemd = 219

pkg-config --print-provides 'libsystemd-journal'
libsystemd-journal = 219
```

And on a `debian:buster` (old stable)

```bash
docker run -it --rm debian:buster

apt-get update && apt-get install -y libsystemd-dev pkg-config

pkg-config 'libsystemd >= 209' && echo "OK" || echo "KO"
OK

pkg-config --print-provides 'libsystemd'
libsystemd = 241

pkg-config --print-provides 'libsystemd-journal'
Package libsystemd-journal was not found in the pkg-config search path.
Perhaps you should add the directory containing `libsystemd-journal.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libsystemd-journal' found
```

OpenSUSE leap (I think that's built for s390x)

```bash
docker run -it --rm docker.io/opensuse/leap:15

zypper install -y systemd-devel

pkg-config 'libsystemd >= 209' && echo "OK" || echo "KO"
OK

pkg-config --print-provides 'libsystemd'
libsystemd = 246

pkg-config --print-provides 'libsystemd-journal'
Package libsystemd-journal was not found in the pkg-config search path.
Perhaps you should add the directory containing `libsystemd-journal.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libsystemd-journal' found
```

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-20 18:48:00 +02:00
Sebastiaan van Stijn
7624f8aeb1 Merge pull request #43839 from thaJeztah/journald_fix_break
logger/journald: fix SA4011: ineffective break statement
2022-07-20 18:46:11 +02:00
Sebastiaan van Stijn
75577fe7a8 logger/journald: fix SA4011: ineffective break statement
This was introduced in 906b979b88, which changed
a `goto` to a `break`, but afaics, the intent was still to break out of the loop.
(linter didn't catch this before because it didn't have the right build-tag set)

    daemon/logger/journald/read.go:238:4: SA4011: ineffective break statement. Did you mean to break out of the outer loop? (staticcheck)
                break // won't be able to write anything anymore
                ^

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-20 15:14:41 +02:00
Olli Janatuinen
67c36d5d6e Windows: Re-create custom NAT networks after restart if missing from HNS
Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
2022-07-19 14:16:31 -07:00
Brian Goff
2fbc30739b Merge pull request #43815 from thaJeztah/compute_virtualsize
containerd integration: compute virtualsize
2022-07-18 15:49:59 -07:00
Nicolas De Loof
a46ce37d25 compute image VirtualSize
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 19:23:20 +02:00
Sebastiaan van Stijn
992961c56c Merge pull request #43831 from thaJeztah/containerd_restructure
containerd-integration: restructure code to match existing implementation
2022-07-18 19:20:35 +02:00
Brian Goff
6acf0972ec Merge pull request #43832 from thaJeztah/rename_colliding_vars
daemon/images: rename variables that collided with imports
2022-07-18 10:09:12 -07:00
Sebastiaan van Stijn
9c8b0b6050 daemon/containerd: split methods to separate files
This splits the ImageService methods to separate files, to closer
match the existing implementation, and to reduce the amount of code
per file, making it easier to read, and to reduce merge conflicts if
new functionality is added.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 14:46:31 +02:00
Sebastiaan van Stijn
e4cd1933c6 daemon/containerd: ImageService: rename receiver
This renames the receiver to match the existing implementation
in daemon/images.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 14:46:29 +02:00
Sebastiaan van Stijn
91bd9a6642 daemon/containerd: change alias for oci-specs to match existing code
We use "specs" as alias in most places; rename the alias here accordingly
to prevent confusiong and reduce the risk of introducing duplicate imports.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 14:46:27 +02:00
Sebastiaan van Stijn
b529fe0995 daemon/images: fix some linting issues
- fix GoDoc
- rename a variable that collided with an import

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 14:46:02 +02:00
Sebastiaan van Stijn
b94f7157ca daemon/images: rename images.go to image_list.go for consistency
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 14:34:37 +02:00
Sebastiaan van Stijn
046b3fc5dd daemon/images: move SquashImage to its own file
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 14:34:34 +02:00
Sebastiaan van Stijn
6b70975efc Merge pull request #43829 from thaJeztah/image_service_deadcode
daemon: ImageService: remove unused Map(), LookupImage()
2022-07-18 14:25:50 +02:00
Sebastiaan van Stijn
6e0e5d7a31 daemon/images: rename variables that collided with imports
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 13:22:12 +02:00
Sebastiaan van Stijn
2527e6dd09 daemon/containerd: ImageService: remove unused LookupImage()
Looks like this method was not part of the interface, and is not
used anywhere.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 12:22:12 +02:00
Sebastiaan van Stijn
7b510fda0c daemon: ImageService: remove unused Map() method
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-18 11:32:31 +02:00
Sebastiaan van Stijn
5de77049db Merge pull request #43793 from AkihiroSuda/fix-43781
libnetwork: skip firewalld management for rootless
2022-07-15 13:44:11 +02:00
Sebastiaan van Stijn
00795d55df Merge pull request #43784 from thaJeztah/containerd_image_service
Create the containerd image service
2022-07-15 13:38:27 +02:00
Samuel Karp
0136a7c1bb Merge pull request #43804 from thaJeztah/gofmt_119_2 2022-07-14 21:29:07 -07:00
Tianon Gravi
d61c85f7df Merge pull request #43811 from thaJeztah/moar_maintainers
Add Cory Snider (corhere) as maintainer
2022-07-14 11:00:46 -07:00
Sebastiaan van Stijn
ff3d2eb589 Add Cory Snider (corhere) as maintainer
Cory has actively participated in the project for many months, assisted in several
security advisories, code review, and triage, and (in short) already acted a
maintainer for some time (thank you!).

I nominated Cory as a maintainer per e-mail, and we reached quorum, so opening
this pull request to (should he choose to accept it) be added as a maintainer.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-14 19:38:48 +02:00
Akihiro Suda
9464898b47 libnetwork: skip firewalld management for rootless
Fix issue 43781

Co-authored-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-07-15 00:59:11 +09:00
Djordje Lukic
7d74269c0d Create the containerd image service
Initial pull/ls works
Build is deactivated if the feature is active

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-14 16:46:11 +02:00
Akihiro Suda
11b03710ed Merge pull request #43798 from thaJeztah/remove_deprecated
Remove various deprecated types and fields
2022-07-14 22:32:42 +09:00
Akihiro Suda
c7d2099ddb Merge pull request #43802 from thaJeztah/bump_go_1.18.4
update golang to 1.18.4
2022-07-14 22:25:09 +09:00
Sebastiaan van Stijn
c8a0e1da12 Merge pull request #43796 from thaJeztah/api_bump
API: bump version to 1.43
2022-07-13 22:56:30 +02:00
Sebastiaan van Stijn
2a7bd485a6 Merge pull request #43795 from thaJeztah/api_docs
docs: add API v1.42
2022-07-13 22:48:38 +02:00
Sebastiaan van Stijn
4f08346686 fix formatting of "nolint" tags for go1.19
The correct formatting for machine-readable comments is;

    //<some alphanumeric identifier>:<options>[,<option>...][ // comment]

Which basically means:

- MUST NOT have a space before `<identifier>` (e.g. `nolint`)
- Identified MUST be alphanumeric
- MUST be followed by a colon
- MUST be followed by at least one `<option>`
- Optionally additional `<options>` (comma-separated)
- Optionally followed by a comment

Any other format will not be considered a machine-readable comment by `gofmt`,
and thus formatted as a regular comment. Note that this also means that a
`//nolint` (without anything after it) is considered invalid, same for `//#nosec`
(starts with a `#`).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-13 22:31:53 +02:00
Tianon Gravi
dc4ab45e05 Merge pull request #43490 from Bonjourz/43481_support_pku
seccomp: Support PKU in docker by default
2022-07-13 12:09:17 -07:00
Tianon Gravi
a26d82c2f8 Merge pull request #43789 from thaJeztah/client_deadcode
client: errors: remove dead code
2022-07-13 11:54:39 -07:00
Tianon Gravi
c8d18e27bd Merge pull request #43760 from thaJeztah/vlan_cleanups
libnetwork: some cleaning up in ipvlan and macvlan drivers
2022-07-13 11:53:02 -07:00
Sebastiaan van Stijn
34b8670b1a update golang to 1.18.4
go1.18.4 (released 2022-07-12) includes security fixes to the compress/gzip,
encoding/gob, encoding/xml, go/parser, io/fs, net/http, and path/filepath
packages, as well as bug fixes to the compiler, the go command, the linker,
the runtime, and the runtime/metrics package. See the Go 1.18.4 milestone on the
issue tracker for details:

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

This update addresses:

CVE-2022-1705, CVE-2022-1962, CVE-2022-28131, CVE-2022-30630, CVE-2022-30631,
CVE-2022-30632, CVE-2022-30633, CVE-2022-30635, and CVE-2022-32148.

Full diff: https://github.com/golang/go/compare/go1.18.3...go1.18.4

From the security announcement;
https://groups.google.com/g/golang-announce/c/nqrv9fbR0zE

We have just released Go versions 1.18.4 and 1.17.12, minor point releases. These
minor releases include 9 security fixes following the security policy:

- net/http: improper sanitization of Transfer-Encoding header

  The HTTP/1 client accepted some invalid Transfer-Encoding headers as indicating
  a "chunked" encoding. This could potentially allow for request smuggling, but
  only if combined with an intermediate server that also improperly failed to
  reject the header as invalid.

  This is CVE-2022-1705 and https://go.dev/issue/53188.

- When `httputil.ReverseProxy.ServeHTTP` was called with a `Request.Header` map
  containing a nil value for the X-Forwarded-For header, ReverseProxy would set
  the client IP as the value of the X-Forwarded-For header, contrary to its
  documentation. In the more usual case where a Director function set the
  X-Forwarded-For header value to nil, ReverseProxy would leave the header
  unmodified as expected.

  This is https://go.dev/issue/53423 and CVE-2022-32148.

  Thanks to Christian Mehlmauer for reporting this issue.

- compress/gzip: stack exhaustion in Reader.Read

  Calling Reader.Read on an archive containing a large number of concatenated
  0-length compressed files can cause a panic due to stack exhaustion.

  This is CVE-2022-30631 and Go issue https://go.dev/issue/53168.

- encoding/xml: stack exhaustion in Unmarshal

  Calling Unmarshal on a XML document into a Go struct which has a nested field
  that uses the any field tag can cause a panic due to stack exhaustion.

  This is CVE-2022-30633 and Go issue https://go.dev/issue/53611.

- encoding/xml: stack exhaustion in Decoder.Skip

  Calling Decoder.Skip when parsing a deeply nested XML document can cause a
  panic due to stack exhaustion. The Go Security team discovered this issue, and
  it was independently reported by Juho Nurminen of Mattermost.

  This is CVE-2022-28131 and Go issue https://go.dev/issue/53614.

- encoding/gob: stack exhaustion in Decoder.Decode

  Calling Decoder.Decode on a message which contains deeply nested structures
  can cause a panic due to stack exhaustion.

  This is CVE-2022-30635 and Go issue https://go.dev/issue/53615.

- path/filepath: stack exhaustion in Glob

  Calling Glob on a path which contains a large number of path separators can
  cause a panic due to stack exhaustion.

  Thanks to Juho Nurminen of Mattermost for reporting this issue.

  This is CVE-2022-30632 and Go issue https://go.dev/issue/53416.

- io/fs: stack exhaustion in Glob

  Calling Glob on a path which contains a large number of path separators can
  cause a panic due to stack exhaustion.

  This is CVE-2022-30630 and Go issue https://go.dev/issue/53415.

- go/parser: stack exhaustion in all Parse* functions

  Calling any of the Parse functions on Go source code which contains deeply
  nested types or declarations can cause a panic due to stack exhaustion.

  Thanks to Juho Nurminen of Mattermost for reporting this issue.

  This is CVE-2022-1962 and Go issue https://go.dev/issue/53616.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-13 10:42:27 +02:00
Sebastiaan van Stijn
e01f84538a Merge pull request #43797 from thaJeztah/daemon_fail_early
daemon: NewDaemon(): fail early on non-supported platforms
2022-07-13 09:31:08 +02:00
Sebastiaan van Stijn
68bf777ece daemon: remove deprecated fields and flags for cluster-advertise
Removes:

- CommonConfig.ClusterStore
- CommonConfig.ClusterOpts
- CommonConfig.ClusterAdvertise
- The deprecated --cluster-advertise, --cluster-store, and
  --cluster-store-opt flags

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-12 15:39:20 +02:00
Sebastiaan van Stijn
494dadb8a3 api/types: remove deprecated fields for cluster-advertise
This removes:

- Info.ClusterStore
- Info.ClusterAdvertise

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-12 15:10:05 +02:00
Sebastiaan van Stijn
f02cdb50be api/types/volume: remove deprecated types
This removes;

- VolumeCreateBody (alias for CreateOptions)
- VolumeListOKBody (alias for ListResponse)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-12 15:01:30 +02:00
Sebastiaan van Stijn
efb1f141a4 api/types/container: remove deprecated types
This removes;

- ContainerCreateCreatedBody (alias for CreateResponse)
- ContainerWaitOKBody (alias for WaitResponse)
- ContainerWaitOKBodyError (alias for WaitExitError)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-07-12 15:00:16 +02:00