Docker更改端口绑定

Tho*_*mel 9 port docker

我正在old_container使用exposed端口80 运行容器(让我们称之为)并使用-p标志将端口绑定到端口80上的主机接口.

sudo docker run -p 80:80 -i -t <old-image-id>

在我的生产环境中,我想现在切换old_container到a new_container.所以我想关闭old_container并启动new_container.

首先,我必须做一些手动更改new_container.所以我在没有-p标志的情况下运行它,因为在完成此更改之前我无法将其绑定到端口80.

sudo docker run -i -t < new-image-id >
#now I m doing my manual changes
Run Code Online (Sandbox Code Playgroud)

当我完成我的更改后,我退出了new_container.我的计划现在是停止old_container并绑定new_container到端口80.但是该[start][1]命令不提供端口绑定的可能性.

所以提出我的问题:我正在寻找为已停止的容器设置端口绑定,最好没有创建提交映像new_container并将此映像作为另一个新容器运行的解决方法.

JSO*_*C11 5

  1. 对新容器进行更改,然后停止旧容器和新容器。
docker stop old_container new_container
Run Code Online (Sandbox Code Playgroud)
  1. 通过commit命令从容器的更改创建一个新映像,如下所示:
docker commit new_container new_container_01
Run Code Online (Sandbox Code Playgroud)
  1. 运行新提交的镜像:
docker run -p 80:80 -i -t new_container_01
Run Code Online (Sandbox Code Playgroud)
  1. 使用rm (remove)命令清理旧的、未使用的容器:
docker rm old_container new_container
Run Code Online (Sandbox Code Playgroud)


pho*_*nix 0

你的用例听起来不错,在 PROD 上看到 docker 非常有趣。您要进行什么手动更改?虽然,我认为你的问题的解决方案可能是

1)附加和分离容器(稍后如何附加到正在运行的 Docker 容器?

docker attach container_name ctrl p ctrl q

2)运行docker exec命令

docker run -it -p 80:80 --name=old_container <old-image-id>

上面的命令将创建一个名为“old_container”的容器

docker exec -d <old_container> mkdir foo

上面的命令将在运行容器的主文件夹中创建 foo 目录。我想你可以将手动更改作为脚本来代替“mkdir foo”(我从未尝试过)

PS:docker exec 仅在 docker 1.3 版本中可用