假设我使用以下命令启动一个 docker 容器
docker run -d --name my-container -p 1234 my-image
并运行
docker ps
显示该图像的端口绑定(bind)是...80/tcp, 443 /tcp. 0.0.0.0:32768->1234/tcp
有什么方法可以使用
docker inspect
获取分配给映射到 1234
的端口(在这种情况下,32768)?类似于使用以下命令解析和获取 IP 地址...
IP=$(docker inspect -f "{{ .Networksettings.IPAddress }} my-container)
我希望能够做类似于以下的事情
ASSIGNED_PORT=$(docker inspect -f "{{...}} my-container)
我不确定是否有办法通过 Docker 做到这一点,但我想有一些命令行魔法(grep、sed 等)可以让我做这样的事情。
当我运行
docker inspect my-container
看看NetworkSettings
...我看到以下内容"NetworkSettings": {
...
...
...
"Ports": {
"1234/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32768"
}
],
"443/tcp": null,
"80/tcp": null
},
...
...
},
在这种情况下,我希望它找到 HostPort 而无需我告诉它任何关于端口 1234 的信息(它应该忽略它下面的 443 和 80)并返回
32768
.
最佳答案
执行命令:docker inspect --format="{{json .Config.ExposedPorts }}" src_python_1
结果:{"8000/tcp":{}}
证明(使用 docker ps
):
e5e917b59e15 src_python:latest "start-server" 22 hours ago Up 22 hours 0.0.0.0:8000->8000/tcp src_python_1
关于sed - 如何从检查 docker 容器中获取暴露的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31543356/