gpt4 book ai didi

docker - 如何通过docker API创建并启动容器

转载 作者:行者123 更新时间:2023-12-02 11:38:08 56 4
gpt4 key购买 nike

我一直在使用 docker 并通过脚本启动容器,但想尝试 docker api 并决定尝试 dockerode。

现在,我无法将主机 IP 绑定(bind)到创建的容器。我如何通过 http post 以 json 格式将以下命令发送到 Docker API?

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

我已经阅读了几次 docker api 文档,但找不到在 json post 中传递实际 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 服务器调用的模块。 main 函数通过以下方式从另一个 .js 文件调用:

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

如您所见,我多次引用了安静端口。不确定我是否真的需要这样做,但它确实有效。首先,我从图像创建容器,然后启动它。最后,我检查容器以将详细信息返回给调用者。

我希望这会有所帮助。

关于docker - 如何通过docker API创建并启动容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33918521/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com