pouch

command module
v0.0.0-...-f2d3d7a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2018 License: Apache-2.0 Imports: 20 Imported by: 0

README

Pouch - An Efficient Enterprise-class Rich Container Engine

License GoDoc Build Status FOSSA Status Go Report Card

pouchcontainer-logo-800

Introduction

Pouch is an open-source project created by Alibaba Group to promote the container technology movement.

Pouch's vision is to advance container ecosystem and promote container standards OCI(Open Container Initiative), so that container technologies become the foundation for application development in the Cloud era.

Pouch can pack, deliver and run any application. It provides applications with a lightweight runtime environment with strong isolation and minimal overhead. Pouch isolates applications from varying runtime environment, and minimizes operational workload. Pouch minimizes the effort for application developers to write Cloud-native applications, or to migrate legacy ones to a Cloud platform.

Features

Pouch's most important features are:

  • Rich container: Besides the common ways of running container, Pouch includes a rich container mode, which integrates more services, hooks, and many others container internals to guarantee container's running like usual.
  • Strong isolation: Pouch is designed to be secure by default. It includes lots of security features, like hypervisor-based container technology, lxcfs, directory disk quota, patched Linux kernel and so on.
  • P2P distribution: Pouch utilizes Dragonfly, a P2P-base distribution system, to achieve lightning-fast container image distribution at enterprise's large scale.
  • Kernel compatibility: Enables OCI-compatible runtimes to work on old kernel versions, like linux kernel 2.6.32+.
  • Standard compatibility: Pouch keeps embracing container ecosystem to support industry standard, such as CNI, CSI and so on.
  • Kubernetes compatibility: Pouch has natively implemented Kubernetes Container Runtime Interface(CRI). It will be smooth to migrate from other Kubernetes container runtime to Pouch.

Architecture

We describe Pouch's architecture from two dimensions: ecosystem architecture which illustrates how Pouch fits into the container ecosystem and component architecture which describes the interactions between various components inside Pouch. For more details, please refer to file architecture.md.

Advantages

Pouch has lots of advantages over VM technologies. Two of the most impressive ones are Resource Utilization and Application Centric.

Resource Utilization

Pouch significantly improves resource utilization:

  • Pouch is compatible with OCI image spec. Applications can minimize their storage usage with layered image structure.
  • Incremental image distribution, saves datacenter bandwidth consumption.
  • Significantly less runtime overhead than VM-based technologies.
Application Centric

Pouch offers a more "application centric" approach for application development:

  • Pouch provides strong runtime isolation between applications, with cutting-edge technology both within kernel support and beyond kernel mode.
  • Pouch enables cross-platform and cross-OS application delivery.
  • Pouch supports standardized application image spec, so application sharing and reusing becomes trivial for developers and operators.

Getting Started

You can easily setup a basic Pouch environment, see INSTALLATION.md. You'll need to install a few packages before starting pouchd, which starts a container management service. The service can be accessed through the pouch CLI or RPC calls. For more details, please refer to CLI Manual and API Manual.

Deploying Kubernetes With Pouch

After installing Pouch on your machine, maybe it is the exciting moment for you to power your Kubernetes cluster by Pouch. There is an easy guide for you to quickly experience this amazing combination Kubernetes + Pouch.

Contributing

You are warmly welcomed to hack on Pouch. We have prepared a detailed guide CONTRIBUTING.md.

FAQ

For more details about frequently asked questions (FAQ), please refer to file FAQ.md.

Roadmap

For more details about roadmap, please refer to file ROADMAP.md.

Connect with us

You are encouraged to communicate everything via GitHub issues or pull requests. In the future, we would provide more channels for communication if necessary.

If you have urgent issues, please contact Pouch team at pouch-dev@list.alibaba-inc.com.

License

Pouch is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apis
cli
cri
mgr
extra
libnetwork
Package libnetwork is a generated protocol buffer package.
Package libnetwork is a generated protocol buffer package.
libnetwork/Godeps/_workspace/src/github.com/Sirupsen/logrus
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
libnetwork/Godeps/_workspace/src/github.com/boltdb/bolt
Package bolt implements a low-level key/value store in pure Go.
Package bolt implements a low-level key/value store in pure Go.
libnetwork/Godeps/_workspace/src/github.com/codegangsta/cli
Package cli provides a minimal framework for creating and organizing command line Go applications.
Package cli provides a minimal framework for creating and organizing command line Go applications.
libnetwork/Godeps/_workspace/src/github.com/coreos/etcd/client
Package client provides bindings for the etcd APIs.
Package client provides bindings for the etcd APIs.
Integration with the systemd D-Bus API.
libnetwork/Godeps/_workspace/src/github.com/coreos/go-systemd/util
Package util contains utility functions related to systemd that applications can use to check things like whether systemd is running.
Package util contains utility functions related to systemd that applications can use to check things like whether systemd is running.
libnetwork/Godeps/_workspace/src/github.com/deckarep/golang-set
Package mapset implements a simple and generic set collection.
Package mapset implements a simple and generic set collection.
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/locker
Package locker provides a mechanism for creating finer-grained locking to help free up more global locks to handle other tasks.
Package locker provides a mechanism for creating finer-grained locking to help free up more global locks to handle other tasks.
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/parsers/kernel
Package kernel provides helper function to get, parse and compare kernel versions for different platforms.
Package kernel provides helper function to get, parse and compare kernel versions for different platforms.
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/plugins
Package plugins provides structures and helper functions to manage Docker plugins.
Package plugins provides structures and helper functions to manage Docker plugins.
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/proxy
Package proxy provides a network Proxy interface and implementations for TCP and UDP.
Package proxy provides a network Proxy interface and implementations for TCP and UDP.
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/signal
Package signal provides helper functions for dealing with signals across various operating systems.
Package signal provides helper functions for dealing with signals across various operating systems.
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/stringid
Package stringid provides helper functions for dealing with string identifiers
Package stringid provides helper functions for dealing with string identifiers
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/term
Package term provides provides structures and helper functions to work with terminal (state, sizes).
Package term provides provides structures and helper functions to work with terminal (state, sizes).
libnetwork/Godeps/_workspace/src/github.com/docker/docker/pkg/tlsconfig
Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.
Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.
libnetwork/Godeps/_workspace/src/github.com/docker/go-connections/sockets
Package sockets provides helper functions to create and configure Unix or TCP sockets.
Package sockets provides helper functions to create and configure Unix or TCP sockets.
libnetwork/Godeps/_workspace/src/github.com/docker/go-connections/tlsconfig
Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.
Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.
libnetwork/Godeps/_workspace/src/github.com/docker/go-units
Package units provides helper function to parse and print size and time units in human-readable format.
Package units provides helper function to parse and print size and time units in human-readable format.
libnetwork/Godeps/_workspace/src/github.com/godbus/dbus
Package dbus implements bindings to the D-Bus message bus system.
Package dbus implements bindings to the D-Bus message bus system.
libnetwork/Godeps/_workspace/src/github.com/gogo/protobuf/gogoproto
Package gogoproto provides extensions for protocol buffers to achieve: - fast marshalling and unmarshalling.
Package gogoproto provides extensions for protocol buffers to achieve: - fast marshalling and unmarshalling.
libnetwork/Godeps/_workspace/src/github.com/gogo/protobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
Package proto converts data structures to and from the wire format of protocol buffers.
libnetwork/Godeps/_workspace/src/github.com/gogo/protobuf/protoc-gen-gogo/descriptor
Package descriptor is a generated protocol buffer package.
Package descriptor is a generated protocol buffer package.
libnetwork/Godeps/_workspace/src/github.com/golang/protobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
Package proto converts data structures to and from the wire format of protocol buffers.
libnetwork/Godeps/_workspace/src/github.com/gorilla/context
Package context stores values shared during a request lifetime.
Package context stores values shared during a request lifetime.
libnetwork/Godeps/_workspace/src/github.com/gorilla/mux
Package gorilla/mux implements a request router and dispatcher.
Package gorilla/mux implements a request router and dispatcher.
libnetwork/Godeps/_workspace/src/github.com/hashicorp/go-msgpack/codec
High Performance, Feature-Rich Idiomatic Go encoding library for msgpack and binc .
High Performance, Feature-Rich Idiomatic Go encoding library for msgpack and binc .
libnetwork/Godeps/_workspace/src/github.com/hashicorp/memberlist
memberlist is a library that manages cluster membership and member failure detection using a gossip based protocol.
memberlist is a library that manages cluster membership and member failure detection using a gossip based protocol.
libnetwork/Godeps/_workspace/src/github.com/miekg/dns
Package dns implements a full featured interface to the Domain Name System.
Package dns implements a full featured interface to the Domain Name System.
libnetwork/Godeps/_workspace/src/github.com/opencontainers/runc/libcontainer
Libcontainer provides a native Go implementation for creating containers with namespaces, cgroups, capabilities, and filesystem access controls.
Libcontainer provides a native Go implementation for creating containers with namespaces, cgroups, capabilities, and filesystem access controls.
libnetwork/Godeps/_workspace/src/github.com/opencontainers/runc/libcontainer/criurpc
Package criurpc is a generated protocol buffer package.
Package criurpc is a generated protocol buffer package.
libnetwork/Godeps/_workspace/src/github.com/seccomp/libseccomp-golang
Package seccomp rovides bindings for libseccomp, a library wrapping the Linux seccomp syscall.
Package seccomp rovides bindings for libseccomp, a library wrapping the Linux seccomp syscall.
libnetwork/Godeps/_workspace/src/github.com/stretchr/testify/assert
Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.
Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.
libnetwork/Godeps/_workspace/src/github.com/stretchr/testify/require
Alternative testing tools which stop test execution if test failed.
Alternative testing tools which stop test execution if test failed.
libnetwork/Godeps/_workspace/src/github.com/syndtr/gocapability/capability
Package capability provides utilities for manipulating POSIX capabilities.
Package capability provides utilities for manipulating POSIX capabilities.
libnetwork/Godeps/_workspace/src/github.com/ugorji/go/codec
High Performance, Feature-Rich Idiomatic Go codec/encoding library for binc, msgpack, cbor, json.
High Performance, Feature-Rich Idiomatic Go codec/encoding library for binc, msgpack, cbor, json.
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink
Package netlink provides a simple library for netlink.
Package netlink provides a simple library for netlink.
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/nl
Package nl has low level primitives for making Netlink calls.
Package nl has low level primitives for making Netlink calls.
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netns
Package netns allows ultra-simple network namespace handling.
Package netns allows ultra-simple network namespace handling.
libnetwork/Godeps/_workspace/src/golang.org/x/net/context
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
libnetwork/Godeps/_workspace/src/golang.org/x/net/proxy
Package proxy provides support for a variety of protocols to proxy network data.
Package proxy provides support for a variety of protocols to proxy network data.
libnetwork/Godeps/_workspace/src/golang.org/x/sys/unix
Package unix contains an interface to the low-level operating system primitives.
Package unix contains an interface to the low-level operating system primitives.
libnetwork/bitseq
Package bitseq provides a structure and utilities for representing long bitmask as sequence of run-lenght encoded blocks.
Package bitseq provides a structure and utilities for representing long bitmask as sequence of run-lenght encoded blocks.
libnetwork/cmd/proxy
docker-proxy provides a network Proxy interface and implementations for TCP and UDP.
docker-proxy provides a network Proxy interface and implementations for TCP and UDP.
libnetwork/drivers/overlay
Package overlay is a generated protocol buffer package.
Package overlay is a generated protocol buffer package.
libnetwork/drivers/remote/api
Package api represents all requests and responses suitable for conversation with a remote driver.
Package api represents all requests and responses suitable for conversation with a remote driver.
libnetwork/idm
Package idm manages reservation/release of numerical ids from a configured set of contiguous ids
Package idm manages reservation/release of numerical ids from a configured set of contiguous ids
libnetwork/ipamapi
Package ipamapi specifies the contract the IPAM service (built-in or remote) needs to satisfy.
Package ipamapi specifies the contract the IPAM service (built-in or remote) needs to satisfy.
libnetwork/ipams/null
Package null implements the null ipam driver.
Package null implements the null ipam driver.
libnetwork/ipams/remote/api
Package api defines the data structure to be used in the request/response messages between libnetwork and the remote ipam plugin
Package api defines the data structure to be used in the request/response messages between libnetwork and the remote ipam plugin
libnetwork/ipamutils
Package ipamutils provides utility functions for ipam management
Package ipamutils provides utility functions for ipam management
libnetwork/networkdb
Package networkdb is a generated protocol buffer package.
Package networkdb is a generated protocol buffer package.
libnetwork/options
Package options provides a way to pass unstructured sets of options to a component expecting a strongly-typed configuration structure.
Package options provides a way to pass unstructured sets of options to a component expecting a strongly-typed configuration structure.
libnetwork/osl
Package osl describes structures and interfaces which abstract os entities
Package osl describes structures and interfaces which abstract os entities
libnetwork/resolvconf
Package resolvconf provides utility code to query and update DNS configuration in /etc/resolv.conf
Package resolvconf provides utility code to query and update DNS configuration in /etc/resolv.conf
libnetwork/types
Package types contains types that are common across libnetwork project
Package types contains types that are common across libnetwork project
pkg
storage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL