I'd like to change the published ports on a live container for example
docker run -p 80:80 --name nginx_live nginx
And then later on, change that to another port, example -p 8080:80
I'd like to change the published ports on a live container for example
docker run -p 80:80 --name nginx_live nginx
And then later on, change that to another port, example -p 8080:80
Docker does not have a mechanism for changing the published ports of a container once it has started. When you publish a port, two things happen:
iptables
rules in the nat
table that redirect traffic to the "public" port to the container.While you could in theory manually update the firewall rules to make the service available at a new port, you would not be able to unbind the Docker proxy and would thus be unable to start any new services using that "public" port.
Your best course of action is simply to delete the container and redeploy it, or rely on some sort of front-end proxy to handle the redirect rather than using Docker's port publishing mechanism.
That's not a Docker feature.
But it's easy to add another layer of indirection: expose one container-port on your host and then run an instance of nginx or a firewall FORWARD rule that maps whatever local ports you want onto that docker-shared port.