用于-p 80:80的Docker等效远程API命令?

时间:2014-06-08 07:52:28

标签: docker

我尝试使用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": {}
    }
}

提前致谢

2 个答案:

答案 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上详细介绍。

希望这有帮助。