Giter Site home page Giter Site logo

droot's Introduction

droot Travis Build Status

Droot is a super-easy application container engine to build, ship, run with chroot instead of docker run, and with Amazon S3 instead of docker registry. It aims to simply escape dependency hell.

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 too complicated and beyond our current capabilities, especially on production.

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.

  • Build: docker build
  • Ship: Upload images to S3, and Download images from S3.
  • Run: chroot(2), Linux capabilities(7), and a bind mount.

droot concept

Requirements

  • Docker (droot push only depends on it)
  • Linux (droot run and droot umount only supports it)

Installation

Homebrew

$ brew tap yuuki1/droot
$ brew install droot

Download binary from GitHub Releases

Releases・yuuki1/droot - GitHub

Build from source

 $ go get github.com/yuuki1/droot
 $ go install github.com/yuuki1/droot/cmd

Usage

$ droot push --to s3://drootexamples/app.tar.gz dockerfiles/app
$ droot pull --dest /var/containers/app --src s3://drootexamples/app.tar.gz
$ sudo droot run --bind /var/log/ --root /var/containers/app command
$ sudo droot umount --root /var/containers/app
$ sudo droot rm --root /var/containers/app

How to set your AWS credentials

Droot push/pull subcommands support the following methods to set your AWS credentials.

$ export AWS_ACCESS_KEY_ID=********
$ export AWS_SECRET_ACCESS_KEY=********
$ export AWS_REGION=********

How to set docker endpoint

Droot push supports the environment variables same as docker-machine such as DOCKER_HOST, DOCKER_TLS_VERIFY, DOCKER_CERT_PATH. ex.

DOCKER_TLS_VERIFY=1
DOCKER_HOST=tcp://192.168.x.x:2376
DOCKER_CERT_PATH=/home/yuuki/.docker/machine/machines/dev

Roodmap

  • 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
  • push/pull S3 download/upload part-size options
  • push/pull verifying sha256sum
  • pull backup/rollback 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

  1. Fork (https://github.com/yuuki1/droot/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the make test command and confirm that it passes
  6. Create a new Pull Request

Author

y_uuki

droot's People

Contributors

yuuki avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.