https://github.com/runnable/loki
Loki: Runnable Docker/Swarm library with batteries
https://github.com/runnable/loki
Last synced: about 1 year ago
JSON representation
Loki: Runnable Docker/Swarm library with batteries
- Host: GitHub
- URL: https://github.com/runnable/loki
- Owner: Runnable
- License: mit
- Created: 2016-04-29T18:48:34.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2017-05-31T21:47:30.000Z (about 9 years ago)
- Last Synced: 2025-03-27T05:51:11.567Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 46.9 KB
- Stars: 6
- Watchers: 11
- Forks: 0
- Open Issues: 44
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# loki
[](http://standardjs.com/)
[](https://travis-ci.org/Runnable/loki)
[](https://codeclimate.com/github/Runnable/loki)
[](https://david-dm.org/Runnable/loki)
[](https://david-dm.org/Runnable/loki)
[](https://nodei.co/npm/@runnable/loki)
Runnable Docker/Swarm client library with batteries.

## Features
* include both Docker and Swarm clients
* Swarm client has all additional [swarmerode](https://github.com/Runnable/swarmerode) Promisified methods
* automatically report each docker call to datadog using [dogerode](https://github.com/Runnable/dogerode)
* HTTPS certs are required. Will throw an error
* Base client includes Promisified container actions like `stopContainer`, `logContainer` etc
* You can still call Dockerode directly. Dockerode instance is available under `client` property
## Usage
You can use loki Docker client Promisified extra container functions like this:
```javascript
const Docker = require('loki').Docker
const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
dockerClient.stopContainerAsync('71501a8ab0f8')
.then(function () {
console.log('container stopped')
})
.catch(function (err) {
console.log('container failed to stop', err)
})
```
You can use loki Dockerode client methods like this:
```javascript
const Docker = require('loki').Docker
const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
dockerClient.getContainer('71501a8ab0f8')
.stop(function (err) {
if (err) {
return console.log('container failed to stop', err)
}
console.log('container stopped')
})
```
You can use loki Dockerode promisified methods directly like this:
```javascript
const Docker = require('loki').Docker
const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
dockerClient.listConatinersAsync('71501a8ab0f8')
.then(function (containers) {
console.log('found containers')
})
```
You can extend loki Docker client with your app specific functions:
```javascript
const Docker = require('loki').Docker
class MyDocker extends Docker {
}
const myDocker = new MyDocker()
dockerClient.stopContainerAsync('71501a8ab0f8')
.then(function () {
console.log('container stopped')
})
.catch(function (err) {
console.log('container failed to stop', err)
})
```
## Base functions
Every Loki client include utility Promise-based functions
to deal with containers.
E.x. instead of this code
```javascript
const Docker = require('loki').Docker
const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
dockerClient.getContainer('71501a8ab0f8')
.stop(function (err) {
console.log('stopped container?', err)
})
```
You can do the following
```javascript
const Docker = require('loki').Docker
const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
dockerClient.stopContainerAsync('71501a8ab0f8')
.then(function () {
console.log('container was stopped')
})
```
- topContainerAsync
- startContainerAsync
- commitContainerAsync
- inspectContainerAsync
- stopContainerAsync
- pauseContainerAsync
- unpauseContainerAsync
- restartContainerAsync
- resizeContainerAsync
- attachContainerAsync
- removeContainerAsync
- killContainerAsync
- execContainerAsync
- renameContainerAsync
- logsContainerAsync
- statsContainerAsync
- getArchiveContainerAsync
- infoArchiveContainerAsync
- putArchiveContainerAsync
- updateContainerAsync
## Swarm functions
- swarmHostsAsync
- swarmInfoAsync
- swarmHostExistsAsync
## Conventions
* Each client instance has all functions from Dockerode client available to call directly.
* Each client instance has Promisified Dockerode functions available with `Async` suffix.
* Each Swarm client instance has all functions from Swarmerode client available to call directly.
* Each Swarm client instance has Promisified Swarmerode functions available with `Async` suffix.