我不确定我是否误解了这里的某些内容,但似乎只能通过从映像创建新容器来设置端口映射。是否有办法将端口映射分配到现有的Docker容器?


当前回答

我对这个问题也很感兴趣。

正如@Thasmo提到的,端口转发只能通过docker run(和docker create)命令指定。 其他命令,docker start没有-p选项,docker port只显示当前转发。

要添加端口转发,我总是遵循以下步骤,

停止运行容器 Docker停止test01 提交容器 Docker提交test01 test02 注意:上面的test02是我从test01容器构建的一个新映像。 从已提交的映像重新运行 Docker运行-p 8080:8080 -td test02

其中第一个8080是本地端口,第二个8080是集装箱端口。

其他回答

集装箱岸吊法

如果有人正在使用portainer,我发现这个解决方案是“Gui友好和安全的”

去Portainer的集装箱 停止容器 选择“复制/编辑” 添加所需的端口并进行部署。 当被问到是替换还是取消时,选择替换。 享受生活

我对这个问题也很感兴趣。

正如@Thasmo提到的,端口转发只能通过docker run(和docker create)命令指定。 其他命令,docker start没有-p选项,docker port只显示当前转发。

要添加端口转发,我总是遵循以下步骤,

停止运行容器 Docker停止test01 提交容器 Docker提交test01 test02 注意:上面的test02是我从test01容器构建的一个新映像。 从已提交的映像重新运行 Docker运行-p 8080:8080 -td test02

其中第一个8080是本地端口,第二个8080是集装箱端口。

可以通过直接编辑hostconfig修改端口映射。Json文件 /var/lib/docker/containers/ hash_of_the_container / hostconfig。/var/snap/docker/common/var-lib-docker/containers/[hash_of_the_container]/hostconfig. Json或/var/snap/docker/common/var-lib-docker/containers/[hash_of_the_container]/hostconfig. Json。如果你安装Docker作为一个snap. json,我相信。

你可以通过docker inspect <container_name>命令来确定[hash_of_the_container],“Id”字段的值就是哈希值。

停止容器(docker Stop <container_name>)。 停止docker服务(根据Tacsiazuma的评论) 修改文件。 重新启动docker引擎(刷新/清除配置缓存)。 启动容器(docker Start <container_name>)。

所以你不需要用这种方法创建一个图像。您还可以在这里更改重启标志。

附注:您可以访问https://docs.docker.com/engine/admin/了解如何根据您的主机正确重新启动docker引擎。我使用sudo systemctl restart docker重新启动在Ubuntu 16.04上运行的docker引擎。

如何将端口映射分配到现有的Docker容器?

这很简单。有两件事,一个是本地服务器端口,如800,8080等在你的机器上,第二个是你的容器端口,你想映射。Docker端口映射

 docker run -p 8080:8080 <Image ID> 

要获得图像Id,您可以使用

docker ps

在Fujimoto Youichi的例子中,test01是一个容器,而test02是一个图像。

在运行docker之前,你可以删除原来的容器,然后重新给容器分配相同的名称:

$ docker stop container01
$ docker commit container01 image01
$ docker rm container01
$ docker run -d -P --name container01 image01

(使用-P将端口暴露给随机端口,而不是手动分配)。