We will have two parts to this meetup - in the first part we will cover the lay of the land for how networks are setup, configured and managed for containers and follow that up with a hands-on session.
6:00p-8:00p :
Introduction to Container Networking - DJ
Pipeworks - Jérôme Petazzoni
Docker + OpenvSwitch demo - Sriram
Handson Instructions: https://bitbucket.org/snrism/containet
Q&As: Online
Food: We will have pizzas and sodas.
Technical information: We will provide usb sticks with the required scripts. For this hands-on, only pre-req is to install "vagrant" in your laptop.
12. Configuring container IP addresses
Container 1 Container 2
docker0
172.18.42.10 172.18.42.11
Container 3 Container 4
docker0
172.18.42.12 172.18.42.13
172.18.42.1 172.18.42.2
Host 1 Host 2
eth1 eth1
10.0.0.3 10.0.0.4
Start a container w/o using docker's default network config: docker run -d --net=none -t -i ubuntu /bin/bash
Record the Container ID that just started: docker ps
Configure IP addresses on eth0: ./start-container.sh <container-id> <ip-addr>
13. Experiment 1
Connect hosts via OVS (docker bridge + OVS)
Container 1 Container 2
docker0
172.18.42.10 172.18.42.11
Container 3 Container 4
docker0
172.18.42.12 172.18.42.13
172.18.42.1 172.18.42.2
Host 1 Host 2
eth1 eth1
10.0.0.3 10.0.0.4
Setup GRE Tunnel: ./ovs-tunnel-setup.sh
Setup IPTables for containers to reach other hosts: ./iptables.sh
Start a container w/o using docker's default network config: docker run -d --net=none -t -i ubuntu /bin/bash
Record the Container ID that just started: docker ps
Configure IP addresses on eth0: ./start-container.sh <container-id> <ip-addr>
br0
(ovs) gre0
br0
(ovs)gre0
14. Experiment 2
Connect hosts via OVS (direct OVS)
Container 1 Container 2 Container 3 Container 4
Host 1 Host 2
eth1 eth1
10.0.0.3 10.0.0.4
Start a container w/o using docker's default network config: docker run -d --net=none -t -i ubuntu /bin/bash
Record the Container ID that just started: docker ps
Configure eth1 and attach to OVS: ./connect-container.sh <container-id> <ip-addr>
br0
(ovs) gre0
br0
(ovs)gre0
15. Experiment 3
Connect hosts via OVS (direct OVS)
Use VLAN tags to segregate containers
Container 1 Container 2 Container 3 Container 4
Host 1 Host 2
eth1 eth1
10.0.0.3 10.0.0.4Start a container w/o using docker's default network config: docker run -d --net=none -t -i ubuntu /bin/bash
Record the Container ID that just started: docker ps
Configure eth1 and attach to OVS: ./connect-container.sh <container-id> <ip-addr> <vlan-tag>
br0
(ovs) gre0
br0
(ovs)gre0
16. Advanced Tools
Open Source Tools Description
Pipework
https://github.com/jpetazzo/pipework
Better configuration capabilities.
Works well with LXC and docker
Weave
https://github.com/zettio/weave
Simplifies connecting containers across multiple hosts.
Lorispack
https://github.com/lorispack/loris
Heterogeneous options to connect containers across hosts
Kubernetes
https://github.
com/GoogleCloudPlatform/kubernetes
Container cluster manager
Flannel
https://github.com/coreos/flannel
Overlay network that gives subnet for each machine with kubernetes
Openstack Icehouse – Orchestrate docker containers via heat templates