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

新手上路,请多包涵

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

原文由 thasmo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 523
2 个回答

您可以通过直接编辑 hostconfig.json 文件在 /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 安装为快照。

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

  1. 停止容器( docker stop <container_name> )。
  2. 停止 docker 服务(根据 Tacsiazuma 的评论)
  3. 更改文件。
  4. 重新启动您的 docker 引擎(以刷新/清除配置缓存)。
  5. 启动容器( docker start <container_name> )。

因此,您不需要使用这种方法创建图像。您还可以在此处更改重新启动标志。

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

原文由 holdfenytolvaj 发布,翻译遵循 CC BY-SA 4.0 许可协议

我也对这个问题感兴趣。

正如 @Thasmo 提到的,只能使用 docker run (和 docker create )命令指定端口转发。

其他命令, docker start 没有 -p 选项和 docker port 只显示当前转发。

要添加端口转发,我总是按照以下步骤操作,

  1. 停止 运行容器
   docker stop test01

  1. 提交 容器
   docker commit test01 test02

注意: 以上 test02 是我从 test01 容器构建的新图像。

  1. 从提交的图像重新 运行
   docker run -p 8080:8080 -td test02

其中第一个 8080 是本地端口,第二个 8080 是容器端口。

原文由 Fujimoto Youichi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏