Commit Graph

3003 Commits

Author SHA1 Message Date
Daniel J Walsh
90805fa39f Add support for podman remote build -f - .
Fixes: https://github.com/containers/podman/issues/10621

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-06-24 14:08:57 -04:00
zhangguanzhang
854c27c0a0 Fix panic condition in cgroups.getAvailableControllers
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2021-06-24 14:07:10 -04:00
Paul Holzinger
6ba9617be6 Fix resize race with podman exec -it
When starting a process with `podman exec -it` the terminal is resized
after the process is started. To fix this allow exec start to accept the
terminal height and width as parameter and let it resize right before
the process is started.

Fixes #10560

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-06-24 13:48:48 -04:00
Miloslav Trmač
eb6d4b0cfe Fix documentation of the --format option of podman push
It affects all transports; and without --format, we try several manifest formats.

[NO TESTS NEEDED]

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2021-06-24 13:47:21 -04:00
cdoern
613f427a03 Health Check is not handled in the compat LibpodToContainerJSON
Added parsing and handling for the healthCheck status within containers.go. Also modified tests

fixes #10457

Signed-off-by: cdoern <cbdoer23@g.holycross.edu>

<MH: Fixed cherry-pick conflicts>

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-06-24 13:42:13 -04:00
Valentin Rothberg
6f769bc0e9 create: support images with invalid platform
Much to my regret, there is a number of images in the wild with invalid
platforms breaking the platform checks in libimage that want to make
sure that a local image is matching the expected platform.

Imagine a `podman run --arch=arm64 fedora` with a local amd64 fedora
image.  We really shouldn't use the local one in this case and pull down
the arm64 one.

The strict platform checks in libimage in combination with invalid
platforms in images surfaced in Podman being able to pull an image but
failing to look it up in subsequent presence checks.  A `podman run`
would hence pull such an image but fail to create the container.

Support images with invalid platforms by vendoring the latest HEAD from
containers/common.  Also remove the partially implemented pull-policy
logic from Podman and let libimage handle that entirely.  However,
whenever --arch, --os or --platform are specified, the pull policy will
be forced to "newer".  This way, we pessimistically assume that the
local image has an invalid platform and we reach out to the registry.
If there's a newer image (i.e., one with a different digest), we'll pull
it down.

Please note that most of the logic has either already been implemented
in libimage or been moved down which allows for removing some clutter
from Podman.

[NO TESTS NEEDED] since c/common has new tests.  Podman can rely on the
existing tests.

Fixes: #10648
Fixes: #10682
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-06-24 10:15:56 +02:00
Alex Schultz
f69789155a Fall back to string for dockerfile parameter
a9cb824981 changed the expectations of the
dockerfile parameter to be json data however it's a string. In order to
support both, let's attempt json and fall back to a string if the json
parsing fails.

Closes #10660

Signed-off-by: Alex Schultz <aschultz@redhat.com>
2021-06-14 10:34:35 -04:00
Valentin Rothberg
5a158563c0 remote events: fix --stream=false
Fix a bug in remote events where only one event would be sent if when
streaming is turned off.  The source of the bug was that the handler
attempted to implement the streaming logic and did it wrong.  The fix is
rather simple by removing this logic from the handler and let the events
backend handle streaming.

Fixes: #10529
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-06-11 13:06:07 -04:00
Paul Holzinger
38fbd2cb9e [CI:DOCS] fix incorrect network remove api doc
The endpoint returns an array and not a single entry.

Fixes #10494

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-06-11 13:06:07 -04:00
Paul Holzinger
26eae3bf89 remote: always send resize before the container starts
There is race condition in the remote client attach logic. Because the
resize api call was handled in an extra goroutine the container was
started before the resize call happend. To fix this we have to call
resize in the same goroutine as attach. When the first resize is done
start a goroutine to listen on SIGWINCH in the background and resize
again if the signal is received.

Fixes #9859

Signed-off-by: Paul Holzinger <pholzing@redhat.com>

<MH: Fixed cherry-pick conflicts>

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-06-11 13:06:07 -04:00
Valentin Rothberg
c751544fac remote events: support labels
Certain event meta data was lost when converting the remote events to
libpod events and vice versa.  Enable the skipped system tests for
remote.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-06-11 13:06:07 -04:00
Paul Holzinger
c28f442b28 remote pull: cancel pull when connection is closed
If a client closes the http connection during image pull, the
service should cancel the pull operation.

[NO TESTS NEEDED] I have no idea how we could test this reliable.

Fixes: #7558

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-06-11 13:06:07 -04:00
Paul Holzinger
2993bdf1ef Fix network prune api docs
The api doc used wrong response examples for both the compat and libpod
network prune endpoints. Change the doc so that it matches the actual
return values. Also fix the endpoints to return an empty array instead
of null when no networks are removed.

[NO TESTS NEEDED]

Fixes: #10564

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-06-11 13:06:06 -04:00
Daniel J Walsh
2afb5eeab6 podman-remote build should handle -f option properly
podman-remote build has to handle multiple different locations
for the Containerfile.  Currently this works in local mode but not
when using podman-remote.

Fixes: https://github.com/containers/podman/issues/9871

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-06-11 11:14:04 -04:00
Paul Holzinger
80362b34c4 Fix build tags for pkg/machine...
Podman machine is only intended for amd64 and arm64 architectures, set
the correct buildtags so that the `pkg/machine`, `pkg/machine/qemu` and
`pkg/machine/libvirt` packages compile correctly.

[NO TESTS NEEDED]

Fixes #10625

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-06-11 11:08:18 -04:00
Giuseppe Scrivano
d46deca8c8 rootless: fix fast join userns path
commit ab88632835 changed the path for
the pause.pid file but didn't update the same path in the C code.
This prevented Podman to take the fast path when the userns is already
created and to join it without re-execing itself.

Fix the path in the C code as well so we can join the rootless
user+mount namespace without having to re-exec Podman.

[NO TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
(cherry picked from commit 11badab046)
2021-06-10 09:26:06 +02:00
Brent Baude
b6ef7cf21d Correct qemu options for Intel macs
On intel macs, we need to accel=hvf to work correctly.

Fixes: #10555

[NO TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2021-06-08 13:45:07 -05:00
Matej Vasek
4b8ca63039 Use request context instead of background
This prevents goroutine leak:
If background context were used then push operation would continue even
if client aborted request by closing connection.

[NO TESTS NEEDED]

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-06-03 13:54:57 -04:00
Valentin Rothberg
32927f5d66 generate systemd: make mounts portable
Commit 748826fc88 fixed a bug where slow mounting of the runroot was
causing issues when the units are started at boot.  The fix was to add
the container's runroot to the required mounts; the graph root has been
added as well.

Hard-coding the run- and graphroot to the required mounts, however,
breaks the portability of units generated with --now.  Those units are
intended to be running on any machine as, theoreticaly, any user.

Make the mounts portable by using the `%t` macro for the run root.
Since the graphroot's location varies across root and ordinary users,
drop it from the list of required mounts.  The graphroot was not causing
issues.

Fixes: #10493
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-05-31 14:56:45 +02:00
Daniel J Walsh
934f36df5e Handle hard links in different directories
Fixes: https://github.com/containers/podman/issues/10444

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-25 15:27:22 -04:00
Daniel J Walsh
ba884865c5 Handle hard links in remote builds
Fixes: https://github.com/containers/podman/issues/9893

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-25 15:25:02 -04:00
flouthoc
c53638e9f6 Podman info add support for status of cgroup controllers
Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2021-05-25 15:19:03 -04:00
Daniel J Walsh
ac8b7ddd8d Drop container does not exist on removal to debugf
We have race conditions where a container can be removed
by two different processes when running podman --remove rm.

It can be cleaned up in the API or by the conmon executing
podman container cleanup.

When we fail to remove a container that does not exists we should
not be printing errors or warnings, we should just debug the fact.

[NO TESTS NEEDED] Since this is a race condition it is difficult to
test.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-25 15:17:35 -04:00
Jhon Honce
18e917cdc3 Downgrade API service routing table logging
[NO TESTS NEEDED]

* Log the routing table output at Trace vs. Debug level. Reduce noise
  in debugging output.
* Tweak SDNotify message to report Warn when it fails. Previously
  failures were silent.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-05-25 15:15:50 -04:00
Valentin Rothberg
32dd933a7e update c/common
Update containers common to the latest HEAD.  Some bug fixes in libimage
forced us to have a clearer separation between ordinary images and
manifest lists.  Hence, when looking up manifest lists without recursing
into any of their instances, we need to use `LookupManifestList()`.

Also account for some other changes in c/common (e.g., the changed order
in the security labels).

Further vendor the latest HEAD from Buildah which is required to get the
bud tests to pass.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>

<MH: Stripped out vendor bits - just left remaining changes>

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-05-20 14:47:51 -04:00
OpenShift Merge Robot
93c3e03227 Merge pull request #10363 from vrothberg/fix-10350
image prune: remove unused images only with `--all`
2021-05-17 11:17:21 -04:00
Valentin Rothberg
2a43fcf786 image prune: remove unused images only with --all
Fix a regression in `podman image prune` where unused images were
accidentally removed even when `--all=false`.  Extend and partially
rewrite the e2e tests to make sure we're not regressing again in the
future.

Fixing the aforementioned issue revealed another issue in the default
prune filter.  While prune should remove all "dangling" images (i.e.,
those without tag), it removed only "intermediate" ones; dangling images
without children.  Remove the mistaken comment from the libimage
migration.

Also clarify the help message and man page.

Fixes: #10350
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-05-17 13:52:03 +02:00
Paul Holzinger
4462113c5e podman network reload add rootless support
Allow podman network reload to be run as rootless user. While it is
unlikely that the iptable rules are flushed inside the rootless cni
namespace, it could still happen. Also fix podman network reload --all
to ignore errors when a container does not have the bridge network mode,
e.g. slirp4netns.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-05-17 10:55:02 +02:00
OpenShift Merge Robot
071799f259 Merge pull request #10324 from containers/uncompressing
[NO TESTS NEEDED] Print "extracting" only on compressed file
2021-05-12 16:10:48 -04:00
Ashley Cui
01f6e4b53e Print "extracting" only on compressed file
We should only print "extracting compressed file" when the file is
actually compressed

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-05-12 14:35:49 -04:00
OpenShift Merge Robot
57b642525b Merge pull request #10271 from matejvasek/fix-wait-next-exit
fix: improved "containers/{name}/wait" endpoint
2021-05-10 14:31:40 -04:00
Jhon Honce
290a58286f Add client disconnect to build handler loop
[NO TESTS NEEDED]
In process of debugging added request channel check and logging message
to build loop. Unable to recreate build drop issue after this. 68k build
iterations without fail.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-05-10 09:46:40 -07:00
OpenShift Merge Robot
fbc128ee93 Merge pull request #10236 from Luap99/generate-systemd-env
Add envars to the generated systemd unit
2021-05-10 11:43:40 -04:00
OpenShift Merge Robot
446e5b3006 Merge pull request #10292 from rhatdan/buildah
Fix podman-remote build --rm=false ...
2021-05-10 10:44:39 -04:00
Daniel J Walsh
07164c119a Fix podman-remote build --rm=false ...
Fixes: https://github.com/containers/podman/issues/9869

[NO TESTS NEEDED] Since the podman-remote buildah tests will test this,
and this is clearly correct.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-10 09:16:52 -04:00
OpenShift Merge Robot
195895eb7e Merge pull request #10268 from flouthoc/kube-default-shared-namespace
Kube like pods should share ipc,net,uts by default
2021-05-10 09:12:54 -04:00
Matej Vasek
66e38ca55d fix: improved "containers/{name}/wait" endpoint
Using event API to detect changes to container instead of polling.
Polling was unreliable, sometime change of a state might have been
missed.

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-05-10 13:40:06 +02:00
Paul Holzinger
77e6ae2436 Add envars to the generated systemd unit
The with --new generated systemd unit loses the environment variables
when the create command only contains the key without the value. Since
podman tries to lookup those values from the environment the unit can
fail.

This commits ensures that we will add the environment variables to the
unit file when this is the case. The container environment variables are
looked up in the container spec.

Fixes #10101

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-05-10 12:01:24 +02:00
Matej Vasek
dd98e70302 fix: use UTC Time Stamps in response JSON
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-05-10 11:21:14 +02:00
flouthoc
14a1a4546c Kube like pods should share ipc,net,uts by default
Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2021-05-10 11:29:11 +05:30
OpenShift Merge Robot
54bed1025d Merge pull request #10265 from matejvasek/fix-get-multiple-imgs-compat
fix: compat API "images/get" for multiple images
2021-05-08 06:20:19 -04:00
OpenShift Merge Robot
141d3f1ac3 Merge pull request #10259 from rhatdan/pull
Report Download complete in Compatibility mode
2021-05-07 15:06:51 -04:00
Matej Vasek
c8deab8296 fix: compat API "images/get" for multiple images
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-05-07 20:35:03 +02:00
OpenShift Merge Robot
0ce6a65b39 Merge pull request #10230 from matejvasek/fix-compat-img-get
fix: docker APIv2 `images/get`
2021-05-07 12:28:26 -04:00
Daniel J Walsh
3757d8820d Report Download complete in Compatibility mode
Fixes: https://github.com/containers/podman/issues/10258

[NO TESTS NEEDED] Difficult to create tests for this.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-07 11:53:19 -04:00
OpenShift Merge Robot
0c411278ce Merge pull request #10202 from EduardoVega/9763-kube-auto-update
Add support to preserve auto-update labels in play / generate kube
2021-05-07 05:36:26 -04:00
OpenShift Merge Robot
141ba94f97 Merge pull request #10221 from ashley-cui/envsec
Add support for environment variable secrets
2021-05-07 05:34:26 -04:00
Eduardo Vega
72f4f389f0 Adds support to preserve auto update labels in generate and play kube
In the case of generate kube the auto-update labels will be converted into kube annotations and for play kube they will be converted back to labels since that's what podman understands

Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-05-06 21:21:43 -06:00
OpenShift Merge Robot
034470e5be Merge pull request #9689 from boaz0/boaz-1
add restart-policy to container filters & --filter to podman start
2021-05-06 14:50:26 -04:00
Ashley Cui
2634cb234f Add support for environment variable secrets
Env var secrets are env vars that are set inside the container but not
commited to and image. Also support reading from env var when creating a
secret.

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-05-06 14:00:57 -04:00