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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add OVS 2.7.0 by huikang · Pull Request #17 · socketplane/docker-ovs · GitHub
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 numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
FROM socketplane/busybox:latest
MAINTAINER The SocketPlane Team <support@socketplane.io>
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -1 +1 @@
2.4.0
2.7.0