README: Simplify preamble

This commit is contained in:
Michael Bridgen 2016-05-05 16:18:45 +01:00
parent fb34e4a21d
commit 8db1f0d503

View File

@ -5,23 +5,21 @@
## What is CNI? ## What is CNI?
CNI, the _Container Network Interface_, is a project to help configure network interfaces for Linux application containers. The CNI (_Container Network Interface_) project consists of a specification and libraries for writing plugins to configure network interfaces in Linux containers, along with a number of supported plugins.
CNI concerns itself with setting up network connectivity of containers and removing allocated resources when the container is deleted. CNI concerns itself only with network connectivity of containers and removing allocated resources when the container is deleted.
Because of this focus CNI has a wide range of support and the specification is simple to implement. Because of this focus CNI has a wide range of support and the specification is simple to implement.
The project repository contains a [simple specification](SPEC.md) for how executable plugins can be used to configure network namespaces, and a number of plugins, libraries and utilities written in Go that can be used to get started with CNI. As well as the [specification](SPEC.md), this repository contains the Go source code of a library for integrating CNI into applications, an example command-line tool, a template for making new plugins, and the supported plugins.
The specification and the plugin architecture form a template system with perfectly clear interfaces. The template code makes it straight-forward to create a CNI plugin for an existing container networking project.
This allows developers to integrate their existing container networking solutions with a thin CNI wrapper plugin. CNI also makes a good framework for creating a new container networking project from scratch.
It also gives a good framework to create new container networking solutions from scratch.
## Why develop CNI? ## Why develop CNI?
Application containers on Linux are a rapidly evolving area, and within this space networking is a particularly unsolved problem, as it is highly environment-specific. Application containers on Linux are a rapidly evolving area, and within this area networking is not well addressed as it is highly environment-specific.
We believe that every container runtime will seek to solve the same problem of making the network layer pluggable. We believe that many container runtimes and orchestrators will seek to solve the same problem of making the network layer pluggable.
To avoid duplication, we think it is prudent to define a common interface between the network plugins and container execution. To avoid duplication, we think it is prudent to define a common interface between the network plugins and container execution: hence we put forward this specification, along with libraries for Go and a set of plugins.
Hence we are proposing this specification, along with an initial set of plugins that can be used by different container runtime systems.
## Who is using CNI? ## Who is using CNI?
@ -41,16 +39,19 @@ If you intend to contribute to code or documentation, please read [CONTRIBUTING.
## How do I use CNI? ## How do I use CNI?
### Requirements ### Requirements
CNI requires Go 1.5+ to build. CNI requires Go 1.5+ to build.
Go 1.5 users will need to set GO15VENDOREXPERIMENT=1 to get vendored Go 1.5 users will need to set GO15VENDOREXPERIMENT=1 to get vendored
dependencies. This flag is set by default in 1.6. dependencies. This flag is set by default in 1.6.
### Included Plugins ### Included Plugins
This repository includes a number of common plugins in the `plugins/` directory. This repository includes a number of common plugins in the `plugins/` directory.
Please see the [Documentation/](Documentation/) directory for documentation about particular plugins. Please see the [Documentation/](Documentation/) directory for documentation about particular plugins.
### Running the plugins ### Running the plugins
The scripts/ directory contains two scripts, `priv-net-run.sh` and `docker-run.sh`, that can be used to exercise the plugins. The scripts/ directory contains two scripts, `priv-net-run.sh` and `docker-run.sh`, that can be used to exercise the plugins.
**note - priv-net-run.sh depends on `jq`** **note - priv-net-run.sh depends on `jq`**