droot
Droot is a super-easy container chrooting a docker image without docker.
Overview
Docker has a powerful concept about an application deployment process, that is Build, Ship, Run. But there are many cases that docker runtime is beyond our current capabilities.
Droot provides a simpler container runtime without annoying Linux Namespaces. Droot depends on traditional Linux functions such as chroot(2), Linux capabilities(7) and a bind mount. droot helps you to chroot a container image built by docker and to import/export container images on Amazon S3.

Requirements
- Docker (
droot push only depends on it)
- Linux (
droot run and droot umount only supports it)
Installation
Usage
$ droot push --to s3://example.com/dockerfiles/app.tar.gz dockerfiles/app
$ droot pull --dest /var/containers/app --src s3://example.com/dockerfiles/app.tar.gz
$ sudo droot run --bind /var/log/ --root /var/containers/app command
$ sudo droot umount --root /var/containers/app
How to set your AWS credentials
Droot push/pull subcommands support the following methods to set your AWS credentials.
- an IAM instance profile. http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html
- Environment variables.
$ export AWS_ACCESS_KEY_ID=********
$ export AWS_SECRET_ACCESS_KEY=********
$ export AWS_REGION=********
~/.aws/credentials a standard to manage credentials in the AWS SDKs
Roodmap
rm command to clean container environment
rmi command to clean a image on S3
pull command with the rsync option
push/pull other compression algorithms
- image versioning
pull from docker registry
- drivers except Amazon S3
run reads .docekrenv, .dockerinit
- reduce fork&exec
--no-dropcaps option
Development
Droot uses a library with cgo, so it is necessary to build in Linux for a Linux binary.
It is recommanded to use Docker for development if you are on OSX and other OSs.
build in Docker container
$ ./script/build_in_container.sh
Contribution
- Fork (https://github.com/yuuki1/droot/fork)
- Create a feature branch
- Commit your changes
- Rebase your local changes against the master branch
- Run test suite with the
make test command and confirm that it passes
- Create a new Pull Request
Author
y_uuki