命令行界面的文档说明如下:
要将容器的端口绑定到主机系统的特定接口,请使用docker run命令的-p参数:
一般语法
docker run -p [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] <image>如果未提供主机接口,则端口将绑定到主机的所有可用接口(也称为INADDR_ANY或0.0.0.0).如果未提供主机端口,则会动态分配一个端口.TCP端口的可能选项组合如下
所以我想知道我是如何使用REST API做同样的事情的?
随着POST /container/create我尝试:
"PortSpecs": ["5432:5432"] 这似乎暴露了端口,但没有将其绑定到主机接口."PortSpecs": ["5432"] 给我与前一个相同的结果. "PortSpecs": ["0.0.0.0:5432:5432"]这会返回Invalid hostPort: 0.0.0.0有意义的错误.当我做sudo docker ps容器显示5432/tcp应该是什么时0.0.0.0:5432/tcp.
检查容器给我以下内容:
"NetworkSettings": {
"IPAddress": "172.17.0.25",
"IPPrefixLen": 16,
"Gateway": "172.17.42.1",
"Bridge": "docker0",
"PortMapping": null,
"Ports": {
"5432/tcp": null
}
}
Run Code Online (Sandbox Code Playgroud)
可以在这里找到全面检查.
Pic*_*els 28
这是一个没有记录的功能.我在邮件列表上找到了答案:
创建容器时,您必须设置ExposedPorts:
"ExposedPorts": { "22/tcp": {} }
Run Code Online (Sandbox Code Playgroud)
启动容器时,您需要设置PortBindings:
"PortBindings": { "22/tcp": [{ "HostPort": "11022" }] }
Run Code Online (Sandbox Code Playgroud)
关于这一点,github上已经存在一个问题.
Jam*_*mas 11
在HostConfig中使用PortBindings启动容器在v1.10中已弃用,在v1.12中已删除.
现在,在创建容器时,应包括这两个配置参数.
POST /containers/create
{
"Image": image_id,
"ExposedPorts": {
"22/tcp": {}
},
"HostConfig": {
"PortBindings": { "22/tcp": [{ "HostPort": "" }] }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12182 次 |
| 最近记录: |