]> git.proxmox.com Git - ovs.git/blame - INSTALL.Docker.md
ovs_assert, tests: Support NDEBUG.
[ovs.git] / INSTALL.Docker.md
CommitLineData
542cc9bb
TG
1How to Use Open vSwitch with Docker
2====================================
ec8f0f0c
GS
3
4This document describes how to use Open vSwitch with Docker 1.2.0 or
9feb1017
TG
5later. This document assumes that you followed [INSTALL.md] or installed
6Open vSwitch from distribution packaging such as a .deb or .rpm. Consult
7www.docker.com for instructions on how to install or .rpm. Consult
8www.docker.com for instructions on how to install Docker.
ec8f0f0c
GS
9
10Limitations
11-----------
12Currently there is no native integration of Open vSwitch in Docker, i.e.,
13one cannot use the Docker client to automatically add a container's
14network interface to an Open vSwitch bridge during the creation of the
15container. This document describes addition of new network interfaces to an
16already created container and in turn attaching that interface as a port to an
62dbc5bd
GS
17Open vSwitch bridge. If and when there is a native integration of Open vSwitch
18with Docker, the ovs-docker utility described in this document is expected to
19be retired.
ec8f0f0c
GS
20
21Setup
22-----
23* Create your container, e.g.:
24
542cc9bb 25```
ec8f0f0c
GS
26% docker run -d ubuntu:14.04 /bin/sh -c \
27"while true; do echo hello world; sleep 1; done"
542cc9bb 28```
ec8f0f0c
GS
29
30The above command creates a container with one network interface 'eth0'
31and attaches it to a Linux bridge called 'docker0'. 'eth0' by default
32gets an IP address in the 172.17.0.0/16 space. Docker sets up iptables
33NAT rules to let this interface talk to the outside world. Also since
34it is connected to 'docker0' bridge, it can talk to all other containers
35connected to the same bridge. If you prefer that no network interface be
36created by default, you can start your container with
37the option '--net=none', e,g.:
38
542cc9bb 39```
ec8f0f0c
GS
40% docker run -d --net=none ubuntu:14.04 /bin/sh -c \
41"while true; do echo hello world; sleep 1; done"
542cc9bb 42```
ec8f0f0c
GS
43
44The above commands will return a container id. You will need to pass this
45value to the utility 'ovs-docker' to create network interfaces attached to an
46Open vSwitch bridge as a port. This document will reference this value
47as $CONTAINER_ID in the next steps.
48
49* Add a new network interface to the container and attach it to an Open vSwitch
50 bridge. e.g.:
51
542cc9bb 52`% ovs-docker add-port br-int eth1 $CONTAINER_ID`
ec8f0f0c
GS
53
54The above command will create a network interface 'eth1' inside the container
55and then attaches it to the Open vSwitch bridge 'br-int'. This is done by
56creating a veth pair. One end of the interface becomes 'eth1' inside the
57container and the other end attaches to 'br-int'.
58
59The script also lets one to add an IP address to the interface. e.g.:
60
542cc9bb 61`% ovs-docker add-port br-int eth1 $CONTAINER_ID 192.168.1.1/24`
ec8f0f0c
GS
62
63* A previously added network interface can be deleted. e.g.:
64
542cc9bb 65`% ovs-docker del-port br-int eth1 $CONTAINER_ID`
ec8f0f0c
GS
66
67All the previously added Open vSwitch interfaces inside a container can be
68deleted. e.g.:
69
542cc9bb 70`% ovs-docker del-ports br-int $CONTAINER_ID`
ec8f0f0c
GS
71
72It is important that the same $CONTAINER_ID be passed to both add-port
73and del-port[s] commands.
74
75* More network control.
76
77Once a container interface is added to an Open vSwitch bridge, one can
78set VLANs, create Tunnels, add OpenFlow rules etc for more network control.
79Please read the man pages of ovs-vsctl, ovs-ofctl, ovs-vswitchd,
80ovsdb-server ovs-vswitchd.conf.db etc for more details.
81
82Docker networking is quite flexible and can be used in multiple ways. For more
83information, please read:
84https://docs.docker.com/articles/networking
85
86Bug Reporting
87-------------
88
89Please report problems to bugs@openvswitch.org.
9feb1017
TG
90
91[INSTALL.md]:INSTALL.md