Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions 2.7.0/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <[email protected]>
ENV OVS_VERSION 2.7.0
ENV SUPERVISOR_STDOUT_VERSION 0.1.1
# Configure supervisord
RUN mkdir -p /var/log/supervisor/
ADD supervisord.conf /etc/
# Install supervisor_stdout
WORKDIR /opt
RUN mkdir -p /var/log/supervisor/
RUN mkdir -p /etc/openvswitch
RUN wget https://pypi.python.org/packages/source/s/supervisor-stdout/supervisor-stdout-$SUPERVISOR_STDOUT_VERSION.tar.gz --no-check-certificate && \
tar -xzvf supervisor-stdout-0.1.1.tar.gz && \
mv supervisor-stdout-$SUPERVISOR_STDOUT_VERSION supervisor-stdout && \
rm supervisor-stdout-0.1.1.tar.gz && \
cd supervisor-stdout && \
python setup.py install -q
# Get Open vSwitch
WORKDIR /
RUN wget https://s3-us-west-2.amazonaws.com/docker-ovs/openvswitch-$OVS_VERSION.tar.gz --no-check-certificate && \
tar -xzvf openvswitch-$OVS_VERSION.tar.gz && \
mv openvswitch-$OVS_VERSION openvswitch && \
cp -r openvswitch/* / && \
rm -r openvswitch && \
rm openvswitch-$OVS_VERSION.tar.gz

ADD configure-ovs.sh /usr/local/share/openvswitch/
# Create the database
RUN ovsdb-tool create /etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
# Put the OVS Python modules on the Python Path
RUN cp -r /usr/local/share/openvswitch/python/ovs /usr/lib/python2.7/site-packages/ovs
CMD ["/usr/bin/supervisord"]
15 changes: 15 additions & 0 deletions 2.7.0/configure-ovs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh
ovs_version=$(ovs-vsctl -V | grep ovs-vsctl | awk '{print $4}')
ovs_db_version=$(ovsdb-tool schema-version /usr/local/share/openvswitch/vswitch.ovsschema)

# give ovsdb-server and vswitchd some space...
sleep 3
# begin configuring
ovs-vsctl --no-wait -- init
ovs-vsctl --no-wait -- set Open_vSwitch . db-version="${ovs_db_version}"
ovs-vsctl --no-wait -- set Open_vSwitch . ovs-version="${ovs_version}"
ovs-vsctl --no-wait -- set Open_vSwitch . system-type="docker-ovs"
ovs-vsctl --no-wait -- set Open_vSwitch . system-version="0.1"
ovs-vsctl --no-wait -- set Open_vSwitch . external-ids:system-id=`cat /proc/sys/kernel/random/uuid`
ovs-vsctl --no-wait -- set-manager ptcp:6640
ovs-appctl -t ovsdb-server ovsdb-server/add-remote db:Open_vSwitch,Open_vSwitch,manager_options
96 changes: 96 additions & 0 deletions 2.7.0/supervisord.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
[unix_http_server]
file = /var/run/supervisor.sock

[inet_http_server]
port = 9001

[supervisord]
nodaemon=true
logfile = /var/log/supervisor/supervisord.log
logfile_maxbytes = 200KB
logfile_backups = 1
pidfile = /var/run/supervisord.pid
childlogdir = /var/log/supervisor

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl = unix:///var/run/supervisor.sock

[program:ovsdb-server]
command=/usr/local/sbin/ovsdb-server /etc/openvswitch/conf.db -v --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=ptcp:6640 --pidfile=ovsdb-server.pid
priority=10
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovs-vswitchd]
command=/usr/local/sbin/ovs-vswitchd -v --pidfile
priority=20
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovsdb-server-vtep]
command=/usr/local/sbin/ovsdb-server /etc/openvswitch/conf.db /etc/openvswitch/vtep.db -v --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=ptcp:6640 --pidfile=ovsdb-server.pid --log-file
autostart=false
priority=10
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovsdb-server-nb]
command=/usr/local/sbin/ovsdb-server /etc/openvswitch/ovnnb_db.db -v --remote=punix:/usr/local/var/run/openvswitch/ovnnb_db.sock --remote=ptcp:6641 --pidfile=ovsdb-server-nb.pid --log-file=/usr/local/var/log/openvswitch/ovsdb-server-nb.log
autostart=false
priority=30
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovsdb-server-sb]
command=/usr/local/sbin/ovsdb-server /etc/openvswitch/ovnsb_db.db -v --remote=punix:/usr/local/var/run/openvswitch/ovnsb_db.sock --remote=ptcp:6642 --pidfile=ovsdb-server-sb.pid --log-file=/usr/local/var/log/openvswitch/ovsdb-server-sb.log
autostart=false
priority=30
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovn-northd]
command=/usr/local/bin/ovn-northd -v --ovnnb-db=unix:/usr/local/var/run/openvswitch/ovnnb_db.sock --ovnsb-db=unix:/usr/local/var/run/openvswitch/ovnsb_db.sock --pidfile=ovn-northd.pid --log-file
autostart=false
priority=30
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovn-controller]
command=/usr/local/bin/ovn-controller -v --pidfile --log-file unix:/usr/local/var/run/openvswitch/db.sock
autostart=false
priority=30
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:ovs-vtep]
command=/usr/local/share/openvswitch/scripts/ovs-vtep --pidfile=/usr/local/var/run/openvswitch/ovs-vtep.pid br-vtep
autostart=false
priority=30
startsec=10
stderr_events_enabled=true
stdout_events_enabled=true

[program:configure-ovs]
command=/usr/local/share/openvswitch/configure-ovs.sh
priority=30
startsecs=0
exitcodes=0
autorestart=false
stderr_events_enabled=true
stdout_events_enabled=true

[eventlistener:stdout]
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <[email protected]>
ENV OVS_VERSION 2.4.0
ENV OVS_VERSION 2.7.0
ENV SUPERVISOR_STDOUT_VERSION 0.1.1
# Configure supervisord
RUN mkdir -p /var/log/supervisor/
Expand All @@ -22,7 +22,7 @@ RUN wget https://s3-us-west-2.amazonaws.com/docker-ovs/openvswitch-$OVS_VERSION.
mv openvswitch-$OVS_VERSION openvswitch &&\
cp -r openvswitch/* / &&\
rm -r openvswitch &&\
rm openvswitch-$OVS_VERSION.tar.gz
rm openvswitch-$OVS_VERSION.tar.gz
ADD configure-ovs.sh /usr/local/share/openvswitch/
# Create the database
RUN ovsdb-tool create /etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
Expand Down
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ OVS_VERSIONS = \
"2.3" \
"2.3.1" \
"2.3.2" \
"2.4.0"
"2.4.0" \
"2.7.0"

all: reconfigure build

Expand Down
39 changes: 37 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,26 @@ To run the container with the kernel module (assuming you have Linux Kernel 3.7+

modprobe openvswitch
docker run -itd --cap-add NET_ADMIN socketplane/openvswitch

While it's recommended to load the kernel module outside of the container, it is possible to load the kernel module from within:

cid=$(docker run -itd --cap-add NET_ADMIN --cap-add SYS_MODULE -v /lib/modules:/lib/modules socketplane/openvswitch)
docker exec $cid modprobe openvswitch
docker exec $cid supervisorctl restart ovs-vswitchd

To use openvswitch version 2.7.0+, you must load the kernel module compiled with
the source

cid=$(docker run -itd --cap-add NET_ADMIN --cap-add SYS_MODULE -v /lib/modules:/lib/modules socketplane/openvswitch)
docker exec $cid modprobe nf_nat_ipv6
docker exec $cid modprobe gre
docker exec $cid sh -c "insmod /usr/local/modules/*.ko"
docker exec $cid supervisorctl restart ovs-vswitchd

> Note 1: You need the "tun" kernel module loaded to run in userspace mode
> Note 2: Change the tag for a specific OVS version e.g socketplane/openvswitch:2.3.0

## Controlling The Processes
## Controlling The Processes

The processes can be controlled using `supervisorctl`

Expand Down Expand Up @@ -80,6 +89,9 @@ The follwing releases are supported:
- 2.1.3
- 2.3
- 2.3.1
- 2.3.2
- 2.4.0
- 2.7.0

### Creating bridges in Userspace Mode

Expand Down Expand Up @@ -109,6 +121,29 @@ Example using `ovs-vsctl` and `vtep-ctl`:
vtep-ctl add-port br-vtep eth0
vtep-ctl set Physical_Switch br-vtep tunnel_ips=192.168.0.3

### OVN Support

OVN support is enabled on OVS verisons greater than 2.6.0

docker exec $cid ovsdb-tool create /etc/openvswitch/ovnnb_db.db /usr/local/share/openvswitch/ovn-nb.ovsschema
docker exec $cid ovsdb-tool create /etc/openvswitch/ovnsb_db.db /usr/local/share/openvswitch/ovn-sb.ovsschema
docker exec $cid ovsdb-tool create /etc/openvswitch/vtep.db /usr/local/share/openvswitch/vtep.ovsschema
docker exec $cid supervisorctl start ovsdb-server-nb
docker exec $cid supervisorctl start ovsdb-server-sb
docker exec $cid supervisorctl start ovn-northd

docker exec $cid supervisorctl stop ovsdb-server
docker exec $cid supervisorctl start ovsdb-server-vtep
modprobe geneve
ovs-vsctl set Open_vSwitch . external_ids:ovn-remote="tcp:127.0.0.1:6642" \
external_ids:ovn-nb="tcp:127.0.0.1:6641" \
external_ids:ovn-encap-ip=127.0.0.1 \
external_ids:ovn-encap-type="geneve"

docker exec $cid supervisorctl start ovn-controller

ovn-sbctl show

## Building Containers

To build a container
Expand Down
1 change: 0 additions & 1 deletion configure-ovs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ ovs-vsctl --no-wait -- set Open_vSwitch . system-version="0.1"
ovs-vsctl --no-wait -- set Open_vSwitch . external-ids:system-id=`cat /proc/sys/kernel/random/uuid`
ovs-vsctl --no-wait -- set-manager ptcp:6640
ovs-appctl -t ovsdb-server ovsdb-server/add-remote db:Open_vSwitch,Open_vSwitch,manager_options

2 changes: 1 addition & 1 deletion latest
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.4.0
2.7.0