Docker what - Frank Maounis
-
Upload
frank-maounis -
Category
Technology
-
view
146 -
download
0
Transcript of Docker what - Frank Maounis
Who am I
- I am @maounis- I have co-founded Papaki, TopHost- I think I know a few things about containers- I have a lot to learn about Docker- But I like to try all kinds of new crazy things like
Arduino, Raspberry Pi, Core, Bitcoin, Docker…- And I think Docker will help us build better
applications and new cool tools
Docker allows you to
Take any Linux program, and put it in a “container” - Web apps and services like Go, Node, PHP- Data Stores: SQL, NoSQL, big data
(Cassandra, ElasticSearch, Hadoop, Mongo, MySQL, Redis...)
- Other server-y things (Mesos, Zookeeper...)- Command-line tools (AWS CLI, GCutil...)
Win/FreeBSD/OS X coming soon (now use Wine)
Docker container
Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in.
But how is this different from VMs
Containers have similar resource isolation and allocation benefits as virtual machines but a different architectural approach allows them to be much more portable and efficient.
Because now you can
Deploy something:- And if it works locally, it will work on the server
with exactly the same behavior- Regardless of versions- Regardless of distros- Regardless of dependencies
How does this help us devs?
Well when your app is in Docker containers, you don’t have to worry about setting up and maintaining different environments or different tooling for each language.
Focus on creating new features, fixing issues and shipping software.
What about ops?
Docker creates a common framework for developers and sysadmins to work together on distributed applications
Containers look like microservices
The principle is:- “Do one thing, and do it well”- One container for the web server- One container for the database- One container for logging- etc.
But how they communicate?
Containers can share almost anything, selectively:- files
(logs, data at rest, audit)- network
(traffic routing and analysis, monitoring)- process space, memory
(process tracing and debugging)
Microservices
A style of software architecture:
Break
BIG monolithic
applications
down into many small services
Microservices with containers
E-commerce example:- web front-end- catalog of products- inventory/stock management- shipping calculator- payment processor- billing/invoicing- user profiles
Is this really working?
YES!- Docker users on average ship software 7X more
after deploying Docker in their environment. More frequent updates provide more value to your final users faster.
Why Microservices are good?
- Use right language/tool for different services - Replace services easily- Less coordination required - Enables effective ownership of services- Promotes many small teams instead of one big
* smaller teams = less communication overhead* see Jeff Bezos “two-pizza” rule
My humble personal thoughts
- Solving development/production issues is just the first application of Docker
- Docker will eventually enable the creation of distributed applications in Micro-Data Centers
- Services will be geo-distributed to hosts near you without you knowing it
Yes Docker is Open Source
- Public GitHub repository (github.com/docker)- Bug reports: GitHub issue tracker- Mailing lists / IRC channels
- Docker Governance Advisory Board (elected by contributors)