mirror of
https://github.com/podman-container-tools/podman.git
synced 2026-09-05 23:27:48 +00:00
Traditionally, the path resolution for containers has been resolved on the *host*; relative to the container's mount point or relative to specified bind mounts or volumes. While this works nicely for non-running containers, it poses a problem for running ones. In that case, certain kinds of mounts (e.g., tmpfs) will not resolve correctly. A tmpfs is held in memory and hence cannot be resolved relatively to the container's mount point. A copy operation will succeed but the data will not show up inside the container. To support these kinds of mounts, we need to join the *running* container's mount namespace (and PID namespace) when copying. Note that this change implies moving the copy and stat logic into `libpod` since we need to keep the container locked to avoid race conditions. The immediate benefit is that all logic is now inside `libpod`; the code isn't scattered anymore. Further note that Docker does not support copying to tmpfs mounts. Tests have been extended to cover *both* path resolutions for running and created containers. New tests have been added to exercise the tmpfs-mount case. For the record: Some tests could be improved by using `start -a` instead of a start-exec sequence. Unfortunately, `start -a` is flaky in the CI which forced me to use the more expensive start-exec option. Signed-off-by: Valentin Rothberg <rothberg@redhat.com> |
||
|---|---|---|
| .. | ||
| attach.go | ||
| checkpoint.go | ||
| cleanup.go | ||
| commit.go | ||
| container.go | ||
| cp.go | ||
| create.go | ||
| diff.go | ||
| exec.go | ||
| exists.go | ||
| export.go | ||
| init.go | ||
| inspect.go | ||
| kill.go | ||
| list.go | ||
| logs.go | ||
| mount.go | ||
| pause.go | ||
| port.go | ||
| prune.go | ||
| ps.go | ||
| rename.go | ||
| restart.go | ||
| restore.go | ||
| rm.go | ||
| run.go | ||
| runlabel.go | ||
| start.go | ||
| stats.go | ||
| stop.go | ||
| top.go | ||
| unmount.go | ||
| unpause.go | ||
| utils.go | ||
| wait.go | ||