Slide 1

Slide 1 text

February 17, 2016 How NodeSource Uses Docker Docker San Mateo Meetup

Slide 2

Slide 2 text

© 2016 NodeSource Why so angry, dshaw? 2 Dan Shaw CTO and Co-Founder of NodeSource. Node.js startup veteran: 
 Storify, Spreecast, Voxer, ClassDojo. Podcast host of NodeUp. Created NodeBots Day, NodeBots SF, SFNode, and EnterpriseJS. Before Node.js did large-scale contracting
 in Defense, Health Care and Education. 
 Primarily Java backend and JavaScript frontend.

Slide 3

Slide 3 text

© 2016 NodeSource Confidential 3 NodeSource is the Enterprise Node.js company offering a suite of products and professional services explicitly focused on the needs of Enterprise users of Node.js.

Slide 4

Slide 4 text

© 2016 NodeSource Confidential 4 Enterprise Has Unique Requirements • Stable, Predictable Technology Foundation • Greater Insight into Application Behavior • Improved Security Controls • 24x7 Production Support and Concerns • “Don’t lock me in!” • “Don’t break my code!” Node.js in the Enterprise

Slide 5

Slide 5 text

© 2016 NodeSource Confidential Enterprise adoption
 of Node.js Node.js in the Enterprise

Slide 6

Slide 6 text

© 2016 NodeSource Confidential Docker in the Enterprise 6 The vast majority of these enterprise companies are at some stage of a Docker strategy

Slide 7

Slide 7 text

© 2016 NodeSource Confidential Docker at NodeSource 7 Docker at NodeSource • We run Docker infrastructure at scale • Early on identified the need to support legacy versions of Node.js running in Docker • Need a way to control which Node.js updates are automatically pulled into your Docker images

Slide 8

Slide 8 text

© 2016 NodeSource Confidential 8 Docker as a Distribution Channel

Slide 9

Slide 9 text

© 2016 NodeSource Confidential Docker at NodeSource 9 Version Pinning • An image for every version of Node • A repo for our supported Operating Systems • Aliases for tracking major and minor releases, as well as named releases (argon) • Examples: • nodesource/jessie:0.10.30 • nodesource/centos7:argon

Slide 10

Slide 10 text

© 2016 NodeSource Confidential Docker at NodeSource 10 The Challenge • We maintain hundreds of Docker Images designed with enterprise production use in mind • Each image is generated from a script and relies on network for installing Node and downloading dependencies • How can we ensure high levels of quality across all images? 100 200 300 400 500 600

Slide 11

Slide 11 text

© 2016 NodeSource Confidential Docker at NodeSource 11 Why Docker is Awesome Docker generates LAYERED artifacts for EVERY build.
 
 Nearly every command in a Dockerfile generates a layer. Every layer has a unique identifier and these layers are ‘flattened’ at runtime to create the Docker Container’s filesystem. fdf6bfe25e0e 50e0eff96b21

Slide 12

Slide 12 text

© 2016 NodeSource Confidential Docker at NodeSource 12 Running Tests with Docker We can take our layered artifact, and build our tests as layers on top of that artifact. If our tests successfully build, we know our artifact contains a stable enough environment for our tests to pass. fdf6bfe25e0e 50e0eff96b21 31eef4f70ddd 8c1e809aa12

Slide 13

Slide 13 text

© 2016 NodeSource Confidential Docker at NodeSource 13 Ship the Image If our tests pass, we ship the base image to the registry. This means the image you pull from the Docker Registry is the same exact image that we ran our tests on. fdf6bfe25e0e 50e0eff96b21 31eef4f70ddd 8c1e809aa12

Slide 14

Slide 14 text

© 2016 NodeSource Confidential Docker at NodeSource 14 Docker Testing • At NodeSource, we use an open source tool by Will Blankenship called Dante to power this workflow.
 Try it out: github.com/retrohacker/dante • For Docker tutorials, insight into our build process, and more, checkout our blog: nodesource.com/blog • Our N|Solid Docker Images:
 github.com/nodesource/docker-nsolid • Our Node Docker Images:
 github.com/nodesource/docker-node

Slide 15

Slide 15 text

Thank you. Dan Shaw [email protected] @nodesource