我尝试使用docker的远程API启动docker容器。我能够启动容器但无法公开并将容器的端口映射到主机端口。
我需要远程API JSON来执行以下ssh命令
docker run -i -t --expose 80 -p 80:80 my_image_nodejs nodejs /var/www/server.js
现在我正在使用JSON以下。
{
"Image": "f96f6e304cfcd630ee51af87baf30dfd42cf1f361da873a2f62ce6654d7a4c6b",
"Memory": 0,
"MemorySwap": 0,
"VolumesFrom": "",
"Cmd": [
"nodejs",
"/var/www/server.js",
"-D"
],
"PortBindings": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "80"
}
]
},
"ExposedPorts": {
"80/tcp": {}
}
}
提前致谢
答案 0 :(得分:4)
这对我有用:
容器制作:
ExposedPorts:{" 80 / tcp":{}," 22 / tcp" :{}}
容器启动:
PortBindings:{" 80 / tcp":[{" HostPort":" 80" }," 22 / tcp":[{" HostPort":" 22" }] }
如果您知道如何设置Env,我刚刚发送了我的问题: - )
答案 1 :(得分:1)
我相信您的要求应该如下:
curl -X POST -H "Content-Type: application/json" -d '{
"AttachStdin":false,"AttachStdout":true,"AttachStderr":true,
"ExposedPorts": { "80/tcp": {}},
"Cmd": [
"nodejs","/var/www/server.js","-D"
],
"HostConfig":{
"PortBindings": { "80/tcp": [{ "HostPort": "80" }] }
},
"Image":"my_image_nodejs",
"Tag":"latest"
}' $DOCKER_DAEMON/containers/create
其中 $ DOCKER_DAEMON 是主机侦听远程请求。 PortBindings 和 ExposedPorts 位于不同的部分。您可能想要在Docker远程API v1.22上详细介绍。
希望这有帮助。