如何通过docker API创build和启动一个容器

我一直在玩Docker,并通过脚本启动容器,但想尝试Docker API,并决定尝试dockerode。

现在,我不能设法将主机IP绑定到创build的容器。 我将如何通过一个HTTP发送以下命令到JSON格式的Docker API?

docker run -p my.host.ip.address:80:80 --name www.blaha.com eugeneware/docker-wordpress-nginx 

我已经通过docker api文档多次阅读,无法find一种方式来传递在JSON职位的实际IP。

所以,如果我明白这个问题,你正在寻找这样的东西….

 var Docker = require("dockerode"); var fs = require("fs"); var PropertiesReader = require('properties-reader'); var properties = PropertiesReader('docker.properties'); var dockerHost = properties.get('DOCKER_HOST'); //'http://docker'; var dockerPort = properties.get('DOCKER_PORT') //2375; var dockerImage = properties.get('DOCKER_IMAGE'); console.log("docker host/port = " + dockerHost + ":" + dockerPort); var docker = new Docker({ host: dockerHost, port: dockerPort }); module.exports.CreateContainer = function(user_id, cb) { var name = 'docker-test-' + user_id; console.log("Create container: " + name); docker.createContainer({ Image: dockerImage, name: name, ExposedPorts: {"8080/tcp": {} } }, function (err, container) { if (err) throw (err); container.start({PortBindings: {"8080/tcp": [{ "HostPort": ""}] } }, function (err, data) { if (err) throw (err); console.log("Starting container"); container.inspect(function (err, data) { if (err) throw (err); cb(dockerHost + ":" + data.NetworkSettings.Ports['8080/tcp'][0].HostPort); }); }); }); } 

这是我从nginx web服务器调用的模块。 主函数是通过以下方式从另一个.js文件调用的:

 Docker.CreateContainer(user_id, function(hostInfo) { console.log("Retrieved hostinfo: " + hostInfo); res.json("Docker initalized on server: " + hostInfo); }); 

正如你所看到的,我几次提到安静的港口。 不知道我真的需要这样做,但它的工作原理。 首先,我从图像创build容器,然后启动它。 最后,我检查容器,以将详细信息返回给调用者。

我希望这有帮助。