<p>Based on <a href="https://stackoverflow.com/questions/59920413/podman-add-ports-to-expose-to-running-pod">podman-add-ports-to-expose-to-running-pod</a>
as quote From <a href="https://stackoverflow.com/a/60143446/4870357">Dominic P</a>:</p>
<blockquote>
<p>once the pod is created these attributes are assigned to the “infra”
container and cannot be changed. For example, if you create a pod and
then later decide you want to add a container that binds new ports,
Podman will not be able to do this. You would need to recreate the pod
with the additional port bindings before adding the new container.</p>
</blockquote>
<p>I know it's not supported to add new port for running pod</p>
<p>So, what is your suggestion to recreate (backup exist containers on pod) then create new pod and add the new port and restore the containers?</p>

Zaman
<p>You could generate a Kubernetes pod manifest from your running pod using <code>podman generate kube &lt;podname&gt;</code>, edit the resulting file, and then re-create the pod with <code>podman kube play &lt;manifest&gt;,yaml</code>.</p>
<p>For example:</p>
<p>I create a pod and spin up a webserver...</p>
<pre><code>podman pod create example-pod
podman run -d --name web --pod example-pod alpinelinux/darkhttpd
</code></pre>
<p>...only to realize that I forgot to publish port 8080 to the host. So I save the configuration and delete the pod:</p>
<pre><code>podman generate kube example-pod &gt; example-pod.yaml
podman pod rm -f example-pod
</code></pre>
<p>Edit the manifest to add the port configuration:</p>
<pre><code>...
spec:
  containers:
  - image: docker.io/alpinelinux/darkhttpd:latest
    name: web
    ports:
      - containerPort: 8080
        hostPort: 8080
...
</code></pre>
<p>And then re-create the pod:</p>
<pre><code>podman kube play example-pod.yaml
</code></pre>
