Commit Graph

2201 Commits

Author SHA1 Message Date
OpenShift Merge Robot
defb754945 Merge pull request #7918 from zhangguanzhang/apiv2-wrong-StopSignal
[apiv2] /containers/$name/json return wrong value in `.Config.StopSignal`
2020-10-06 13:17:15 +02:00
OpenShift Merge Robot
80a2317ca2 Merge pull request #7929 from kolyshkin/nits-err
Nits
2020-10-06 10:15:04 +02:00
OpenShift Merge Robot
f584d47a9d Merge pull request #7931 from rhatdan/size
Support max_size logoptions
2020-10-06 05:18:04 +02:00
zhangguanzhang
adde67c74f fix apiv2 /containers/$name/json return wrong value in .Config.StopSignal
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-10-06 11:15:25 +08:00
Kir Kolyshkin
d4aa89bb40 pkg/cgroups/createCgroupv2Path: nits
1. Check the path validity before trying to read the cgroup.controllers.

2. Do not hardcode "/sys/fs/cgroup".

3. Simplify creating the "+this +that" string.

4. Do not wrap ioutil.WriteFile error.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-05 15:57:57 -07:00
Kir Kolyshkin
684d0079d2 Lowercase some errors
This commit is courtesy of

```
for f in $(git ls-files *.go | grep -v ^vendor/); do \
	sed -i 's/\(errors\..*\)"Error /\1"error /' $f;
done

for f in $(git ls-files *.go | grep -v ^vendor/); do \
	sed -i 's/\(errors\..*\)"Failed to /\1"failed to /' $f;
done

```

etc.

Self-reviewed using `git diff --word-diff`, found no issues.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-05 15:56:44 -07:00
Kir Kolyshkin
4878dff3e2 Remove excessive error wrapping
In case os.Open[File], os.Mkdir[All], ioutil.ReadFile and the like
fails, the error message already contains the file name and the
operation that fails, so there is no need to wrap the error with
something like "open %s failed".

While at it

 - replace a few places with os.Open, ioutil.ReadAll with
   ioutil.ReadFile.

 - replace errors.Wrapf with errors.Wrap for cases where there
   are no %-style arguments.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-05 15:30:37 -07:00
Daniel J Walsh
348f2df0c0 Support max_size logoptions
Docker supports log-opt max_size and so does conmon (ALthough poorly).
Adding support for this allows users to at least make sure their containers
logs do not become a DOS vector.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-10-05 17:51:45 -04:00
OpenShift Merge Robot
f48b163934 Merge pull request #7919 from rhatdan/subuid
Fix handling of CheckRootlessUIDRange
2020-10-05 22:54:39 +02:00
Jhon Honce
2fc50f8b13 Fixes remote attach and exec to signal IdleTracker
- Fixes issue where remote attach and exec only signaled the IdleTracker
   on errors. Needs to done anytime after connection has been hijacked
 - Fixes trying to send multiple http status codes to client
 - Changes pprof and API server shutdowns to run in parallel
 - Changes shutdown to run in sync.Once block

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-10-05 10:40:23 -07:00
Daniel J Walsh
30bd8ed506 Fix handling of CheckRootlessUIDRange
If I have multiple ranges of UIDs specified in the /etc/subuid, this check
blows up and incorrectly blocks the use of --user flag.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-10-05 10:13:40 -04:00
OpenShift Merge Robot
a9d572f40f Merge pull request #7909 from zhangguanzhang/remote-ps-ns-broken
Fix podman-remote ps --ns broken
2020-10-05 12:11:41 +02:00
OpenShift Merge Robot
7353000a06 Merge pull request #7902 from rhatdan/selinux
Add SELinux support for pods
2020-10-05 10:32:28 +02:00
zhangguanzhang
4a2c4c3989 Fix podman-remote ps --ns broken
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-10-04 19:48:13 +08:00
OpenShift Merge Robot
7c12967257 Merge pull request #7899 from zhangguanzhang/service-panic-client-kill
[podman-remote] Fix closed connection on pull causes service panic
2020-10-03 05:52:40 -04:00
zhangguanzhang
e386ca5db7 fix closed the remote connection on pull causes service panic
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-10-03 11:38:38 +08:00
Daniel J Walsh
d0f3c17912 Add SELinux support for pods
All containers within a Pod need to run with the same SELinux
label, unless overwritten by the user.

Also added a bunch of SELinux tests to make sure selinux labels
are correct on namespaces.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-10-02 15:14:18 -04:00
OpenShift Merge Robot
d4e97b35c2 Merge pull request #7901 from vrothberg/fix-compat-images-create
compat: images/create: fix tag parsing
2020-10-02 14:52:38 -04:00
OpenShift Merge Robot
1e162edc8a Merge pull request #7882 from giuseppe/check-for-gids-before-adding-them
libpod: check there are enough gids before adding them
2020-10-02 14:45:27 -04:00
OpenShift Merge Robot
b58980a43c Merge pull request #7887 from vrothberg/fix-7872
image prune: remove all candidates
2020-10-02 11:31:43 -04:00
Valentin Rothberg
6a291942c2 compat: images/create: fix tag parsing
The `tag` parameter of the compat `images/create` endpoint can be both,
a tag and a digest.  Fix parsing of the parameter to detect digests and
use the appropriate `@` separator.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-10-02 17:24:37 +02:00
OpenShift Merge Robot
08755e59b6 Merge pull request #7456 from giuseppe/modprobe-fuse
spec: modprobe fuse with --device .*/fuse
2020-10-02 07:53:37 -04:00
OpenShift Merge Robot
ff3aa2b3d1 Merge pull request #7867 from vrothberg/fix-7837
remote: fix name and ID collisions of containers and pods
2020-10-02 07:29:46 -04:00
OpenShift Merge Robot
00c7b493a0 Merge pull request #7815 from jwhonce/wip/creds_remote
Add X-Registry-Config support
2020-10-02 06:13:25 -04:00
Valentin Rothberg
6c151b98b6 image prune: remove all candidates
Make sure to remove images until there's nothing left to prune.
A single iteration may not be sufficient.

Fixes: #7872
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-10-02 11:04:05 +02:00
Giuseppe Scrivano
4f7da3274b spec: open fuse with --device .*/fuse
If the container uses the /dev/fuse device, attempt to load the fuse
kernel module first so that nested containers can use it.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1872240

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-10-02 10:12:58 +02:00
Giuseppe Scrivano
07546cca18 rootless: use sync.Once for GetAvailableGids()
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-10-02 09:05:34 +02:00
Giuseppe Scrivano
baef6eff36 rootless: move GetAvailableGids to the rootless pkg
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-10-02 08:53:54 +02:00
baude
f0c7116848 fix compat api privileged and entrypoint code
when adding /dev to a privileged container using the compatibility API, we need to make sure we dont pass on devices that are simply symlinks.  this was already being done by specgen but not on the compat. side.

the entrypoint code that was recently rewritten for the compatibility layer was also failing due to the odd inputs that docker is willing to accept in its json, specifically [] vs "".  in the case of the latter, this was being made into a []string with a len of one but no content.  this would then be used to prefix the command to run in the container and would fail.  For example " ls" vs "ls".

Signed-off-by: baude <bbaude@redhat.com>
2020-10-01 15:18:11 -05:00
OpenShift Merge Robot
5d22eb02f9 Merge pull request #7735 from QiWang19/manifest-inspect
fix allowing inspect manifest of non-local image
2020-10-01 13:32:02 -04:00
Valentin Rothberg
04dddbbf7f remote: fix name and ID collisions of containers and pods
Fix the look up of containers and pods in the remote client.  User input
can refer to both, names or IDs of containers and pods, so there is a
fair chance of collisions (e.g., "c1" name with a "c1...." ID).

Those collisions are well handled (and battle tested) in the local
client which is directly using the libpod backend.  Hence, the remote
client should not attempt to introduce its own logic to prevent bugs and
divergence between the local and the remote clients.  To prevent
collisions such as in #7837, do a container/pod inspect on the
user-provided input to find the corresponding ID and eventually do full
ID comparisons to avoid potential collisions with names.

Note that this has a cost that I am not entirely happy with.  Looking at
issue #7837, the collisions are happening when removing the two
containers.  Remote container removal is now very chatty with the server
as it first queries for all containers, then iterates over the provided
names or IDs and does a remote inspect to figure out the IDs and find a
matching container object.  However, remote removal could just pass the
names and IDs directly to the batch removal endpoint.  Querying for all
containers could be prevented if the batch removal endpoint would remove
all if the slice is empty.

In other words, the bug is fixed but there's room for performance
improvements.

Fixes: #7837
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-10-01 18:30:20 +02:00
OpenShift Merge Robot
746bb2d678 Merge pull request #7864 from rhatdan/volume
Volume prune should not pass down the force flag
2020-10-01 12:04:52 -04:00
OpenShift Merge Robot
3948cb76e2 Merge pull request #7851 from zhangguanzhang/fix-apiv2-ctr-workdir-and-env
[apiv2] don't ignore the ENV and WorkDir from the image
2020-10-01 10:00:15 -04:00
Daniel J Walsh
686ea56480 Volume prune should not pass down the force flag
podman volume prune -f

Should just tell the prune command to not prompt for confirmation.
It should not be passing the prune flag into the API.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-10-01 06:32:57 -04:00
OpenShift Merge Robot
c0dac6c5f3 Merge pull request #7858 from jwhonce/wip/http_proxy
Support --http-proxy for remote builds
2020-10-01 05:48:17 -04:00
OpenShift Merge Robot
c70f5fb19b Merge pull request #7823 from vrothberg/fix-6381
image look up: consult registries.conf
2020-10-01 03:31:06 -04:00
Jhon Honce
fad55e4730 Support --http-proxy for remote builds
* Fix misspelled parameter
 * add http-proxy support for builds

http_proxy must be set in the podman.service unit file, for example
Environment=http_proxy=<value>

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-30 15:56:58 -07:00
zhangguanzhang
cde367c1c0 fix: The container created by APIV2 has an incorrect Env and WorkDir
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-10-01 05:13:01 +08:00
OpenShift Merge Robot
1d7cb7f477 Merge pull request #7798 from QiWang19/run-manifest
Use local image if input image is a manifest list
2020-09-30 18:38:07 +00:00
Qi Wang
7ac8000cc1 fix allowing inspect manifest of non-local image
Add support of `podman manifest inspect` returning manifest list of non-local manifest.
Close #https://github.com/containers/podman/issues/7726

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-09-30 14:12:32 -04:00
OpenShift Merge Robot
f86e01ab10 Merge pull request #7820 from giuseppe/fix-capabilities-not-root
capabilities: always set ambient and inheritable
2020-09-30 17:22:54 +00:00
Qi Wang
d24ec64887 Use local image if input image is a manifest list
If run&create image returns error: image contains manifest list, not a runnable image, find the local image that has digest matching the digest from the list and use the image from local storage for the command.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-09-30 10:38:02 -04:00
OpenShift Merge Robot
fb43e8c6a4 Merge pull request #7833 from jwhonce/issues/7826
Refactor IdleTracker to handle StateIdle transitions
2020-09-30 14:37:31 +00:00
Valentin Rothberg
e930340e73 pkg/registries: add a retiring note
The registries package should be retired.  It was introduced as an
easier to use wrapper around c/image `sysregistries` which has been
replaced by `sysregistriesv2` a long while ago.

Users should either use the `sysregistriesv2` package directly or, even
better, we cache the config in libpod's image runtime to prevent
redundant (and ~expensive) parsing of the registries.conf files.

For now, just add a note in hope we'll not forgert about it when we find
time in the future.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-30 16:30:41 +02:00
Giuseppe Scrivano
703381b4a2 capabilities: always set ambient and inheritable
change capabilities handling to reflect what docker does.

Bounding: set to caplist
Inheritable: set to caplist
Effective: if uid != 0 then clear; else set to caplist
Permitted: if uid != 0 then clear; else set to caplist
Ambient: clear

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-09-30 15:14:07 +02:00
OpenShift Merge Robot
4d57313449 Merge pull request #7840 from vrothberg/remote-untag
fix remote untag
2020-09-30 12:58:08 +00:00
OpenShift Merge Robot
6fd0e9bb73 Merge pull request #7831 from rhatdan/env
We already set container=podman environment variable
2020-09-30 12:24:32 +00:00
Valentin Rothberg
1a3e409412 fix remote untag
Fix the remote client to untag all tags of the specified image.
Instead of querying the image on the client side, support the
case where both, repo and tag, are empty and remove all tags.

Reuse the ABI implementation where possible.  In retrospective,
the libpod untag endpoint should support a slice of strings to
batch remove tags rather than reaching out for each tag individually.

Enable the skipped test.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-30 11:57:31 +02:00
Daniel J Walsh
22474095ab Fix handling of remove of bogus volumes, networks and Pods
In podman containers rm and podman images rm, the commands
exit with error code 1 if the object does not exists.

This PR implements similar functionality to volumes, networks, and Pods.

Similarly if volumes or Networks are in use by other containers, and return
exit code 2.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-09-29 15:52:43 -04:00
Daniel J Walsh
ac23ff55b8 We already set container=podman environment variable
Only need to set container, no need for containers

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-09-29 15:26:45 -04:00