【问题标题】:When I specify ports in a docker-compose.yml file, is it TCP or UDP?当我在 docker-compose.yml 文件中指定端口时,它是 TCP 还是 UDP?
【发布时间】:2020-02-04 16:29:35
【问题描述】:

我知道我可以在docker-compose.yml 文件中指定“端口”的协议,但如果没有指定协议,我不确定默认协议是什么。

是 TCP 吗?是UDP吗?两者都有?

我无法在任何地方找到答案(包括在 Docker Compose 文件参考中)。

【问题讨论】:

  • 大概是 TCP。没有测试自己,我只是cribbed it from here。另见this。 Dockerfile (not compose) 文档还指出,TCP 是 EXPOSE 部分和端口参数的默认设置,因此 compose 执行相同操作将是一致的。
  • 默认为 TCP。
  • 如果我想要两个?我是否使用不同的协议两次指定相同的端口?

标签: docker docker-compose


【解决方案1】:

默认使用TCP,你可以看到它启动docker-compose ps

如果你想指定你应该添加 /udp 或 /tcp 之类的:

ports:
  - "80:80/udp"
  - "80:80/tcp"

【讨论】:

  • 如果我两者都想要怎么办?然后我是否为同一端口范围添加两条记录?
  • @MathiasLykkegaardLorenzen 是的,但请注意this currently open issue
  • 为了将来的记录(或链接中断),未解决的问题现已修复 (1.29.2),上述格式应该可以按预期工作。
【解决方案2】:

除了上面对我的评论之外,docker compose long syntax 可以打开 udp 端口​​,还要检查您所需的端口是否已打开并且可用于满足请求。 https://docs.docker.com/compose/compose-file/compose-file-v3/#ports

ports:
 - target: 18123
   published: 18123
   protocol: UDP
   mode: host

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多