28
An introduction to Docker

An Introduction to Docker

Embed Size (px)

Citation preview

An introduction to Docker

About MeBrayden Winterton● Computer Science Major at BYU● Head of BYU Production Services

Development TeamHow I use docker:● Development environments● CI/CD pipeline● Clustered Production Environments

Survey

● Who here has heard of Docker?● Who has used Docker before?● Who uses Docker as part of their daily

workflow?

What is Docker?

In simpler times..

Server

Host OS

Lamp Stack

LAMP

Bins/Libs

Today

Matrix from Hell

We’ve seen this before….

Solution?

Docker: a container for applications

Docker fixes the Matrix from Hell!

What is Docker?Docker Engine:● CLI● Docker Daemon● Runs the containersDocker Hub:● Sharing applications/containers● Used in automating workflows● Much like Github

Why?

Why developers love it:● Devs can build apps using any language and toolchain● Build once, run anywhere● Docker creates a clean portable runtime for the app● No more worries about missing dependencies● Peace of mind knowing that apps will not conflict (nor

will their dependencies)● Compatibility concerns go out the window● Automated testing, building, packaging, etc becomes

much more simple. ● Fast, lightweight runtime environments

Why sysadmins love it:

● Standardized, repeatable environments● No more “works on my machine”● Abstract application from OS and Infrastructure● Flexibility in where to run the application● Deployment driven by business priorities● Rapid scale-up and scale-down to respond to load● Eliminate inconsistencies between environments● Increase reliability and speed of CI/CD systems● TL;DR: Deploy any app, to any infrastructure

Want to separate concerns?

Development:● Worries about what’s

inside the container:o Codeo Librarieso Datao Applications

● Assumes that all environments look the same

Operations:● Worries about what’s

outside the container:o Loggingo Monitoringo Configurations

● All containers start, stop, reload, and accept configuration the same way

Want to combine concerns?

● Give developers access to existing resources

● Allow developers to deploy built containers to infrastructureo Either using Continuous Deployment or a

standardized method● Make the developers wake up in the middle

of the night to fix it

Isn’t this like using a VM?

Why are containers lighter?

AKA: Demo time

Let’s see it!

Running a real application in a container, and port management

Ok that was cute, lets see a real example

Volumes

Image modification

Linking Containers

Getting multiple containers to work together

Orchestration

Questions?

Brayden Winterton● Twitter: @braydenw● Email: [email protected]● Github: bwinterton