SlideShare a Scribd company logo
Common primitivesCommon primitives
in Dockerin Docker
environmentsenvironments
Alex Giurgiu (alex@giurgiu.io)
DockerDocker
isis
great!great!
Until you want to deploy yourUntil you want to deploy your
new application in production...new application in production...
on multiple machineson multiple machines
You thought you have thisYou thought you have this
When in fact you have thisWhen in fact you have this
We are trying to get hereWe are trying to get here
This problem is intenselyThis problem is intensely
debated at the moment...debated at the moment...
with many competingwith many competing
projects...projects...
thatthat approachapproach it in oneit in one
way or another...way or another...
Just look atJust look at
Mesos
Google's Omega
Kubernetes
CoreOS
Centurion
Helios
Flynn
Deis
Dokku
etc.
What do they have inWhat do they have in
common?common?
they abstract a set of machines, making
it look like its one machine
they provide a set of primitives that deal
with resources on that set of machines
From this
To this
Why not use one of the mentioned
solutions?
Most of them require you to write your
application/workload in a custom way. To
totally give in to their way of doing things.
But (I)we want to run the old/legacy
applications, while gaining the same
advantages
Our goals are similar
standardize the way we interact with our infrastructure
treat all machines in a similar way
achieve reliability, through software and not through
hardware
achieve reproducible infrastructure
reduce manual labor
Our building blockOur building block
Container
Inputs
(binaries,code,
packages, etc)
External services
Build process
State
Common primitivesCommon primitives
"common enough that a generalized solution can be devised"
"should be applicable to both in-house or external applications"
Common primitivesCommon primitives
persistence
service discovery
monitoring
logging
authentication and authorization
image build service
image registry
(state) Persistence(state) Persistence
PersistencePersistence
one of the hardest problems to solve in a clean and
scalable way
should be transparent for the application
most people just avoid Docker-izing services that
require persistence
LocalLocal
- bring the state locally,
relative to where the
container runs
- should be taken care by
your deployment/PaaS
solution
- advantages: write/read
speeds, reliability
- disadvantages: potentially
slow deploys, complex
orchestration
RemoteRemote
- keep state remotely and
"mount" it where the
application is deployed
- can be done by your PaaS
solution or by the container
itself
- advantages: simpler to
orchestrate, fast deploys
- disadvantages: write/read
speeds, (un)reliability
Projects that try toProjects that try to
solve persitencesolve persitence
Flocker - https://github.com/ClusterHQ/flocker
?
Flocker way(local)Flocker way(local)
Service discoveryService discovery
and registrationand registration
Service discoveryService discovery
most worked on aspect of Docker orchestration
quite a few different open source projects that tackle
this problem
multiple approaches: environment variables,
configuration files, key/value stores, DNS,
ambassador pattern etc.
Common primitives in Docker environments
Open source projectsOpen source projects
Consul (my personal favorite)
etcd (CoreOS's favorite)
ZooKeeper (many people's favorite)
Eureka (Netflix's favorite)
Smartstack (Airbnb's favorite)
...
(service discovery)
choose a solution that can accommodate both legacy
and custom applications: discovery using DNS or
HTTP
choose a solution that can be manipulated using a
common protocol: HTTP
make sure to remove died out applications from your
SD system
Ideally it should have no single point of failure
Consul satisfies all the above requirements
How to do itHow to do it
(service discovery)
ConsulConsul
(service discovery)
can be queried over DNS
and HTTP
distributed key:value store
consistent and fault
tolerant(RAFT)
fast convergence(SWIM)
Service checks
Service registrationService registration
Can be done
by your application - simple HTTP call to Consul
a separate script/application inside your container
another container that inspects running containers -
progrium/registrator
Most importantly, each container should provide metadata
about the service its running.
MonitoringMonitoring
MonitoringMonitoring
2 perspectives
service monitoring - can be done as in pre-Docker
times
container monitoring
Service monitoringService monitoring
(monitoring)
can be done with tools like Nagios
your monitoring system should react dynamically to
services that start and stop
containers should define what needs to be monitored
services should register themselves in the monitoring
system
Consul supports service checks
Container monitoringContainer monitoring
(monitoring)
monitor container state(up/down) - Docker event API
provides this information
gather performance and usage metrics about each
container - Google's cAdvisor provides this
cAdvisor provides an API to pull the data out, so you
can feed it to your trending system
Monitoring principlesMonitoring principles
(monitoring)
have a layer of system monitoring - that trusts humans
have a layer of behavior tests - doesnt trust humans.
Used to make sure that a certain environment is up
reduces manual labor
enables detailed insights inside the kernel and
applications
they have a new "cloud" version
same thing can be achieved on your private Docker
platform
SysdigSysdig
(DTrace for Linux)
LoggingLogging
LoggingLogging
logs will be used by engineers to troubleshoot issues
... but now your application is a distributed moving
target
the need for centralized log aggregation is big
How to do itHow to do it
(logging)
Multiple approaches
applications write logs to STDOUT and you pick up the
logs using the Docker API or client. Logspout can be used
to ship the logs remotely
applications write logs inside the container and a logging
daemon inside the container(RSYSLOG) ships the logs to a
centralized location
applications write logs in a volume which is shared with
another container that runs a log shipping daemon
How to do itHow to do it
(logging)
Choose an approach that fits your needs and send
the logs to a centralized location
logstash-forwarder is a great to forward your
logs(please dont choose python-beaver)
elasticsearch is a great way to store your logs
Kibana is a great way to visualize your logs
What do we do about
log ordering?
Authentication andAuthentication and
authorizationauthorization
Common primitives in Docker environments
AuthentificationAuthentification
how can you prove that a container/service is who it
says it is?
useful to have a generalized way of authenticating
all your containers
that way you can count on the reported identity
when allowing access to certain resources
How to do itHow to do it
(authentication)
Largely unsolved
Docker 1.3 tries to check image signatures if they
come from the public registry and if they are
marked as an "official repo"
A PKI setup fits the problem, with a unique
certificate for every container(not image)
Docker promised some PKI based solution in future
releases - I would wait for that
AuthorizationAuthorization
builds on top of authentication
will keep track of what resources a container/service can
access
should hand over details like user/pass pairs, API tokens
and ssh keys
How to do itHow to do it
(authorization)
Do NOT bake in credentials and ssh keys into images (security
and coupling)
Easy way
- mount external volume that contains credentials, ssh keys or
even ssh agent sockets
- doesn't require authentication
- increases the complexity of your deployment solution
Hard way
- store credentials in a centralized service
- requires some form of authentication
- decreases complexity in your deployment solution
How to do itHow to do it
(authorization)
Crypt and Consul(or etcd)
tries to solve the problem by using OpenPGP
each container needs access to a private key. Can be made
available through volume
credentials are stored encrypted in Consul
credentials get retrieved and decrypted in container
Image build serviceImage build service
Image build serviceImage build service
Build gets triggered when code gets changed and committed to
your repository
Can perform basic checks to make sure the image complies with
some basic rules
Commits image to image registry
If other images depend on it, a build job should be triggered for
those images
Extra tip: more control over the input sources for your images
will in turn improve the reliability of your builds
How to do itHow to do it
(image build service)
Git and Jenkins?
probably any vcs and CI tool will work
but Git and Jenkins work great
Simple workflow
commits code
Git post commit hook
Github webhook
Jenkins test
and build
Push to
registry
Container
Inputs
(binaries,code,
packages, etc)
Build process
Basic build process
Image registryImage registry
Image registryImage registry
a central place to store your Docker images
Docker Hub is the public one
you can easily run a private registry
Open source projectsOpen source projects
Docker registry
https://github.com/docker/docker-registry
Artifactory
http://www.jfrog.com/open-source/
(image registry)
How to do itHow to do it
(image registry)
USE a registry and dont rely on building images on
every machine
tag your images with specific versions
make version requirements explicit
Image registryImage registry
Where are we now?Where are we now?
a lot of hype, experience needs to follow
the sheer number of projects and work put in the ecosystem
is impressive
this momentum fuels on itself and ignites rapid development
in projects that are required to achieve certain things
can you program?
Some conclusionsSome conclusions
reduce coupling between components
think about your platform as a functional program with side
effects - identify the logic and identify the state
architect your system in a service oriented way - this way any
required service can be placed inside a container
avoid running services on your Docker host
all container operations should be programmable, and ideally
idempotent
The network is the last bastion of
inflexibility.
trade-off between flexibility and performance
(throughput,latency)
detailed analysis of performance?
Questions?Questions?

More Related Content

What's hot (20)

PPTX
DockerCon EU 2015: Persistent, stateful services with docker cluster, namespa...
Docker, Inc.
 
PDF
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Vincenzo Ferme
 
PDF
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Jérôme Petazzoni
 
PDF
Head first docker
Han Qin
 
PPTX
Weave User Group Talk - DockerCon 2017 Recap
Patrick Chanezon
 
PDF
Hack the whale
Marco Ferrigno
 
PPTX
Novices guide to docker
Alec Clews
 
PPTX
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
PDF
Docker: do's and don'ts
Paolo Tonin
 
PDF
Docker meetup-20-apr-17-openshit
Yusuf Hadiwinata Sutandar
 
PDF
BelfastJUG, Spring Boot + Docker
Hudson Mendes
 
PDF
CDI 2.0 is upon us Devoxx
Antoine Sabot-Durand
 
PDF
Webinar: Code Faster on Kubernetes
Ambassador Labs
 
PDF
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
Ambassador Labs
 
PDF
Containers & CaaS
OpenCity Community
 
PPTX
Docker Container As A Service - Mix-IT 2016
Patrick Chanezon
 
PDF
DevOps Indonesia #5 - The Future of Containers
DevOps Indonesia
 
PDF
I3 docker-intro-yusuf
Yusuf Hadiwinata Sutandar
 
PDF
Extending Java EE with CDI and JBoss Forge
Antoine Sabot-Durand
 
PPTX
Blue Whale in an Enterprise Pond
Digia Plc
 
DockerCon EU 2015: Persistent, stateful services with docker cluster, namespa...
Docker, Inc.
 
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Vincenzo Ferme
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Jérôme Petazzoni
 
Head first docker
Han Qin
 
Weave User Group Talk - DockerCon 2017 Recap
Patrick Chanezon
 
Hack the whale
Marco Ferrigno
 
Novices guide to docker
Alec Clews
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Docker: do's and don'ts
Paolo Tonin
 
Docker meetup-20-apr-17-openshit
Yusuf Hadiwinata Sutandar
 
BelfastJUG, Spring Boot + Docker
Hudson Mendes
 
CDI 2.0 is upon us Devoxx
Antoine Sabot-Durand
 
Webinar: Code Faster on Kubernetes
Ambassador Labs
 
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
Ambassador Labs
 
Containers & CaaS
OpenCity Community
 
Docker Container As A Service - Mix-IT 2016
Patrick Chanezon
 
DevOps Indonesia #5 - The Future of Containers
DevOps Indonesia
 
I3 docker-intro-yusuf
Yusuf Hadiwinata Sutandar
 
Extending Java EE with CDI and JBoss Forge
Antoine Sabot-Durand
 
Blue Whale in an Enterprise Pond
Digia Plc
 

Similar to Common primitives in Docker environments (20)

PDF
HPC Cloud Burst Using Docker
IRJET Journal
 
PPTX
Devops interview questions 1 www.bigclasses.com
bigclasses.com
 
PPTX
ma-formation-en-Docker-jlklk,nknkjn.pptx
imenhamada17
 
PDF
Demystifying Docker
Cloud Native Bangalore
 
PPTX
Demystifying Docker101
Ajeet Singh Raina
 
DOCX
Overview of Docker
GauranG Bajpai
 
PPTX
Accelerate your development with Docker
Andrey Hristov
 
PDF
Accelerate your software development with Docker
Andrey Hristov
 
PPTX
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
PPTX
Containers: DevOp Enablers of Technical Solutions
Jules Pierre-Louis
 
PPTX
Webinar Docker Tri Series
Newt Global Consulting LLC
 
PPTX
What's New in Docker - February 2017
Patrick Chanezon
 
PPTX
Microservices and containers for the unitiated
Kevin Lee
 
PDF
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
PPTX
Docker In Brief
Ritu Kamthan
 
PDF
Docker, Cloud Foundry, Bosh & Bluemix
IBM
 
PPTX
Devoxx 2016 - Docker Nuts and Bolts
Patrick Chanezon
 
PDF
Axigen on docker
BUSINESS SOFTWARES & SOLUTIONS
 
PDF
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
Marco Ferrigno
 
PDF
The DevOps Paradigm
NaLUG
 
HPC Cloud Burst Using Docker
IRJET Journal
 
Devops interview questions 1 www.bigclasses.com
bigclasses.com
 
ma-formation-en-Docker-jlklk,nknkjn.pptx
imenhamada17
 
Demystifying Docker
Cloud Native Bangalore
 
Demystifying Docker101
Ajeet Singh Raina
 
Overview of Docker
GauranG Bajpai
 
Accelerate your development with Docker
Andrey Hristov
 
Accelerate your software development with Docker
Andrey Hristov
 
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
Containers: DevOp Enablers of Technical Solutions
Jules Pierre-Louis
 
Webinar Docker Tri Series
Newt Global Consulting LLC
 
What's New in Docker - February 2017
Patrick Chanezon
 
Microservices and containers for the unitiated
Kevin Lee
 
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
Docker In Brief
Ritu Kamthan
 
Docker, Cloud Foundry, Bosh & Bluemix
IBM
 
Devoxx 2016 - Docker Nuts and Bolts
Patrick Chanezon
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
Marco Ferrigno
 
The DevOps Paradigm
NaLUG
 
Ad

Recently uploaded (20)

PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Ad

Common primitives in Docker environments

  • 1. Common primitivesCommon primitives in Dockerin Docker environmentsenvironments Alex Giurgiu ([email protected])
  • 3. Until you want to deploy yourUntil you want to deploy your new application in production...new application in production... on multiple machineson multiple machines
  • 4. You thought you have thisYou thought you have this
  • 5. When in fact you have thisWhen in fact you have this
  • 6. We are trying to get hereWe are trying to get here
  • 7. This problem is intenselyThis problem is intensely debated at the moment...debated at the moment... with many competingwith many competing projects...projects... thatthat approachapproach it in oneit in one way or another...way or another...
  • 8. Just look atJust look at Mesos Google's Omega Kubernetes CoreOS Centurion Helios Flynn Deis Dokku etc.
  • 9. What do they have inWhat do they have in common?common? they abstract a set of machines, making it look like its one machine they provide a set of primitives that deal with resources on that set of machines
  • 11. Why not use one of the mentioned solutions? Most of them require you to write your application/workload in a custom way. To totally give in to their way of doing things. But (I)we want to run the old/legacy applications, while gaining the same advantages
  • 12. Our goals are similar standardize the way we interact with our infrastructure treat all machines in a similar way achieve reliability, through software and not through hardware achieve reproducible infrastructure reduce manual labor
  • 13. Our building blockOur building block Container Inputs (binaries,code, packages, etc) External services Build process State
  • 14. Common primitivesCommon primitives "common enough that a generalized solution can be devised" "should be applicable to both in-house or external applications"
  • 15. Common primitivesCommon primitives persistence service discovery monitoring logging authentication and authorization image build service image registry
  • 17. PersistencePersistence one of the hardest problems to solve in a clean and scalable way should be transparent for the application most people just avoid Docker-izing services that require persistence
  • 18. LocalLocal - bring the state locally, relative to where the container runs - should be taken care by your deployment/PaaS solution - advantages: write/read speeds, reliability - disadvantages: potentially slow deploys, complex orchestration RemoteRemote - keep state remotely and "mount" it where the application is deployed - can be done by your PaaS solution or by the container itself - advantages: simpler to orchestrate, fast deploys - disadvantages: write/read speeds, (un)reliability
  • 19. Projects that try toProjects that try to solve persitencesolve persitence Flocker - https://github.com/ClusterHQ/flocker ?
  • 21. Service discoveryService discovery and registrationand registration
  • 22. Service discoveryService discovery most worked on aspect of Docker orchestration quite a few different open source projects that tackle this problem multiple approaches: environment variables, configuration files, key/value stores, DNS, ambassador pattern etc.
  • 24. Open source projectsOpen source projects Consul (my personal favorite) etcd (CoreOS's favorite) ZooKeeper (many people's favorite) Eureka (Netflix's favorite) Smartstack (Airbnb's favorite) ... (service discovery)
  • 25. choose a solution that can accommodate both legacy and custom applications: discovery using DNS or HTTP choose a solution that can be manipulated using a common protocol: HTTP make sure to remove died out applications from your SD system Ideally it should have no single point of failure Consul satisfies all the above requirements How to do itHow to do it (service discovery)
  • 26. ConsulConsul (service discovery) can be queried over DNS and HTTP distributed key:value store consistent and fault tolerant(RAFT) fast convergence(SWIM) Service checks
  • 27. Service registrationService registration Can be done by your application - simple HTTP call to Consul a separate script/application inside your container another container that inspects running containers - progrium/registrator Most importantly, each container should provide metadata about the service its running.
  • 29. MonitoringMonitoring 2 perspectives service monitoring - can be done as in pre-Docker times container monitoring
  • 30. Service monitoringService monitoring (monitoring) can be done with tools like Nagios your monitoring system should react dynamically to services that start and stop containers should define what needs to be monitored services should register themselves in the monitoring system Consul supports service checks
  • 31. Container monitoringContainer monitoring (monitoring) monitor container state(up/down) - Docker event API provides this information gather performance and usage metrics about each container - Google's cAdvisor provides this cAdvisor provides an API to pull the data out, so you can feed it to your trending system
  • 32. Monitoring principlesMonitoring principles (monitoring) have a layer of system monitoring - that trusts humans have a layer of behavior tests - doesnt trust humans. Used to make sure that a certain environment is up reduces manual labor
  • 33. enables detailed insights inside the kernel and applications they have a new "cloud" version same thing can be achieved on your private Docker platform SysdigSysdig (DTrace for Linux)
  • 35. LoggingLogging logs will be used by engineers to troubleshoot issues ... but now your application is a distributed moving target the need for centralized log aggregation is big
  • 36. How to do itHow to do it (logging) Multiple approaches applications write logs to STDOUT and you pick up the logs using the Docker API or client. Logspout can be used to ship the logs remotely applications write logs inside the container and a logging daemon inside the container(RSYSLOG) ships the logs to a centralized location applications write logs in a volume which is shared with another container that runs a log shipping daemon
  • 37. How to do itHow to do it (logging) Choose an approach that fits your needs and send the logs to a centralized location logstash-forwarder is a great to forward your logs(please dont choose python-beaver) elasticsearch is a great way to store your logs Kibana is a great way to visualize your logs
  • 38. What do we do about log ordering?
  • 41. AuthentificationAuthentification how can you prove that a container/service is who it says it is? useful to have a generalized way of authenticating all your containers that way you can count on the reported identity when allowing access to certain resources
  • 42. How to do itHow to do it (authentication) Largely unsolved Docker 1.3 tries to check image signatures if they come from the public registry and if they are marked as an "official repo" A PKI setup fits the problem, with a unique certificate for every container(not image) Docker promised some PKI based solution in future releases - I would wait for that
  • 43. AuthorizationAuthorization builds on top of authentication will keep track of what resources a container/service can access should hand over details like user/pass pairs, API tokens and ssh keys
  • 44. How to do itHow to do it (authorization) Do NOT bake in credentials and ssh keys into images (security and coupling) Easy way - mount external volume that contains credentials, ssh keys or even ssh agent sockets - doesn't require authentication - increases the complexity of your deployment solution Hard way - store credentials in a centralized service - requires some form of authentication - decreases complexity in your deployment solution
  • 45. How to do itHow to do it (authorization) Crypt and Consul(or etcd) tries to solve the problem by using OpenPGP each container needs access to a private key. Can be made available through volume credentials are stored encrypted in Consul credentials get retrieved and decrypted in container
  • 46. Image build serviceImage build service
  • 47. Image build serviceImage build service Build gets triggered when code gets changed and committed to your repository Can perform basic checks to make sure the image complies with some basic rules Commits image to image registry If other images depend on it, a build job should be triggered for those images Extra tip: more control over the input sources for your images will in turn improve the reliability of your builds
  • 48. How to do itHow to do it (image build service) Git and Jenkins? probably any vcs and CI tool will work but Git and Jenkins work great Simple workflow commits code Git post commit hook Github webhook Jenkins test and build Push to registry
  • 51. Image registryImage registry a central place to store your Docker images Docker Hub is the public one you can easily run a private registry
  • 52. Open source projectsOpen source projects Docker registry https://github.com/docker/docker-registry Artifactory http://www.jfrog.com/open-source/ (image registry)
  • 53. How to do itHow to do it (image registry) USE a registry and dont rely on building images on every machine tag your images with specific versions make version requirements explicit
  • 55. Where are we now?Where are we now? a lot of hype, experience needs to follow the sheer number of projects and work put in the ecosystem is impressive this momentum fuels on itself and ignites rapid development in projects that are required to achieve certain things can you program?
  • 56. Some conclusionsSome conclusions reduce coupling between components think about your platform as a functional program with side effects - identify the logic and identify the state architect your system in a service oriented way - this way any required service can be placed inside a container avoid running services on your Docker host all container operations should be programmable, and ideally idempotent
  • 57. The network is the last bastion of inflexibility. trade-off between flexibility and performance (throughput,latency) detailed analysis of performance?