如何将主机和容器目录与 Dockerode 同步?

How do you sync a host and container directory with Dockerode?


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

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 引擎 API 文档中阅读更多信息:https://docs.docker.com/engine/api/v1.37/#operation/ContainerCreate

还有我复制的例子,在dockerode的例子中:https://github.com/apocas/dockerode/blob/master/examples/external_volume.js