An Efficient Enterprise-class Rich Container Engine
Clone or download
fuweid and rudyfly bugfix: should initialize ContainerIO for all container
For now, when pouchd restarts, the restore function only re-connects to
existing running/pause containers with initializing container IO.
However, the stopped container also needs the container IO if the user
want to restart the container. For the case, we need to initialize
container IO for all existing container, not just for running/pause
containers.

Signed-off-by: Wei Fu <fuweid89@gmail.com>
Latest commit 60c8bc7 Jan 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci .circleci: disable megacheck Nov 23, 2018
.github docs: Update issue templates Oct 29, 2018
apis feature: support push image in daemon side Jan 17, 2019
cli feature: support push image in daemon side Jan 17, 2019
client feature: support push image in daemon side Jan 17, 2019
contrib/completion/bash bash_completion: add events command Sep 15, 2018
credential feature: make login/logout use default registry Mar 29, 2018
cri feature: CRI support pause/unpause containers Jan 17, 2019
ctrd feature: support push image in daemon side Jan 17, 2019
daemon bugfix: should initialize ContainerIO for all container Jan 17, 2019
docs feature: CRI support pause/unpause containers Jan 17, 2019
hack feature: CRI support pause/unpause containers Jan 17, 2019
hookplugins feature: support multiple snapshotter Jan 8, 2019
internal feature: support multiple snapshotter Jan 8, 2019
lxcfs refactor: fix part of megacheck issue Dec 4, 2018
network feature: enable IPv6 networking Nov 19, 2018
oci oci: add pouch default runtime spec Dec 20, 2018
pkg feature: support push image in daemon side Jan 17, 2019
registry refactor: fix part of megacheck issue Dec 4, 2018
storage fix: wrong time unit Jan 6, 2019
test bugfix: should initialize ContainerIO for all container Jan 17, 2019
tools/fix_quota_id tools: add fix_quota_id tool Nov 5, 2018
vendor feature: add basic cli command Jan 15, 2019
version upgrade: move to 1.1.0 Dec 24, 2018
.codecov.yml refactor: reorder hack folder Jul 20, 2018
.gitignore feature: add cross building support Dec 5, 2018
.gometalinter.json feature: add ineffassign and varcheck in gometalinter Oct 8, 2018
.travis.yml enhance: don't run travis-CI for only document change Nov 6, 2018
CHANGELOG.md fix some typos Dec 30, 2018
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Dec 25, 2017
CONTRIBUTING.md doc: update CONTRIBUTING.md Nov 21, 2018
CONTRIBUTORS docs: auto generate pouch cli docs via code Jan 8, 2019
Dockerfile docs: update golang version in Dockerfile to correct 1.10.4 Nov 4, 2018
Dockerfile.amd64.cross feature: add cross building support Dec 5, 2018
Dockerfile.arm64.cross feature: add cross building support Dec 5, 2018
Dockerfile.ppc64le.cross feature: add cross building support Dec 5, 2018
FAQ.md docs: change pouch to PouchContainer (#1525) Jun 14, 2018
INSTALLATION.md doc/cli: update golang version and kernel version Nov 8, 2018
LICENSE initial commit to add original content Oct 24, 2017
MAINTAINERS.md doc: add component owner and backup for project Jan 7, 2019
Makefile feature: support multiple snapshotter Jan 8, 2019
README.md docs: update the doc of CRI Oct 11, 2018
ROADMAP.md docs: change pouch to PouchContainer (#1525) Jun 14, 2018
VAGRANT.md Add quick experience PouchContainer with kubernetes by vagrant Sep 10, 2018
Vagrantfile upgrade: up to go1.10.4 version Oct 23, 2018
adoptors.md docs: add UCloud as a production adopter Nov 6, 2018
gen_doc.go feature: make pouchd support generating command line docs Jan 17, 2019
main.go feature: make pouchd support generating command line docs Jan 17, 2019
main_test.go test: add integration test coverage May 22, 2018

README.md

PouchContainer - An Efficient Enterprise-class Rich Container Engine

License GoDoc Build Status FOSSA Status Go Report Card codecov

pouchcontainer-logo-800

Main Links

Introduction

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

PouchContainer'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.

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

Features

PouchContainer's most important features are:

  • Rich container: Besides the common ways of running container, PouchContainer includes a rich container mode, which integrates more services, hooks, and many others container internals to guarantee container's running like usual.
  • Strong isolation: PouchContainer 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: PouchContainer 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: PouchContainer keeps embracing container ecosystem to support industry standard, such as CNI, CSI and so on.
  • Kubernetes compatibility: PouchContainer has natively implemented Kubernetes Container Runtime Interface(CRI). It will be smooth to migrate from other Kubernetes container runtime to PouchContainer.

Architecture

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

Advantages

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

Resource Utilization

PouchContainer significantly improves resource utilization:

  • PouchContainer 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

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

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

Getting Started

You can easily setup a basic PouchContainer 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, API Manual and USER Manual.

Deploying Kubernetes With PouchContainer

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

Contributing

You are warmly welcomed to hack on PouchContainer. 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 PouchContainer team at pouch-dev@list.alibaba-inc.com.

License

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