automation-tests/cmd/podman
Matthew Heon 1e3e99f2fe Move the HostConfig portion of Inspect inside libpod
When we first began writing Podman, we ran into a major issue
when implementing Inspect. Libpod deliberately does not tie its
internal data structures to Docker, and stores most information
about containers encoded within the OCI spec. However, Podman
must present a CLI compatible with Docker, which means it must
expose all the information in 'docker inspect' - most of which is
not contained in the OCI spec or libpod's Config struct.

Our solution at the time was the create artifact. We JSON'd the
complete CreateConfig (a parsed form of the CLI arguments to
'podman run') and stored it with the container, restoring it when
we needed to run commands that required the extra info.

Over the past month, I've been looking more at Inspect, and
refactored large portions of it into Libpod - generating them
from what we know about the OCI config and libpod's (now much
expanded, versus previously) container configuration. This path
comes close to completing the process, moving the last part of
inspect into libpod and removing the need for the create
artifact.

This improves libpod's compatability with non-Podman containers.
We no longer require an arbitrarily-formatted JSON blob to be
present to run inspect.

Fixes: #3500

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-07-17 16:48:38 -04:00
..
cliconfig Add --latest, -l to 'podman diff' 2019-06-21 13:37:04 +02:00
imagefilters imagefilter dangling handling corrected 2019-04-11 09:18:31 +09:00
libpodruntime configure runtime without store 2019-07-01 14:15:44 -05:00
remoteclientconfig Fix crash for when remote host IP or Username is not set in conf file & conf file exists. 2019-06-25 16:10:42 -04:00
shared Move the HostConfig portion of Inspect inside libpod 2019-07-17 16:48:38 -04:00
varlink API.md: fix few typos 2019-06-15 23:07:46 +02:00
README.md Update Podman-specific readme 2018-05-11 15:32:27 +00:00
attach.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
build.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
checkpoint.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
cleanup.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
commands.go Remove umount command from remote client. 2019-06-27 16:52:56 -04:00
commands_remoteclient.go (minor): fix misspelled 'Healthcheck' 2019-04-10 09:43:56 -06:00
commit.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
common.go Make the healthcheck flags compatible with Docker CLI 2019-07-16 06:15:28 +02:00
common_libpod.go libpod removal from main (phase 2) 2019-06-27 07:56:24 -05:00
common_test.go Revert "Switch to golangci-lint" 2019-04-05 20:09:45 -05:00
container.go podman remote-client commit 2019-05-30 10:14:23 -05:00
containers_prune.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
cp.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
create.go Make the healthcheck flags compatible with Docker CLI 2019-07-16 06:15:28 +02:00
diff.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
errors.go Support podman-remote stop container(s) 2019-03-02 08:57:20 -07:00
errors_remote.go Add an InvalidState varlink error for Init 2019-05-02 13:13:32 -04:00
events.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
exec.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
exists.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
export.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
generate.go Generate systemd unit files for containers 2019-05-02 14:35:53 -05:00
generate_kube.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
generate_systemd.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
healthcheck.go (minor): fix misspelled 'Healthcheck' 2019-04-10 09:43:56 -06:00
healthcheck_run.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
history.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
image.go Merge pull request #1642 from kunalkushwaha/image-tree 2019-03-14 09:53:49 -07:00
images.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
images_prune.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
import.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
info.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
init.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
inspect.go Move the HostConfig portion of Inspect inside libpod 2019-07-17 16:48:38 -04:00
kill.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
load.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
login.go podman: create and run honors auth file location 2019-07-09 14:21:15 +02:00
logout.go podman: create and run honors auth file location 2019-07-09 14:21:15 +02:00
logs.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
main.go Fix podman-remote usage message to display `podman-remote` instead of `podman` 2019-07-08 14:25:49 -04:00
main_local.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
main_remote.go Add remote client logging to a file 2019-06-17 08:01:39 -07:00
mount.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pause.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
platform_linux.go rootless: skip check fo /etc/containers/registries.conf 2019-05-30 09:01:55 +02:00
platform_unsupported.go Add darwin support for remote-client 2019-01-11 11:30:28 -06:00
play.go More cleanup for failures on missing commands. 2019-03-08 07:06:50 -05:00
play_kube.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod.go Add podman pod prune 2019-04-16 11:23:18 -04:00
pod_create.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_inspect.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_kill.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_pause.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_ps.go golangci-lint pass number 2 2019-07-11 09:13:06 -05:00
pod_restart.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_rm.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_start.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_stats.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_stop.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_top.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pod_unpause.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
pods_prune.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
port.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
ps.go golangci-lint pass number 2 2019-07-11 09:13:06 -05:00
pull.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
push.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
refresh.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
restart.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
restore.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
rm.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
rmi.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
run.go Make the healthcheck flags compatible with Docker CLI 2019-07-16 06:15:28 +02:00
runlabel.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
save.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
search.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
sign.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
start.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
stats.go golangci-lint pass number 2 2019-07-11 09:13:06 -05:00
stop.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
system.go podman-remote prune containers 2019-04-26 10:15:09 -05:00
system_df.go Fix spelling mistakes in man pages and other docs 2019-07-11 17:56:54 -04:00
system_migrate.go runtime: pass down the context 2019-04-26 22:23:49 +02:00
system_prune.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
system_renumber.go runtime: pass down the context 2019-04-26 22:23:49 +02:00
tag.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
top.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
tree.go golangci-lint pass number 2 2019-07-11 09:13:06 -05:00
trust.go More cleanup for failures on missing commands. 2019-03-08 07:06:50 -05:00
trust_set_show.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
umount.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
unpause.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
unshare.go libpod removal from main (phase 2) 2019-06-27 07:56:24 -05:00
utils.go Make the healthcheck flags compatible with Docker CLI 2019-07-16 06:15:28 +02:00
varlink.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
varlink_dummy.go Only build varlink when buildtag is available 2019-02-12 15:53:19 -06:00
version.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
volume.go More cleanup for failures on missing commands. 2019-03-08 07:06:50 -05:00
volume_create.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
volume_inspect.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
volume_ls.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
volume_prune.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
volume_rm.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00
wait.go first pass of corrections for golangci-lint 2019-07-10 15:52:17 -05:00

README.md

podman - Simple debugging tool for pods and images

podman is a daemonless container runtime for managing containers, pods, and container images. It is intended as a counterpart to CRI-O, to provide low-level debugging not available through the CRI interface used by Kubernetes. It can also act as a container runtime independent of CRI-O, creating and managing its own set of containers.

Use cases

  1. Create containers
  2. Start, stop, signal, attach to, and inspect existing containers
  3. Run new commands in existing containers
  4. Push and pull images
  5. List and inspect existing images
  6. Create new images by committing changes within a container
  7. Create pods
  8. Start, stop, signal, and inspect existing pods
  9. Populate pods with containers