1

我尝试在 Windows 上使用 nodejs 应用程序在 docker 容器中安装一个卷。当我在 cmd 上尝试此命令时:

docker run -it -v C:\Users\User\data:/stuff:rw ubuntu bash

它可以工作,并且容器包含该卷。但是,如果我尝试使用 nodejs(dockerode 模块)来做到这一点,它就不起作用。我的代码:

var dockerode = require('dockerode');
var docker = new dockerode();
var stream = require('stream');

docker.createContainer({
    Image: 'ubuntu',
    Cmd: ['ls', 'stuff'],
    'Volumes': {
      '/stuff': {}
    },
    'Binds': ['C:\Users\User\data:/stuff:rw']
  }, function(err, container) {
    container.attach({
      stream: true,
      stdout: true,
      stderr: true,
      tty: true,
      'Binds': ['C:\Users\User\data:/stuff:rw']
    }, function(err, stream) {
      stream.pipe(process.stdout);

      container.start({
        'Binds': ['C:\Users\User\data:/stuff:rw']
      }, function(err, data) {
        console.log(data);
      });
    });
  });

问题是它什么也没打印(东西目录是空的)。当我在 mac 上使用相同的代码时,它工作正常。我该如何解决?谢谢。

4

1 回答 1

0

您需要转义路径分隔符 - 如果没有正确的转义,绑定将被解析为C:UsersUserdata:/stuff:rw\U映射到 justU等)。

所以而不是

'Binds': ['C:\Users\User\data:/stuff:rw']

利用:

'Binds': ['C:\\Users\\User\\data:/stuff:rw']
于 2017-04-30T07:38:45.643 回答