Copyright © MetaBrite, Inc. 2016
FlyingCloud
Building Docker Containers
with SaltStack
Adam Feuer and George V. Reilly
Copyright © MetaBrite, Inc. 2016
The Story of Lectern
• Lectern Web Service
• Receives uploaded images of receipts from CookBrite mobile app
• OCRs images using Tesseract + OpenCV
• Extracts data about purchases
• Deployed on AWS ElasticBeanstalk
• Could not get app to build on Amazon Linux
Copyright © MetaBrite, Inc. 2016
Lectern v1
• ElasticBeanstalk also supports Docker
• We built a Docker app on top of an Ubuntu image
• Solved the build problem. Sort of.
• Our build was a twisted, unmaintainable, monolithic mess of
shell scripts.
• Took an hour to build. Any failure reset the clock.
Copyright © MetaBrite, Inc. 2016
Lectern's old Docker image setup scripts
Copyright © MetaBrite, Inc. 2016
Lectern v2: with FlyingCloud
Copyright © MetaBrite, Inc. 2016
One Big Idea
• Use Configuration Management to build Docker images
• Configure rather than write code
• More understandable
• Reusable and repeatable
Copyright © MetaBrite, Inc. 2016
What is Docker?
• Lightweight Virtualization
• Run multiple containers on one host system
• Isolated process group for each container
• Shared kernel
• Run a different Linux OS in each container
• Image = filesystem snapshot
• Container = running image
Copyright © MetaBrite, Inc. 2016
What is SaltStack?
• Configuration management system
• "Automated system administration"
• Configuration, not scripts
• Declarative, not imperative
• Salt is implemented in Python
• Though you usually write Salt States in YAML
• We use Salt Masterless mode
• Configure system at build time; no runtime dependency on Salt
Copyright © MetaBrite, Inc. 2016
Two Ways to Build Docker Images
• Traditional
• Dockerfile: static list of commands
• Run commands inside container, then commit
• FlyingCloud
• Use SaltStack to update state of Docker image
• Easy to make layers
• Easy to run in Continuous Integration
Copyright © MetaBrite, Inc. 2016
Example App - layers overview
Copyright © MetaBrite, Inc. 2016
Example App - project and base layers
Copyright © MetaBrite, Inc. 2016
Example App - app layer
Copyright © MetaBrite, Inc. 2016
Example App - testrunner layer
Copyright © MetaBrite, Inc. 2016
FlyingCloud Demo
See https://github.com/cookbrite/flyingcloud/tree/master/examples/flask-web-app
FlyingCloud
● Use Configuration Management to build
layered Docker images
● An FC Layer can be made from any of these:
○ A Dockerfile, Salt states, or custom Python code
○ Do not confuse with Docker’s layer filesystem
● Layers are buildable and/or runnable
● Can be pushed to or pulled from a Docker repository
Copyright © MetaBrite, Inc. 2016
Kubernetes
• Google’s open source platform that automates
deployment, scaling, and operations of application
containers built on Docker images across clusters of hosts
• Our Kubernetes workflow for new services:
• Build Docker images with FlyingCloud
• Configure Kubernetes cluster
• Test cluster in Continuous Integration
• Deploy cluster to AWS
Copyright © MetaBrite, Inc. 2016
FlyingCloud is Open Source
• Source: https://github.com/cookbrite/flyingcloud
• Docs: http://flyingcloud.readthedocs.org
• PyPI: https://pypi.python.org/pypi/flyingcloud/
• Mail: https://groups.google.com/group/flyingcloud-users
• Apache License
Contributors welcome! Especially:
• SaltStack users
• Ansible users
Copyright © MetaBrite, Inc. 2016
We are organizing the world's product information
We’re Hiring! Located in Pioneer Square.
• Back-end devs. We're a Python shop.
• Android devs
• iOS devs
• Data scientists
Contact
• adam@metabrite.com or george@metabrite.com

More Related Content

PDF
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
PDF
Making it Easier to Contribute to Open Source Projects Using Docker Container...
PDF
How to build your containerization strategy
PDF
"Workstation Up" - Docker Development at Flow by Mike Roth
PDF
DockerCon SF 2015: Ben Golub's Keynote Day 1
PDF
Dockercon 2018 Announcement
PDF
Netflix and Containers: Not A Stranger Thing
PPTX
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Making it Easier to Contribute to Open Source Projects Using Docker Container...
How to build your containerization strategy
"Workstation Up" - Docker Development at Flow by Mike Roth
DockerCon SF 2015: Ben Golub's Keynote Day 1
Dockercon 2018 Announcement
Netflix and Containers: Not A Stranger Thing
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services

What's hot (20)

PDF
Use Docker to Deliver Cognitive Services Running Cross Platform and Multi Clo...
PPTX
Docker Serverless
PDF
Building a Secure Supply Chain with Docker
PPTX
Going Serverless with Kubeless In Google Container Engine (GKE)
PPTX
Continuous Delivery with Jenkins
PDF
DCSF19 Containers for Beginners
PDF
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
PPTX
Devoxx 2015 - Web Application Development using Grails and Docker
PDF
Efficient Parallel Testing with Docker by Laura Frank
PPTX
Docker - A container full of Chocolatey
PDF
KubeCon EU 2016 Keynote: Kubernetes State of the Union
PDF
Become a Docker Power User With Microsoft Visual Studio Code
PDF
Current Status of Kubernetes-powered Docker for Mac Platform
PDF
DCSF 19 Building Your Development Pipeline
PPTX
Webinar: High velocity deployment with google cloud and weave cloud
PPTX
Continuous Delivery with Jenkins & Kubernetes @ Sky
PDF
Your Auto-Scaling Bot - Volkan Tufecki
PPTX
Docker Online Meetup: Announcing Docker CE + EE
PPTX
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
PPTX
DevOps best practices with OpenShift
Use Docker to Deliver Cognitive Services Running Cross Platform and Multi Clo...
Docker Serverless
Building a Secure Supply Chain with Docker
Going Serverless with Kubeless In Google Container Engine (GKE)
Continuous Delivery with Jenkins
DCSF19 Containers for Beginners
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
Devoxx 2015 - Web Application Development using Grails and Docker
Efficient Parallel Testing with Docker by Laura Frank
Docker - A container full of Chocolatey
KubeCon EU 2016 Keynote: Kubernetes State of the Union
Become a Docker Power User With Microsoft Visual Studio Code
Current Status of Kubernetes-powered Docker for Mac Platform
DCSF 19 Building Your Development Pipeline
Webinar: High velocity deployment with google cloud and weave cloud
Continuous Delivery with Jenkins & Kubernetes @ Sky
Your Auto-Scaling Bot - Volkan Tufecki
Docker Online Meetup: Announcing Docker CE + EE
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
DevOps best practices with OpenShift
Ad

Similar to FlyingCloud: Building Docker Containers with SaltStack (20)

PPTX
Docker introduction (1)
PPTX
Docker introduction (1)
PPTX
Docker introduction (1)
PDF
Cicd.pdf
PPTX
Docker 101 - Nov 2016
PPTX
Docker
PDF
DEVOPS UNIT 4 docker and services commands
PPTX
UNITde II - Docker-Containerization.pptx,
PDF
Rome .NET Conference 2024 - Remote Conference
PDF
C219 - Docker and PureApplication Patterns: Better Together
PDF
Docker slides
PPTX
Docker 101 describing basic docker usage
PDF
Rails Applications with Docker
PPTX
ma-formation-en-Docker-jlklk,nknkjn.pptx
PDF
Containers and Microservices for Realists
PDF
Containers and microservices for realists
PPTX
.docker : how to deploy Digital Experience in a container drinking a cup of c...
PPTX
PPTX
docker : how to deploy Digital Experience in a container drinking a cup of co...
PPTX
Dockerize the World
Docker introduction (1)
Docker introduction (1)
Docker introduction (1)
Cicd.pdf
Docker 101 - Nov 2016
Docker
DEVOPS UNIT 4 docker and services commands
UNITde II - Docker-Containerization.pptx,
Rome .NET Conference 2024 - Remote Conference
C219 - Docker and PureApplication Patterns: Better Together
Docker slides
Docker 101 describing basic docker usage
Rails Applications with Docker
ma-formation-en-Docker-jlklk,nknkjn.pptx
Containers and Microservices for Realists
Containers and microservices for realists
.docker : how to deploy Digital Experience in a container drinking a cup of c...
docker : how to deploy Digital Experience in a container drinking a cup of co...
Dockerize the World
Ad

Recently uploaded (20)

PPTX
Foundations of Marketo Engage: Nurturing
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PPTX
HackYourBrain__UtrechtJUG__11092025.pptx
PDF
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
PPTX
Chapter 1 - Transaction Processing and Mgt.pptx
PPTX
R-Studio Crack Free Download 2025 Latest
PPTX
string python Python Strings: Literals, Slicing, Methods, Formatting, and Pra...
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PPTX
Human Computer Interaction lecture Chapter 2.pptx
PPTX
Human-Computer Interaction for Lecture 1
PPTX
ERP Manufacturing Modules & Consulting Solutions : Contetra Pvt Ltd
PPT
3.Software Design for software engineering
PPTX
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
PPTX
Presentation by Samna Perveen And Subhan Afzal.pptx
PPTX
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
PPTX
Plex Media Server 1.28.2.6151 With Crac5 2022 Free .
PPTX
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
PDF
AI-Powered Fuzz Testing: The Future of QA
PDF
Workplace Software and Skills - OpenStax
PPTX
Odoo ERP for Injection Molding Industry – Optimize Production & Reduce Scrap
Foundations of Marketo Engage: Nurturing
Practical Indispensable Project Management Tips for Delivering Successful Exp...
HackYourBrain__UtrechtJUG__11092025.pptx
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
Chapter 1 - Transaction Processing and Mgt.pptx
R-Studio Crack Free Download 2025 Latest
string python Python Strings: Literals, Slicing, Methods, Formatting, and Pra...
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
Human Computer Interaction lecture Chapter 2.pptx
Human-Computer Interaction for Lecture 1
ERP Manufacturing Modules & Consulting Solutions : Contetra Pvt Ltd
3.Software Design for software engineering
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
Presentation by Samna Perveen And Subhan Afzal.pptx
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
Plex Media Server 1.28.2.6151 With Crac5 2022 Free .
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
AI-Powered Fuzz Testing: The Future of QA
Workplace Software and Skills - OpenStax
Odoo ERP for Injection Molding Industry – Optimize Production & Reduce Scrap

FlyingCloud: Building Docker Containers with SaltStack

  • 1. Copyright © MetaBrite, Inc. 2016 FlyingCloud Building Docker Containers with SaltStack Adam Feuer and George V. Reilly
  • 2. Copyright © MetaBrite, Inc. 2016 The Story of Lectern • Lectern Web Service • Receives uploaded images of receipts from CookBrite mobile app • OCRs images using Tesseract + OpenCV • Extracts data about purchases • Deployed on AWS ElasticBeanstalk • Could not get app to build on Amazon Linux
  • 3. Copyright © MetaBrite, Inc. 2016 Lectern v1 • ElasticBeanstalk also supports Docker • We built a Docker app on top of an Ubuntu image • Solved the build problem. Sort of. • Our build was a twisted, unmaintainable, monolithic mess of shell scripts. • Took an hour to build. Any failure reset the clock.
  • 4. Copyright © MetaBrite, Inc. 2016 Lectern's old Docker image setup scripts
  • 5. Copyright © MetaBrite, Inc. 2016 Lectern v2: with FlyingCloud
  • 6. Copyright © MetaBrite, Inc. 2016 One Big Idea • Use Configuration Management to build Docker images • Configure rather than write code • More understandable • Reusable and repeatable
  • 7. Copyright © MetaBrite, Inc. 2016 What is Docker? • Lightweight Virtualization • Run multiple containers on one host system • Isolated process group for each container • Shared kernel • Run a different Linux OS in each container • Image = filesystem snapshot • Container = running image
  • 8. Copyright © MetaBrite, Inc. 2016 What is SaltStack? • Configuration management system • "Automated system administration" • Configuration, not scripts • Declarative, not imperative • Salt is implemented in Python • Though you usually write Salt States in YAML • We use Salt Masterless mode • Configure system at build time; no runtime dependency on Salt
  • 9. Copyright © MetaBrite, Inc. 2016 Two Ways to Build Docker Images • Traditional • Dockerfile: static list of commands • Run commands inside container, then commit • FlyingCloud • Use SaltStack to update state of Docker image • Easy to make layers • Easy to run in Continuous Integration
  • 10. Copyright © MetaBrite, Inc. 2016 Example App - layers overview
  • 11. Copyright © MetaBrite, Inc. 2016 Example App - project and base layers
  • 12. Copyright © MetaBrite, Inc. 2016 Example App - app layer
  • 13. Copyright © MetaBrite, Inc. 2016 Example App - testrunner layer
  • 14. Copyright © MetaBrite, Inc. 2016 FlyingCloud Demo See https://github.com/cookbrite/flyingcloud/tree/master/examples/flask-web-app
  • 15. FlyingCloud ● Use Configuration Management to build layered Docker images ● An FC Layer can be made from any of these: ○ A Dockerfile, Salt states, or custom Python code ○ Do not confuse with Docker’s layer filesystem ● Layers are buildable and/or runnable ● Can be pushed to or pulled from a Docker repository
  • 16. Copyright © MetaBrite, Inc. 2016 Kubernetes • Google’s open source platform that automates deployment, scaling, and operations of application containers built on Docker images across clusters of hosts • Our Kubernetes workflow for new services: • Build Docker images with FlyingCloud • Configure Kubernetes cluster • Test cluster in Continuous Integration • Deploy cluster to AWS
  • 17. Copyright © MetaBrite, Inc. 2016 FlyingCloud is Open Source • Source: https://github.com/cookbrite/flyingcloud • Docs: http://flyingcloud.readthedocs.org • PyPI: https://pypi.python.org/pypi/flyingcloud/ • Mail: https://groups.google.com/group/flyingcloud-users • Apache License Contributors welcome! Especially: • SaltStack users • Ansible users
  • 18. Copyright © MetaBrite, Inc. 2016 We are organizing the world's product information We’re Hiring! Located in Pioneer Square. • Back-end devs. We're a Python shop. • Android devs • iOS devs • Data scientists Contact • [email protected] or [email protected]