3

私はdockerをいじり、スクリプトを介してコンテナを開始しましたが、docker apiを試してみたかったので、dockerodeを試すことにしました。

現在、作成されたコンテナーにホスト マシンの IP をバインドできません。次のコマンドを http 投稿を介して json 形式で Docker API に送信するにはどうすればよいですか?

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

docker api のドキュメントを何度か読みましたが、json の投稿で実際の IP を渡す方法が見つかりません。

4

1 に答える 1

2

それで、私が質問を理解すれば、あなたはこのようなものを探しています....

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 ウェブサーバーから呼び出すモジュールです。メイン関数は、次の方法で別の .js ファイルから呼び出されます。

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

ご覧のとおり、port quiet を数回参照しています。本当にそうする必要があるかどうかはわかりませんが、うまくいきます。まず、イメージからコンテナを作成してから起動します。最後に、コンテナーを検査して、呼び出し元に詳細を返します。

これが役立つことを願っています。

于 2016-03-11T17:32:09.107 に答える