如何将容器上的文件夹与主机上的目录同步,以便可以删除容器并使用相同的数据重新创建容器。到目前为止,这是我的代码。

let containerMeta = {
    Image: 'secret/image',
    AttachStdout: true,
    AttachStderr: true,
    Tty: true,
    ExposedPorts: {
      '19132/udp': {},
    },
    HostConfig: {
      PortBindings: {
        '19132/udp': [
          {
            HostPort: SERVER_PORT,
          },
        ],
      },
    },
  };

let container = await docker.createContainer(containerMeta);

我查看了文档,关于这种情况他们并不多。

最佳答案

您可以使用HostConfig的选项Binds:

var Docker = require('dockerode');

var docker = new Docker({
  socketPath: '/var/run/docker.sock'
});

docker.createContainer({
  Image: 'ubuntu',
  Cmd: ['/bin/ls', '/stuff'],
  'Volumes': {
    '/stuff': {}
  },
  'HostConfig': {
    'Binds': ['/tmp:/stuff']
  }
}, function(err, container) {
  container.attach({
    stream: true,
    stdout: true,
    stderr: true,
    tty: true
  }, function(err, stream) {
    stream.pipe(process.stdout);

    container.start(function(err, data) {
      console.log(data);
    });
  });
});

您可以在Docker Engine API文档中阅读更多信息:https://docs.docker.com/engine/api/v1.37/#operation/ContainerCreate

我复制的示例是dockerode的示例:https://github.com/apocas/dockerode/blob/master/examples/external_volume.js

关于node.js - 如何将主机和容器目录与Dockerode同步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49657680/

10-16 23:54