Share
Embed
Docker: From Dev to Production
Part 2 of 3 in a series of webinars for CloudAcademy. You can find a summary of the webinar with video in my wrap up post: http://cloudacademy.com/blog/docker-deployment-dev-production/
Adam Hawkins
November 08, 2016
Transcript
21 slides
-
Plan My Goal: Familiarize you with production deployment options Presentation
& Demo ~10 minutes for Q & A. Please put your questions in the chat. -
Hi! I’m Adam Hawkins • Site Reliability Engineering Team Lead
at Saltside • Manages ~350 containers in production • 2+ years of Docker experience • “Introduction to Docker” course lecturer • @adman65 • http://blog.slashdeploy.com -
One Size Does Not Fit All How big is your
app? 1 web server? 10 services? 100 containers? -
Contenders • Golden Images • Heroku • Docker Cloud •
Docker Swarm • Docker Data Center / UCP • ECS • Kubernetes / GKE • Mesos / DCOS -
Golden Images • Fully bake an image (VM, AMI etc)
to run appropriate Docker image • [pro] Supports cloud & on-prem infrastructures • [pro] Easy to start with; scales up nicely to disconnected services • [pro] Easy horizontal & vertical scaling • [con] Requires infrastructure engineering experience • [con] Rollout times depends on your build and scaling process -
Heroku • Full featured PaaS • [pro] Well established feature
set with many integrations • [pro] DBaaS offering (Heroku PostgreSQL and more) • [con] Cost • [pro] Easy access to logs, environment variables • [pro] Easy horizontal and vertical scaling • [con] Few geographical regions • [pro] Easily connect to CI for continuous deployment -
Docker Cloud • You provide computer, Docker provides orchestration •
[pro] First party offering • [pro] You provide compute (via bare metal or cloud providers) • [con] You provide compute • [pro] Easily connect to CI for continuous deployment • [con] Double charge; you pay service and infrastructure costs -
Docker Swarm • First party cluster orchestration • [pro] First
party offering • [pro] You provide compute (via bare metal or cloud providers) • [con] Brand new as of 1.12.0; untested • [pro] Supports docker client operations • [pro] Run on your own infrastructure (cloud or on-prem) -
Docker Data Center / UCP • First party offering •
[pro] Setups authentication, registry, and swarm out of the box • [con] Lags behind the Docker daemon • [con] 1.x has issues with multiple availability zones • [pro] Run on your own infrastructure (cloud or on-prem) • [con] Pricing ($150 a month per node) -
AWS Elastic Container Service • Task scheduling for containers •
[pro] Runs on AWS • [con] Not managed; you provision instances and run their agent • [con] Low level functionality; rough around the edges • [pro] Higher level tools like Empire or Convox smooth out the edges -
Kubernetes / Google Container Engine • Container as a Service
• [pro] Works for all size applications • [pro] Run on your own infrastructure (cloud or on-prem) • [pro] One-click cloud offering via Google Container Enginer • [con] Requires learning an entirely new system • [con] Does not support docker clients • [con] Containers only • [pro] Powerful base to build one (OpenShift runs on Kubernetes) • [pro] Rolling deploys -
Mesos / DCOS • Distributed systems kernel • [pro] Works
for all size applications • [pro] Run on your own infrastructure (cloud or on-prem) • [pro] One-click cloud offering via Microsoft Azure • [con] Requires learning an entirely new system • [con] Does not support docker clients • [pro] For containers and non-containers • [pro] Paid or open source offerings • [pro] Multiple deployment strategies via frameworks -
Recommendations • Heroku for small and-non distributed applications (really hard
to beat Heroku’s features) • Golden Images or something built on ECS (e.g. Empire/Convox) for small distributed applications or you want to run your own infrastructure • Kubernetes for container native applications or large distributed systems (GKE if don’t want to run infrastructure) • Mesos / DCOS if you need to support an entire organization with a mix containerized & non-containerized work loads -
Demo Time! Create first Kubernetes Pod Expose pods with a
Kubernetes service