You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker SDK for Python启动容器后如何获取分配的宿主端口?

解决方案

你可以通过容器对象的attrs属性读取网络配置中的端口映射信息,注意要先调用reload()方法刷新容器元数据,避免刚启动时数据未同步导致拿不到端口。

完整示例代码如下:

import docker
client = docker.from_env()

container = client.containers.run(
  "bfirsh/reticulate-splines",
  ports={6379 : None}, # SDK自动选择宿主端口
  detach=True
)

# 刷新容器最新状态
container.reload()

# 读取6379/tcp端口对应的宿主端口
mapped_port = container.attrs["NetworkSettings"]["Ports"]["6379/tcp"][0]["HostPort"]
print(f"实际分配的宿主端口为:{mapped_port}")

注意事项

  • 端口映射的key需要携带协议后缀,默认tcp协议对应[端口号]/tcp,如果是udp协议则对应[端口号]/udp
  • 每个容器端口可能对应多个宿主端口绑定,因此返回值为列表,常规场景下取第一个元素的HostPort字段即可
  • 如果你不清楚容器暴露的端口列表,可以直接打印container.attrs["NetworkSettings"]["Ports"]查看完整的端口映射结构

内容的提问来源于stack exchange,提问作者Lorah Attkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:18:02