Docker等效的远程API命令是什么,用于将主机端口80映射到容器端口80?

4

我想使用Docker的Remote API启动容器。我已经可以启动容器,但无法将容器的端口映射到主机的端口。

我需要远程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": {}
    }
}

感谢您的预先准备。
2个回答

5
这对我有用:
容器创建:
ExposedPorts: {"80/tcp": {}, "22/tcp" : {}}
容器启动:
PortBindings: {"80/tcp": [{ "HostPort": "80" }],"22/tcp": [{ "HostPort": "22" }] }
如果您知道如何设置环境变量,我刚刚发送了我的问题 :-)

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是主机监听远程请求的位置。

PortBindingsExposedPorts在不同的部分中。您可能需要参考更多有关Docker远程API v1.22的详细信息。

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接