Sreenivas Makam presented an overview of Docker 1.9 features at a Docker Meetup in Bangalore on December 5, 2015. Key features included multi-host networking going to production, Docker Swarm going to production, storage plugin improvements, and better integration of Docker orchestration tools like Compose and Swarm. The presentation covered Docker's container networking model, libnetwork, Overlay networking, volumes, Swarm, and other changes in Docker 1.9 like Compose support for Windows and integration with Toolbox. It concluded with a demo of a multi-container counter app using Docker CLI, Compose, and Swarm.
2. About me
• Senior Engineering Manager at Cisco Systems
Data Center group
• Like to follow SDN and Cloud related
Opensource projects and write about it.
• Personal blog can be found at
https://sreeninet.wordpress.com/ and my hacky
code at https://github.com/smakam
• You can reach me on LinkedIn at
https://in.linkedin.com/in/sreenivasmakam
4. Docker 1.9 feature summary
• Multi-host networking going to production
• Docker Swarm going to production
• Storage plugin improvements
• Docker Compose, Machine enhancements
• Better Docker Compose, Swarm, Machine integration
• Docker orchestration tools(Compose, Swarm, Machine)
working well with multi-host networking
• Registry, Toolbox and Docker engine enhancements
• Docker content trust with Ubico hardware
key(Experimental)
• General Bug fixes
5. Docker Container networking
model(CNM)
• Docker container attaches to the Network using the Endpoint or Service.
• Multiple endpoints share a network. In other words, only endpoints located in
same network can talk to each other.
• Sandbox is the network namespace where the Container resides.
6. Docker Libnetwork
• Libnetwork is the networking library that’s separated out from Docker engine
and it’s an implementation of CNM.
• Drivers implement the APIs provided by libnetwork.
• Docker provides native drivers like Bridge, Overlay.
• Bridge driver allows connectivity between containers in a single host. Overlay
driver allows for connectivity across hosts.
• Remote drivers are provided as plugins from different vendors like Weave,
Calico, Cisco.
7. Docker Overlay networking
Web
H1
Db
H2
Consul
Network n1
docker $(docker-machine config mh-keystore) run -d
-p "8500:8500"
-h "consul"
progrium/consul -server -bootstrap
docker-machine create -d virtualbox
--engine-opt="cluster-store=consul://$(docker-
machine ip mh-keystore):8500"
--engine-opt="cluster-advertise=eth1:2376"
mhs-demo1
docker-machine create -d virtualbox
--engine-opt="cluster-store=consul://$(docker-
machine ip mh-keystore):8500"
--engine-opt="cluster-advertise=eth1:2376"
mhs-demo2
docker network create --driver
overlay n1
docker run -ti --name=web --
net=n1 busybox
docker run -ti --name=db --net=n1
busybox
8. Docker volume
• Enhanced volume plugin in 1.9.
• Volumes are used to store data that’s outside scope of
container image like database.
• Supported volume plugins – GlusterFS, Ceph, Flocker
Example:
docker run -ti -v myvolume:/data --volume-
driver=flocker busybox sh
• Myvolume in host machine gets mounted to /data
with Flocker volume driver.
• Multiple containers can share myvolume
9. Docker Swarm
• Swarm is production ready with 1.9.
• Swarm is integrated with docker-machine, docker-compose, multi-host
networking and docker volumes.
• Tested with scale(1000 nodes and 30000 containers)
10. Other changes in 1.9
• Docker compose(release 1.5) works with Windows
and with Toolbox.
• Docker compose works with multi-host networking.
• Docker Toolbox for Mac and Windows has all Docker
orchestration tools integrated.
• Docker registry has a new Google storage driver and
other bug fixes.
• Docker engine has some minor features and bug fixes.
• Docker content trust has hardware key
support(experimental release) in collaboration with
Yubico.
11. Demo (Multi-container counter app)
Web Mongo
Swarm
Compose
Web
client
Docker CLI
H2
H1
web:
image: bfirsh/compose-mongodb-demo
environment:
- "MONGO_HOST=counter_mongo_1"
- "constraint:node==mhs-demo0"
ports:
- "80:5000"
mongo:
image: mongo
Consul
docker-compose --x-networking --project-
name=counter up -d