假设我使用以下命令启动一个Docker容器:
在这种情况下,我希望它能够找到 HostPort,而不需要我告诉它任何关于端口1234的信息(它应该忽略下面的443和80),并返回
docker run -d --name my-container -p 1234 my-image
并且运行docker ps
显示该镜像的端口绑定为...
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 -f '{{ .NetworkSettings.Port }}' container_id
(我们将进行优化),或者您可以尝试执行docker inspect --format '{{ (index (index .NetworkSettings.Ports "1234/tcp") 0).HostPort }} container_id'
。 - user2915097NetworkSettings.Port
不起作用(请参见我在docker inspect
输出上面所做的编辑)。 - TheJediCowboydocker port my-container 1234
有帮助吗?请参考http://docs.docker.com/reference/commandline/port/。 - Andy