检索从 Docker SDK for Python 启动的容器的主机端口

Lor*_*ins 2 python docker

当我使用docker SDK for Python启动容器时,我可以指定主机端口,以便NoneSDK 为我选择一个随机可用端口:

import docker
client = docker.from_env()

container = client.containers.run(
  "bfirsh/reticulate-splines",
  ports={6379 : None} # SDK chooses a host port
  detach=True)
Run Code Online (Sandbox Code Playgroud)

问题是我想知道运行命令后SDK选择了哪个主机端口。我怎么做?

pyt*_*ser 5

您需要重新加载容器然后使用container.ports

import docker

client = docker.from_env()

container = client.containers.run(
    "bfirsh/reticulate-splines", ports={6379: None}, detach=True
)

container.reload() # need to reload

print(container.ports)
Run Code Online (Sandbox Code Playgroud)

输出

{'6379/tcp': [{'HostIp': '0.0.0.0', 'HostPort': '53828'}]}
Run Code Online (Sandbox Code Playgroud)

这仅适用于大于 4.0.2 的版本(现在至少已有 4 年历史)

添加此属性的提交