2.4.0 • Published 10 years ago
ducke v2.4.0
Ducke
A nodejs API and command line tool for docker.
Ducke supports:
- Listing, building, inspecting and deleting images
- Listing, creating, inspecting, running, logging, attaching and deleting containers
Ducke does not yet support:
- Searching, pushing, pulling, tagging and history of images
- System events, docker versioning, creating images from containers and authentication
- Exporting, resizing TTY, pausing, unpausing, inspecting changes for a container
- Interacting with the docker registry and hub
Inspired by dockerode.
Install
To use on the command line
npm install -g ducke
To use as an API
npm install ducke
Usage
Usage: ducke command [parameters]
ducke option
Common:
ps List all running containers
logs Attach to container logs
run Start a new container interactively
up Start a new container
exec Run a command inside an existing container
Containers:
inspect Show details about containers
kill Send SIGTERM to running containers
stop Stop containers
purge Remove week old stopped containers
rm Delete containers
Images:
ls List available images
orphans List all orphaned images
rmi Delete images
inspecti Show details about images
Building:
build Build an image from a Dockerfile
rebuild Build an image from a Dockerfile from scratch
Options:
-h Display this usage information
-v Display the version number
Examples
Command
$ ~ ducke ls
04c5d3b7b065 ubuntu:latest
cf39b476aeec phusion/baseimage:0.9.15
...
0e819813bc00 tutum/apache-php:latest
...
5327fda0d529 phusion/passenger-full:0.9.11
$ ~ ducke ps
stopped happy_goldstine (234bce554bdcec9d4ad47a452bd37a95d291d825138421730aa06017da9c8412)
stopped loadbalancer-osx_daemon_1 (metocean/doppelganger:1.0.3)
stopped sleepy_turing (cf39b476aeec4d2bd097945a14a147dc52e16bd88511ed931357a5cd6f6590de)
$ ~ ducke run ubuntu
running cranky_kowalevski (ubuntu)
root@09d3215f6677:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@09d3215f6677:/#
///
$ ~ ducke exec cranky_kowalevski
exec cranky_kowalevski (ubuntu)
root@10a2833bdafa:/# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.4 0.3 18168 3164 ? Ss+ 04:19 0:00 bash
root 16 1.0 0.3 18172 3168 ? S 04:19 0:00 bash
root 31 0.0 0.2 15572 2100 ? R+ 04:19 0:00 ps aux
root@10a2833bdafa:/#
$ ~ ducke cull happy_goldstine sleepy_turing
deleted happy_goldstine
deleted sleepy_turing
$ ~
API
var Ducke = require('ducke');
var ducke = new Ducke.API(Ducke.Parameters());
// List all containers
ducke.ps(function(err, containers) {
console.log(containers);
});
// Start a container
ducke
.container('my_container')
.start(function(err, result) {
console.log(result);
});
// Create a container
ducke
.image('ubuntu:latest')
.up('my_container', ['/bin/bash'], function(err, id) {
console.log('Container id: ' + id);
});
API Reference
ducke.ping(function(err, isup) {});
ducke.ps(function(err, containers) {
// https://docs.docker.com/reference/api/docker_remote_api_v1.15/#list-containers
containers[0].container
// https://docs.docker.com/reference/api/docker_remote_api_v1.15/#inspect-a-container
containers[0].inspect
});
ducke.ls(function(err, images) {
// https://docs.docker.com/reference/api/docker_remote_api_v1.15/#list-images
images.images[0].image
images.graph = [
{
image: ...
children: [
{
image: ...
children: [...]
}
]
}
]
images.tags = {
'ubuntu:latest': {...}
'my_image:0.0.1': {...}
}
images.ids = {
'62b9c90893b4...': {...}
'cd80a4b0ed6b...': {...}
}
ducke.lls(images, function(err, details) {
// https://docs.docker.com/reference/api/docker_remote_api_v1.15/#inspect-an-image
details = {
'62b9c90893b4...': {...}
}
});
});
ducke
.container('my_container')
.inspect(function(err, inspect) {})
.logs(function(err, stream) {})
.resize(function(err, didresize) {})
.start(function(err, result) {})
.stop(function(err, result) {})
.wait(function(err, result) {})
.rm(function(err, result) {})
.attach(function(err, stream) {})
.kill(function(err, result) {})
.exec(['/bin/bash'], process.stdin, process.stdout, process.stderr, function(err, code) {});
ducke
.image('my_image')
.build('/path/to/folder', console.log, function(err) {})
.rebuild('/path/to/folder', console.log, function(err) {})
.up('my_container', ['/bin/bash'], function(err, id) {})
.inspect(function(err, results) {})
.rm(function(err, results) {})
.run(['/bin/bash'], process.stdin, process.stdout, process.stderr, function(err, code) {})
Todo
- More of the docker API
- Tests
2.4.0
10 years ago
2.3.9
10 years ago
2.3.8
10 years ago
2.3.7
10 years ago
2.3.6
10 years ago
2.3.5
10 years ago
2.3.4
10 years ago
2.3.2
10 years ago
2.3.1
10 years ago
2.3.0
10 years ago
2.2.0
11 years ago
2.1.2
11 years ago
2.1.1
11 years ago
2.1.0
11 years ago
1.13.1
11 years ago
1.13.0
11 years ago
1.12.0
11 years ago
1.10.0
11 years ago
1.9.0
11 years ago
1.8.0
11 years ago
1.7.0
11 years ago
1.6.0
11 years ago
1.5.0
11 years ago
1.4.0
11 years ago
1.3.0
11 years ago