summaryrefslogtreecommitdiff
path: root/pkg/checkpoint
diff options
context:
space:
mode:
authorAdrian Reber <areber@redhat.com>2021-05-18 11:31:30 +0000
committerAdrian Reber <adrian@lisas.de>2021-06-04 13:29:02 +0200
commit1ac9198d75cb94bfdc61beb0c74cb7f90504da60 (patch)
tree16d783cedbcb85c35c3790dd68a0d1717dfde5fd /pkg/checkpoint
parentf7233a2da7fe79075ade9f34adc702c5d2eb76bc (diff)
downloadpodman-1ac9198d75cb94bfdc61beb0c74cb7f90504da60.tar.gz
podman-1ac9198d75cb94bfdc61beb0c74cb7f90504da60.tar.bz2
podman-1ac9198d75cb94bfdc61beb0c74cb7f90504da60.zip
Allow changing of port forward rules on restore
Restored containers, until now, had the same port mappings as the original started container. This commit adds the parameter '--publish' to 'podman container restore' with the same semantic as during create/run. With this change it is possible to create a copy from a container with a '--publish' rule and replace the original '--publish' setting with a new one. # podman run -p 2345:8080 container # podman container checkpoint -l --export=dump.tar # podman container restore -p 5432:8080 --import=dump.tar The restored container will now listen on localhost:5432 instead of localhost:2345 as the original created container. Signed-off-by: Adrian Reber <areber@redhat.com>
Diffstat (limited to 'pkg/checkpoint')
-rw-r--r--pkg/checkpoint/checkpoint_restore.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/pkg/checkpoint/checkpoint_restore.go b/pkg/checkpoint/checkpoint_restore.go
index 7a8f71c66..0d45cab5f 100644
--- a/pkg/checkpoint/checkpoint_restore.go
+++ b/pkg/checkpoint/checkpoint_restore.go
@@ -11,6 +11,7 @@ import (
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/pkg/domain/entities"
"github.com/containers/podman/v3/pkg/errorhandling"
+ "github.com/containers/podman/v3/pkg/specgen/generate"
"github.com/containers/storage/pkg/archive"
spec "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
@@ -95,6 +96,14 @@ func CRImportCheckpoint(ctx context.Context, runtime *libpod.Runtime, restoreOpt
newName = true
}
+ if len(restoreOptions.PublishPorts) > 0 {
+ ports, _, _, err := generate.ParsePortMapping(restoreOptions.PublishPorts)
+ if err != nil {
+ return nil, err
+ }
+ ctrConfig.PortMappings = ports
+ }
+
pullOptions := &libimage.PullOptions{}
pullOptions.Writer = os.Stderr
if _, err := runtime.LibimageRuntime().Pull(ctx, ctrConfig.RootfsImageName, config.PullPolicyMissing, pullOptions); err != nil {