# cni - the Container Network Interface ## What is CNI? CNI, the _Container Network Interface_, is a proposed standard for configuring network interfaces for Linux application containers. The standard consists of a simple specification for how executable plugins can be used to configure network namespaces; this repository also contains a go library implementing that specification. The specification itself is contained in [SPEC.md](SPEC.md) ## 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. We believe that every container runtime will seek to solve the same problem of making the network layer pluggable. In order to avoid duplication, we think it is prudent to define a common interface between the network plugins and container execution. Hence we are proposing this specification, along with an initial set of plugins that can be used by different container runtime systems. ## How do I use CNI? ## Requirements CNI requires Go 1.4+ to build. ## Included Plugins This repository includes a number of common plugins that can be found in plugins/ directory. Please see Documentation/ folder for documentation about particular 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. Start out by creating a netconf file to describe a network: ``` $ mkdir -p /etc/cni/net.d $ cat >/etc/cni/net.d/10-mynet.conf <