docker - 如何将端口公开给主机的临时端口并将其绑定到 localhost
问题描述
Docker 撰写问题(任何版本都可以)
我需要将容器中的端口 60000 暴露给主机的临时(随机)端口,并将其仅绑定到 localhost。
句法
ports:
- 60000
导致 0.0.0.0:32XXX 端口暴露。
语法- "127.0.0.1:YYYY:60000"
要求我设置静态主机端口 (YYYY)
我知道我可以将 docker daemon 绑定为仅在 localhost 上侦听,但这对我来说真的不起作用,因为我需要另一个容器来侦听 0.0.0.0
解决方案
如果您显示的语法不起作用,那么 Docker Compose 3.7 就无法做到这一点(但它可能是一个相当简单的 GitHub 拉取请求来添加它)。(另请注意,此语法记录在文档docker run
中;这只是 Compose 中的一个解析问题。)
最好的解决方法可能是自己选择一个“公共”端口。如果您正在尝试调整围绕构建的工作流程,docker run -p 127.0.0.1::60000
甚至docker run -P
这将更加棘手。
Docker Compose 的实际源代码位于 GitHubdocker/compose
存储库中。这包括文件的配置模式,docker-compose.yml
以及ServicePort.parse
处理ports:
. 似乎parse
字符串的方法不支持丢失的已发布端口(我不确定为什么),并且架构不允许long syntaxexternal_ip:
的选项。
推荐阅读
- c - Format specifies type 'char *' but the argument has type 'int', any mistake I made here?
- tomcat - AWS - 在 EC2 上安装 Tomcat 8
- spring-webflux - 由于我的基本 URI 不固定,在 Webflux 中一次又一次地创建 Webclient 是否明智?
- mongodb - MongoDB不能以fork开头?
- python - matplotlib - xtick 标签位置在第二个轴上不可设置
- git - Github Pull Request:没有什么可比较的
- jquery - Jquery UI Sortable 获取父子位置
- java - 不能通过休眠事务来实际填充表。表是空的
- mongodb - 无法从其他 Docker 容器连接到 MongoDB 容器
- html - HTML5/CSS3:如何在不使用 JavaScript 或 PHP 的情况下防止 LI 项在没有子弹的情况下被推到右侧?