Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-docker-api

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-docker-api

Docker Remote API driver for node

  • 1.1.8
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
49K
increased by10.19%
Maintainers
1
Weekly downloads
 
Created
Source

docker-api

travis-ci

Docker Remote API driver for node.js. It uses the same modem than dockerode, but the interface is promisified and with a different syntax.

Support for:

  • streams
  • stream demux
  • entities
  • run
  • tests
  • promises
  • full es6 support

The current status of the package is in beta state. This module covers the full API reference, including experimental stuff such as plugins.

Check the reference and the tests for full examples.

Installation

npm install node-docker-api

Usage

Create, start, stop, restart and remove a container

const Docker = require('node-docker-api').Docker

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

docker.container.create({
  Image: 'ubuntu',
  name: 'test'
})
  .then((container) => container.start())
  .then((container) => container.stop())
  .then((container) => container.restart())
  .then((container) => container.delete({ force: true }))
  .catch((error) => console.log(error))

List, inspect and top containers

const Docker = require('node-docker-api').Docker

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

// List
docker.container.list()
   // Inspect
  .then((containers) => containers[0].status())
  .then((container) => container.top())
  .then((processes) => console.log(processes))
  .catch((error) => console.log(error))

List, inspect and stat containers

const Docker = require('node-docker-api').Docker

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

// List
docker.container.list()
   // Inspect
  .then((containers) => containers[0].status())
  .then((container) => container.stats())
  .then((stats) => {
    stats.on('data', (stat) => console.log('Stats: ',stat))
    stats.on('error', (err) => console.log('Error: ', err))
  })
  .catch((error) => console.log(error))

Get logs of a container

const Docker = require('node-docker-api').Docker

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

docker.container.create({
  Image: 'ubuntu',
  name: 'test'
})
  .then((container) => container.logs({
    follow: true,
    stdout: true,
    stderr: true
  }))
  .then((stream) => {
    stream.on('data', (info) => console.log(info))
    stream.on('error', (err) => console.log(err))
  })
  .catch((error) => console.log(error))

Export a container

const Docker = require('node-docker-api').Docker,
  fs = require('fs')

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

docker.container.create({
  Image: 'ubuntu',
  name: 'test'
})
  .then((container) => container.start())
  .then((container) => container.export())
  .then((content) => {
    let file = fs.createWriteStream("container.tar");
    file.end(content)
  })
  .catch((error) => console.log(error))

Manipulate file system in a container

const Docker = require('node-docker-api').Docker,
  fs = require('fs')

const promisifyStream = (stream) => new Promise((resolve, reject) => {
  stream.on('data', (d) => console.log(d.toString()))
  stream.on('end', resolve)
  stream.on('error', reject)
})

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

docker.container.create({
  Image: 'ubuntu',
  Cmd: [ '/bin/bash', '-c', 'tail -f /var/log/dmesg' ],
  name: 'test'
})
  .then((container) => container.start())
  .then((_container) => {
    container = _container
    return _container.fs.put('./file.tar', {
      path: 'root'
    })
  })
  .then((stream) => promisifyStream(stream))
  .then(() => container.fs.get({ path: '/var/log/dmesg' }))
  .then((stream) => {
    let file = fs.createWriteStream("file.jpg");
    stream.pipe(file)
    return promisifyStream(stream)
  })
  .then(() => container.status())
  .then((container) => container.stop())
  .catch((error) => console.log(error))

Execute commands and kill containers

const Docker = require('node-docker-api').Docker

const promisifyStream = (stream) => new Promise((resolve, reject) => {
  console.log(stream);
  stream.on('data', (d) => console.log(d.toString()))
  stream.on('end', resolve)
  stream.on('error', reject)
})

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

docker.container.create({
  Image: 'ubuntu',
  Cmd: [ '/bin/bash', '-c', 'tail -f /var/log/dmesg' ],
  name: 'test'
})
  .then((container) => container.start())
  .then((_container) => {
    container = _container
    return container.exec.create({
      Cmd: [ "top" ]
    })
  })
  .then((exec) => {
    return exec.start()
  })
  .then((stream) => {
    stream.on('data', (info) => {
      console.log(info.toString())
      _container.kill()
    })
    stream.on('error', (err) => console.log(err))
  })
  .catch((error) => console.log(error))

Build, inspect and remove an image

const Docker = require('node-docker-api').Docker,
  tar = require('tar-fs')

const promisifyStream = (stream) => new Promise((resolve, reject) => {
  stream.on('data', (d) => console.log(d.toString()))
  stream.on('end', resolve)
  stream.on('error', reject)
})

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

var tarStream = tar.pack('/path/to/Dockerfile')
docker.image.build(tarStream, {
  t: 'testimg'
})
  .then((stream) => promisifyStream(stream))
  .then(() => docker.image.status('testimg'))
  .then((image) => image.remove())
  .catch((error) => console.log(error))

Pull and check history of an image

const Docker = require('node-docker-api').Docker

const promisifyStream = (stream) => new Promise((resolve, reject) => {
  stream.on('data', (d) => console.log(d.toString()))
  stream.on('end', resolve)
  stream.on('error', reject)
})

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

return docker.image.create({}, { fromImage: 'ubuntu', tag: 'latest' })
  .then((stream) => promisifyStream(stream))
  .then(() => docker.image.status('ubuntu'))
  .then((image) => image.history())
  .then((events) => console.log(events))
  .catch((error) => console.log(error))

Fetch events from docker

const Docker = require('node-docker-api').Docker,
  fs = require('fs')

const promisifyStream = (stream) => new Promise((resolve, reject) => {
  stream.on('data', (d) => console.log(data))
  stream.on('end', resolve)
  stream.on('error', reject)
})

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

docker.events({
  since: ((new Date().getTime() / 1000) - 60).toFixed(0)
})
  .then((container) => container.events())
  .then((stream) => promisifyStream(stream))
  .catch((error) => console.log(error))

Keywords

FAQs

Package last updated on 01 Apr 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc