最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何在dockerode的createContainer()函数中添加`

IT培训 admin 7浏览 0评论

如何在dockerode的createContainer()函数中添加`

我想使用node.js来操作docker容器。我发现了一个名为dockerode的模块,它看起来像我需要的工具。

但是,我还没有找到任何方法将--health-cmd--health-interval选项添加到createContainer函数中。

这两个选项用于docker run命令。你可以通过docker run --help | grep health找到它们:

--health-cmd string运行以检查运行状况的命令--health-interval duration运行检查之间的时间(ms | s | m | h)(默认为0)

我已经尝试了以下代码,但是2个选项在代码中不起作用。

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

docker.createContainer({
Image: 'mysql:5.7',
name: 'myContainer',
env: ['MYSQL_ROOT_PASSWORD=mypassword'],
'health-cmd': 'mysqladmin ping --silent',
'health-interval': '1s',
HostConfig: {
    PortBindings: {
    '3306/tcp': [
        {
        HostPort: '3306'
        }
    ]
    }
}
}, (err, container) => {
if (err) {
    console.error(`create err:${err}`)
} else {
    container.start((err, data) => {
    if (err) {
        console.error(`start err: ${err}`)
    } else {
        console.log(`data: ${data}`)
    }
    })
}
})
回答如下:

感谢post的帮助。我找到了document of Docker Engine API并想出了添加2个选项的正确方法:

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

docker.createContainer({
  Image: 'mysql:5.7',
  name: 'myContainer',
  env: ['MYSQL_ROOT_PASSWORD=mypassword'],
  Healthcheck: {
    Test: ['CMD-SHELL', 'mysqladmin ping'],
    Interval: 1000000000
  },
  HostConfig: {
    PortBindings: {
      '3306/tcp': [
        {
          HostPort: '3306'
        }
      ]
    }
  }
}, (err, container) => {
  if (err) {
    console.error(`create err:${err}`)
  } else {
    container.start((err, data) => {
      if (err) {
        console.error(`start err: ${err}`)
      } else {
        console.log(`data: ${data}`)
      }
    })
  }
})

您可以从createContainer的源代码中找到POST /containers/create调用node_modules/dockerode/lib/docker.js

如何在dockerode的createContainer()函数中添加`

我想使用node.js来操作docker容器。我发现了一个名为dockerode的模块,它看起来像我需要的工具。

但是,我还没有找到任何方法将--health-cmd--health-interval选项添加到createContainer函数中。

这两个选项用于docker run命令。你可以通过docker run --help | grep health找到它们:

--health-cmd string运行以检查运行状况的命令--health-interval duration运行检查之间的时间(ms | s | m | h)(默认为0)

我已经尝试了以下代码,但是2个选项在代码中不起作用。

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

docker.createContainer({
Image: 'mysql:5.7',
name: 'myContainer',
env: ['MYSQL_ROOT_PASSWORD=mypassword'],
'health-cmd': 'mysqladmin ping --silent',
'health-interval': '1s',
HostConfig: {
    PortBindings: {
    '3306/tcp': [
        {
        HostPort: '3306'
        }
    ]
    }
}
}, (err, container) => {
if (err) {
    console.error(`create err:${err}`)
} else {
    container.start((err, data) => {
    if (err) {
        console.error(`start err: ${err}`)
    } else {
        console.log(`data: ${data}`)
    }
    })
}
})
回答如下:

感谢post的帮助。我找到了document of Docker Engine API并想出了添加2个选项的正确方法:

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

docker.createContainer({
  Image: 'mysql:5.7',
  name: 'myContainer',
  env: ['MYSQL_ROOT_PASSWORD=mypassword'],
  Healthcheck: {
    Test: ['CMD-SHELL', 'mysqladmin ping'],
    Interval: 1000000000
  },
  HostConfig: {
    PortBindings: {
      '3306/tcp': [
        {
          HostPort: '3306'
        }
      ]
    }
  }
}, (err, container) => {
  if (err) {
    console.error(`create err:${err}`)
  } else {
    container.start((err, data) => {
      if (err) {
        console.error(`start err: ${err}`)
      } else {
        console.log(`data: ${data}`)
      }
    })
  }
})

您可以从createContainer的源代码中找到POST /containers/create调用node_modules/dockerode/lib/docker.js

发布评论

评论列表 (0)

  1. 暂无评论