In this talk we review what Docker is and why it's important to Developers, Admins and DevOps.
We also cover the following topics:
- Using Docker to Orchestrate a multi container application (Flask + MongoDB)
- Injecting HAProxy and other production requirements as we deploy to production
- Scaling the Web and MongoDB cluster to grow to meet demand
This presentation includes an interactive demo showcasing the core Docker components (Machine, Engine, Swarm and Compose) as well as some of Docker's new components (libnetowrk, runC) from the experimental branch along with MongoDB. We hope you will see how much simpler Docker can make building and deploying multi-node applications.
<hr>
<b>What's next?</b>
See how you can push MongoDB performance to meed the needs of your mission-critical app with our best practices for MongoDB operations.
<a>Read the guide</a>
3. Docker Mission – Make the Internet Programmable
3
Build
Ship
Run
Open
Standards
Plumbing
Pla6orm
Solu8ons
Engine
Machine
ComposeSwarm
Distribution
Image specContainer run-time spec
RunC
Notary
Docker
Trusted
Registry
Project
"Orca"
4.
Open
Container
Ini-a-ve
RunC
notary
4
Open Standards & Plumbing
5. Open Container Initiative (OCI)
Coalition of industry leaders join forces to eliminate fragmentation
• Form a vendor-neutral, open source governance model under the Linux
Foundation
• Establish common standards for container format and runtime
• Docker donated its container format, runtime and associated specifications
• Appoint maintainers for the libcontainer project
5
h3p://www.opencontainers.org/
7. Networking
8
Before
• Inflexible
• Single host
• Limited to one network
X
• Container SDN
• Distributed networking
• Portable across networks
• Plug ins to broad ecosystem
ABer
8. Plugins
Pluggable Architecture to extend Docker functionality
• Introducing Networking and Volume plugins
• For Users: Portability and choice for developers and ops
• For Partners: Easily integrate and access Docker users
• Collaboration with Cluster HQ, Glider Labs, Weave
9
Networking
Volumes
Docker
Engine
Plug
ins
>
docker
Docker client
17. Part Two: Development through to Production
• Build & Run an App in Development
– Python + MongoDB
• Deploy to a Swarm cluster in Production
– Scale Web services
• Deploy new MongoDB Cluster in Production
18. Lets build an App!
19
web
mongodb
Development
python / flask
19. Scale in Production
20
web2
web3
web4
webN
mongos
cfg3
cfg2
cfg1
web
web1
mongodb
Development
…
Production
HA
Proxy
rs1a
rs1b
rs1c
rs2a
rs2b
rs2c
24. Deploy a sharded cluster
25
web2
web3
web4
webN
mongos
cfg3
cfg2
cfg1
web
web1
mongodb
Development
…
Production
mongodb
HA
Proxy
rs1a
rs1b
rs1c
rs2a
rs2b
rs2c
25. Migrate to the new cluster
27
web2
web3
web4
webN
mongos
cfg3
cfg2
cfg1
web
web1
mongodb
Development
…
Production
mongodb
HA
Proxy
rs1a
rs1b
rs1c
rs2a
rs2b
rs2c
27. Storage: Inside or outside the container?
Inside
• Encapsulation of Concerns
29
Host
daemon
container
Host
daemon
container e.g.
SSD
e.g.
EBS
Outside
• Separation of concerns
• Storage Features (e.g. snapshots)
/data/db
/mnt/xx:/data/db
28. Summary
• Define
Container,
their
contents
and
how
they
work
together
once
• Deploy
the
same
images
in
Dev,
Pre-‐Prod
and
Produc-on
across
PlaZorms
One
solu-on
from
Dev
-‐>
Produc-on
• Ops
define
the
whitelisted
images,
security
policies
etc.
• Dev
use
approved
images
to
build
upon
• Eliminate
the
complexity
(and
cost)
of
deployment
Running
Docker
&
MongoDB
in
Produc-on
30