SlideShare a Scribd company logo
Adrien BLIND
Aurélien GABET
Arnaud MAZIN
© OCTO 2013

50, avenue des Champs-Elysées
75008 Paris - FRANCE

Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com

1
Agenda

1

SOFTWARE MANAGEMENT IN ENTERPRISE

2

DOCKER IMPACTS

3

WORKSTATION SIDE

4

SERVER SIDE

5

TAKE AWAY

2
Software Management in enterprise IT

3
Present software factory overall design

Gather
dependancies
SCM
Build
Local

Build

Compile

Continuous
Integration

Binaries repository

Run tests
Check code quality

Package

Deploy

Platforms

Build

Build Factory
4
Enterprise software lifecycle

Enterprise-grade software development lifecycles are often
complicated
Team isolation (Dev vs. Ops)
IT architecture complexity
Pipeline length
Q/A
UAT
Integration
Performances
Security

Software factories are already in-place and up-and-running
They may need to be modified / adapted / simplified (?) to deal with
Docker

5
Docker impacts

6
Docker promises

Docker intends to renew the new Dev / Ops relationship by
providing a portable ready-to-use application containers

Docker build recipes (Dockerfiles)
Docker registries (public & private)

Build once,
run anywhere

Developer

Configure once,
run anything

Ops
7
Basic Docker Workflow

Docker
registry

Images

Dockerfile

backup.tar

Containers

Local Docker instance
My computer
8
Present software factory overall design

Gather
dependancies
SCM
Build
Local

Build

Compile

Continuous
Integration

Binaries repository

Run tests
Check code quality

Package

Deploy

Platforms

Build

Build Factory
9
Docker Integration opportunities

1

?

2
Gather
dependancies
SCM
Build
Local

?

Compile

Build
Continuous
Integration

Binaries repository

Run tests
Check code quality

2

?

2

Package

?
Deploy

Platforms

Build

Build Factory
10
1

On the dev workstation side

11
Docker on the dev workstation side
Images
repository

Great way to ease the workstation
deployment
Vagrant + Dockerfiles => use the dev OS
you like

Docker images

Pull

IDE

Container
with App

Dockerfile /
code

Developer
Workstation

VM

Image
Container

Great way to share
Internet registries (index.docker.io)
Ops can produce Docker images (if it
makes sense) on an enterprise registry
Other devs can help newbies to bootstrap

Great way to be iso-prod as soon as
possible (if you consider the container as
the standard delivery pattern)
Tip: have a look at fig (https://github.com/orchardup/fig)
12
Docker on the DevOps workstation
Use cases
Integration test
Deployment test
COTS
SaaS development (test full stack)

LXC + Docker nesting
Implement Servers + multi containers

DinD (Docker in Docker)

13
2

On the server side

14
Two visions

Simple application designs

Allow all design

Very standardized (buildpacks)

All kind of apps (even legacy)

Fully automated

Maybe automated

Git push + cli

Nexus-like artifact storage

Infrastructure seen as a black box

Topology management required
gConf based (Puppet, chef…)
Deployment orchestration
(Capistrano?)
15
Heroku-like Docker implementation

16
Heroku approach
Users

Cli

Admin commands

Git
git push acme master

PaaS
Black BOX
(you don’t have to care
about how things are
done)
17
Docker PaaS with a software factory

Information System

Dev PaaS

Repo Git
Corp

Git
tag

UAT PaaS

Scan / pull

code

Jenkins

Prod PaaS

Build
Build apps
Unit tests

IDE

Developer
Workstation
Ops
18
Heroku-like Docker implementation
Users

Plugins

Reverse
Proxies

Container(s)

Cli

Git

Origin

Docker run

git push mypaas master

Container
creation

Build

Docker Images

My PaaS
19
3 implementation examples

Dokku
Flynn

Single host based
Bash powered
Some nice plugins (DB, NoSQL, caches)
Easy to setup / test
lighweight
Multi-hosts, multi-tenant
Relies on a native distributed service registry (etcd)
Layers based
Work in progress
Multi-hosts
Highly relies on Chef-server (hosts and apps
management)
Enable easy hosts enrolment (using chef)

20
Heroku-Like Docker implementation conclusion

Docker is not visible from outside the PaaS solution
Artifacts (Docker images) must be rebuilt on each environment
Slow
Can’t take full advantage of local Docker registries
Break the «build once, run everywhere» good practice

Heroku Compliant with constraints
Procfile
Auto-detected code => buildpacks

Only patterns implemented on the PaaS side can be deployed
Engineering required on the «Ops»
Data persistence (on-disk or in-memory) : (No)SQL, Redis, Memcached…
Integration components (ESB, MQ, IAM)
H-A components / LB (Proxies, WAFs, WAMs)

21
Ad-Hoc design

22
Take (even more) advantage of Docker

Docker registry is a major feature of Docker
Docker registries can (partially) replace the former Nexus-like
artifact repository in your company
Don’t make any assumption about the Docker images content
Code?
Integration images (proxies, reverse-proxies…)
Appliance?
COTS?

Allow any kind of topology (but get ready to pay the price for it)

23
Docker registry

A local Git/Nexus like private Docker Images registry
RESTfull API powered
Some enterprise-grade features are yet missing:
Nexus-like proxy feature (to locally cache public images)
Stock H-A
Pretty Web GUI for users (search images, read images-associated
release notes)
Pretty Web GUI for admins (manage ACLs, images)

24
Build container ASAP
OPS provide images

Public
repository
Information System
Docker Images
Private
repository

Pull
Push

Tag

Dev

Container
with App

Container(s)

UAT

Image
Container

Container(s)

Test

Jenkins
Test

IDE

Developer
Workstation

Dockerfile /
code

Repo Git
Corp

Prod

Container(s)

Git

25
Build container ASAP - Pros / cons

KISS
Build artifact only once and run it everywhere

Not any control over the produced artifact (can even be tweaked
manually)
How to ensure the Git and Docker registry versions are consistently
managed altogether?
How to handle the Docker images deployment?

26
SF Rebuild pattern
Public
Repository
Images Docker

Information System
Private
repository

Repo Git
Corp

Dev

Container(s)

pull

Image
Container

Pull

Container
with App

Scan / pull

Push
Tag
Intégration
automatic
tests

UAT

Container(s)

Jenkins

Promote

Unit Tests

Git

Container(s)

IDE

Prod

Container(s)

Container(s)

Dockerfile
/ code

Build
Developer
Workstation

Software factory
Private
Repository
27
SF Rebuild pattern - pros / cons

Looks like actual SF, makes sense
Git is the real (code) reference from which artifacts are built

Not that much control over the produced artefact (from an ops
perspective)
How to handle the Docker images deployment?

28
Take away

29
Take Away
There is not a single Docker enterprise integration pattern
Play with several git remotes, Docker registries, environments
Adapt with your organization and processes
Choose between Code (Git) or Docker Images (registry) deployment
(for now)

Still some integration / topology management tools are missing
Maturity is coming, but not yet totally production-proof
Expect hybrid implementations to meet all expectations
Heroku-like apps (buildstacks) : simple
Dockerfile : free apps design, flexible integration, allow some quality
checks
Image URL : fast(er) and flexible integration

30
Take Away

Some projects to watch:
CI side
Drone (github.com/drone/drone)

Deploy side (PaaS style)
Deis (deis.io)
Dokku (github.com/progrium/dokku)
Flynn (flynn.io)

Deploy side (Open style)
CTL-C (ctl-c.io)
Shipyard (github.com/shipyard/shipyard)

31
32
Appendices

33
Docker Config management

34
Container deployment

Container deployment is about
Orchestration
Apps specific (layers, stacks, topology)
Can be tricky (rolling style, zero downtime deployment)
Good frameworks exist (Capistrano)
Must be versioned according to app version

Variabilization: handle environment specificities (config management)
Security (passwords, container zone location)
URL, links between containers
Sizing
H-A (enabled or not)
Reel / Mocked / pass-through components

35
Config Management

Several main ways
Use of Puppet / Chef / ansible / salt (within a Docker container) can
make sense
Both at build and startup time
Watchout complexity
Agent installation
Server / master dependencies (enrolment, role assignment)
Split cookbooks between setup and run times.

Most standard way: env variables (Heroku style)
Must tweak startup scripts
some applications are not very envvar-aware

Use a service directory (zookeeper, etcd)
Must tweak startup script, in a two-phase approach
Query the directory to find dependencies
Publish the offered services once started
36
Shipyard

37
Shipyard

Simple Agent / Server Web router + console to aggregate multi-hosts view
Can handle central or local registries to get images, even Dockerfile upload

Provide a global incoming flow routing (hipache redis-based reverse-proxy), simply
point a *.acme.com DNS record to the incoming front router
Can start new containers with all needed parameters
Env variables
Links between containers
LXC limitations (CPU shares, memory)

Very young
Some stability issues
ACL / security management
H-A ?

API available (not tested yet)
Available as a Docker container (of course!)

38
Shipyard

Users

Ops

Manage

Shipyard farm
Web
console

Shipyard
engine

deploy

Jenkins

Configurable
Reverse-proxy

Redis

API

Build

Shipyard

Container(s)

Software factory
Push / tag

Docker

Pull

Docker

Docker

Docker

Docker

S. Agent

Private
repository

S. Agent

S. Agent

S. Agent

S. Agent

Host

Host

Host

Host

Host

39

More Related Content

What's hot

Kubernetes and Hybrid Deployments
Kubernetes and Hybrid DeploymentsKubernetes and Hybrid Deployments
Kubernetes and Hybrid Deployments
Sandeep Parikh
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
Ben Hall
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Marcelo Cenerino
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
Docker, Inc.
 
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Jorge Morales
 
Cloud infrastructure as code
Cloud infrastructure as codeCloud infrastructure as code
Cloud infrastructure as code
Tomasz Cholewa
 
Containerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container RuntimeContainerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container Runtime
Phil Estes
 
Deep dive in container service discovery
Deep dive in container service discoveryDeep dive in container service discovery
Deep dive in container service discovery
Docker, Inc.
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
Araf Karsh Hamid
 
Cloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveCloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep Dive
Kazuto Kusama
 
OpenStack - Docker - Rackspace HQ
OpenStack - Docker - Rackspace HQOpenStack - Docker - Rackspace HQ
OpenStack - Docker - Rackspace HQ
dotCloud
 
Container Days Boston - Kubernetes in production
Container Days Boston - Kubernetes in productionContainer Days Boston - Kubernetes in production
Container Days Boston - Kubernetes in production
Mike Splain
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
RightScale
 
Docker Engine Evolution: From Monolith to Discrete Components
Docker Engine Evolution: From Monolith to Discrete ComponentsDocker Engine Evolution: From Monolith to Discrete Components
Docker Engine Evolution: From Monolith to Discrete Components
Phil Estes
 
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
Akihiro Suda
 
Mesos on coreOS
Mesos on coreOSMesos on coreOS
Mesos on coreOS
충섭 김
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
Suraj Deshmukh
 
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
Quantifying Container Runtime Performance: OSCON 2017 Open Container DayQuantifying Container Runtime Performance: OSCON 2017 Open Container Day
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
Phil Estes
 
Cantainer CI/ CD with Kubernetes
Cantainer CI/ CD with KubernetesCantainer CI/ CD with Kubernetes
Cantainer CI/ CD with Kubernetes
inwin stack
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Carlos Sanchez
 

What's hot (20)

Kubernetes and Hybrid Deployments
Kubernetes and Hybrid DeploymentsKubernetes and Hybrid Deployments
Kubernetes and Hybrid Deployments
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
 
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
 
Cloud infrastructure as code
Cloud infrastructure as codeCloud infrastructure as code
Cloud infrastructure as code
 
Containerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container RuntimeContainerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container Runtime
 
Deep dive in container service discovery
Deep dive in container service discoveryDeep dive in container service discovery
Deep dive in container service discovery
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Cloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveCloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep Dive
 
OpenStack - Docker - Rackspace HQ
OpenStack - Docker - Rackspace HQOpenStack - Docker - Rackspace HQ
OpenStack - Docker - Rackspace HQ
 
Container Days Boston - Kubernetes in production
Container Days Boston - Kubernetes in productionContainer Days Boston - Kubernetes in production
Container Days Boston - Kubernetes in production
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Docker Engine Evolution: From Monolith to Discrete Components
Docker Engine Evolution: From Monolith to Discrete ComponentsDocker Engine Evolution: From Monolith to Discrete Components
Docker Engine Evolution: From Monolith to Discrete Components
 
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
 
Mesos on coreOS
Mesos on coreOSMesos on coreOS
Mesos on coreOS
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
 
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
Quantifying Container Runtime Performance: OSCON 2017 Open Container DayQuantifying Container Runtime Performance: OSCON 2017 Open Container Day
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
 
Cantainer CI/ CD with Kubernetes
Cantainer CI/ CD with KubernetesCantainer CI/ CD with Kubernetes
Cantainer CI/ CD with Kubernetes
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
 

Viewers also liked

Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Arnaud MAZIN
 
Docker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined NetworksDocker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined Networks
Adrien Blind
 
Building images from dockerfiles
Building images from dockerfilesBuilding images from dockerfiles
Building images from dockerfiles
dotCloud
 
Fun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker imagesFun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker images
abadger1999
 
Docker Online Meetup #28: Production-Ready Docker Swarm
Docker Online Meetup #28: Production-Ready Docker SwarmDocker Online Meetup #28: Production-Ready Docker Swarm
Docker Online Meetup #28: Production-Ready Docker Swarm
Docker, Inc.
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
CloudBees
 
SIEM Alone is Not Enough
SIEM Alone is Not EnoughSIEM Alone is Not Enough
SIEM Alone is Not Enough
Tripwire
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
Bert Poller
 
Addressing security concerns through BPM
Addressing security concerns through BPMAddressing security concerns through BPM
Addressing security concerns through BPM
Alexander SAMARIN
 
Presentation websockets
Presentation websocketsPresentation websockets
Presentation websockets
Bert Poller
 
Corba model ppt
Corba model pptCorba model ppt
Corba model ppt
Saransh Garg
 
Alibaba Cloud Conference 2016 - Docker Enterprise
Alibaba Cloud Conference   2016 - Docker EnterpriseAlibaba Cloud Conference   2016 - Docker Enterprise
Alibaba Cloud Conference 2016 - Docker Enterprise
John Willis
 
Docker containers & the Future of Drupal testing
Docker containers & the Future of Drupal testing Docker containers & the Future of Drupal testing
Docker containers & the Future of Drupal testing
Ricardo Amaro
 
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Zach Hill
 
Drupal workshop ist 2014
Drupal workshop ist 2014Drupal workshop ist 2014
Drupal workshop ist 2014
Ricardo Amaro
 
Building a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger HuntBuilding a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger Hunt
Ashley Roach
 
How To Train Your APIs
How To Train Your APIsHow To Train Your APIs
How To Train Your APIs
Ashley Roach
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
Slim Ouertani
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Nathen Harvey
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant
Ricardo Amaro
 

Viewers also liked (20)

Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
 
Docker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined NetworksDocker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined Networks
 
Building images from dockerfiles
Building images from dockerfilesBuilding images from dockerfiles
Building images from dockerfiles
 
Fun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker imagesFun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker images
 
Docker Online Meetup #28: Production-Ready Docker Swarm
Docker Online Meetup #28: Production-Ready Docker SwarmDocker Online Meetup #28: Production-Ready Docker Swarm
Docker Online Meetup #28: Production-Ready Docker Swarm
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
 
SIEM Alone is Not Enough
SIEM Alone is Not EnoughSIEM Alone is Not Enough
SIEM Alone is Not Enough
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
Addressing security concerns through BPM
Addressing security concerns through BPMAddressing security concerns through BPM
Addressing security concerns through BPM
 
Presentation websockets
Presentation websocketsPresentation websockets
Presentation websockets
 
Corba model ppt
Corba model pptCorba model ppt
Corba model ppt
 
Alibaba Cloud Conference 2016 - Docker Enterprise
Alibaba Cloud Conference   2016 - Docker EnterpriseAlibaba Cloud Conference   2016 - Docker Enterprise
Alibaba Cloud Conference 2016 - Docker Enterprise
 
Docker containers & the Future of Drupal testing
Docker containers & the Future of Drupal testing Docker containers & the Future of Drupal testing
Docker containers & the Future of Drupal testing
 
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
 
Drupal workshop ist 2014
Drupal workshop ist 2014Drupal workshop ist 2014
Drupal workshop ist 2014
 
Building a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger HuntBuilding a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger Hunt
 
How To Train Your APIs
How To Train Your APIsHow To Train Your APIs
How To Train Your APIs
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant
 

Similar to Docker Meetup Paris: enterprise Docker

Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
Patrick Chanezon
 
Common primitives in Docker environments
Common primitives in Docker environmentsCommon primitives in Docker environments
Common primitives in Docker environments
alexandru giurgiu
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with Docker
Andrey Hristov
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with Docker
Andrey Hristov
 
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Michael Hofmann
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
Ambassador Labs
 
The Automated Monolith
The Automated MonolithThe Automated Monolith
The Automated Monolith
Haufe-Lexware GmbH & Co KG
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
 
Develop with docker 2014 aug
Develop with docker 2014 augDevelop with docker 2014 aug
Develop with docker 2014 aug
Vincent De Smet
 
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and KubernetesPycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Claudio Mignanti
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
Patrick Chanezon
 
New Features Webinar-April
New Features Webinar-AprilNew Features Webinar-April
New Features Webinar-April
Codefresh
 
Neues aus dem Docker-Universum
Neues aus dem Docker-UniversumNeues aus dem Docker-Universum
Neues aus dem Docker-Universum
Nicholas Dille
 
Dockercon2015_paypal
Dockercon2015_paypalDockercon2015_paypal
Dockercon2015_paypal
ahunnargikar
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
Nissan Dookeran
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
Ajeet Singh Raina
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
Cloud Native Bangalore
 
Docker - Der Wal in der Kiste
Docker - Der Wal in der KisteDocker - Der Wal in der Kiste
Docker - Der Wal in der Kiste
Ulrich Krause
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Roman Rodomansky
 
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS
 

Similar to Docker Meetup Paris: enterprise Docker (20)

Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Common primitives in Docker environments
Common primitives in Docker environmentsCommon primitives in Docker environments
Common primitives in Docker environments
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with Docker
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with Docker
 
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
 
The Automated Monolith
The Automated MonolithThe Automated Monolith
The Automated Monolith
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
Develop with docker 2014 aug
Develop with docker 2014 augDevelop with docker 2014 aug
Develop with docker 2014 aug
 
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and KubernetesPycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
New Features Webinar-April
New Features Webinar-AprilNew Features Webinar-April
New Features Webinar-April
 
Neues aus dem Docker-Universum
Neues aus dem Docker-UniversumNeues aus dem Docker-Universum
Neues aus dem Docker-Universum
 
Dockercon2015_paypal
Dockercon2015_paypalDockercon2015_paypal
Dockercon2015_paypal
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
 
Docker - Der Wal in der Kiste
Docker - Der Wal in der KisteDocker - Der Wal in der Kiste
Docker - Der Wal in der Kiste
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
 

Recently uploaded

Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 

Recently uploaded (20)

Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 

Docker Meetup Paris: enterprise Docker

  • 1. Adrien BLIND Aurélien GABET Arnaud MAZIN © OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com 1
  • 2. Agenda 1 SOFTWARE MANAGEMENT IN ENTERPRISE 2 DOCKER IMPACTS 3 WORKSTATION SIDE 4 SERVER SIDE 5 TAKE AWAY 2
  • 3. Software Management in enterprise IT 3
  • 4. Present software factory overall design Gather dependancies SCM Build Local Build Compile Continuous Integration Binaries repository Run tests Check code quality Package Deploy Platforms Build Build Factory 4
  • 5. Enterprise software lifecycle Enterprise-grade software development lifecycles are often complicated Team isolation (Dev vs. Ops) IT architecture complexity Pipeline length Q/A UAT Integration Performances Security Software factories are already in-place and up-and-running They may need to be modified / adapted / simplified (?) to deal with Docker 5
  • 7. Docker promises Docker intends to renew the new Dev / Ops relationship by providing a portable ready-to-use application containers Docker build recipes (Dockerfiles) Docker registries (public & private) Build once, run anywhere Developer Configure once, run anything Ops 7
  • 9. Present software factory overall design Gather dependancies SCM Build Local Build Compile Continuous Integration Binaries repository Run tests Check code quality Package Deploy Platforms Build Build Factory 9
  • 10. Docker Integration opportunities 1 ? 2 Gather dependancies SCM Build Local ? Compile Build Continuous Integration Binaries repository Run tests Check code quality 2 ? 2 Package ? Deploy Platforms Build Build Factory 10
  • 11. 1 On the dev workstation side 11
  • 12. Docker on the dev workstation side Images repository Great way to ease the workstation deployment Vagrant + Dockerfiles => use the dev OS you like Docker images Pull IDE Container with App Dockerfile / code Developer Workstation VM Image Container Great way to share Internet registries (index.docker.io) Ops can produce Docker images (if it makes sense) on an enterprise registry Other devs can help newbies to bootstrap Great way to be iso-prod as soon as possible (if you consider the container as the standard delivery pattern) Tip: have a look at fig (https://github.com/orchardup/fig) 12
  • 13. Docker on the DevOps workstation Use cases Integration test Deployment test COTS SaaS development (test full stack) LXC + Docker nesting Implement Servers + multi containers DinD (Docker in Docker) 13
  • 14. 2 On the server side 14
  • 15. Two visions Simple application designs Allow all design Very standardized (buildpacks) All kind of apps (even legacy) Fully automated Maybe automated Git push + cli Nexus-like artifact storage Infrastructure seen as a black box Topology management required gConf based (Puppet, chef…) Deployment orchestration (Capistrano?) 15
  • 17. Heroku approach Users Cli Admin commands Git git push acme master PaaS Black BOX (you don’t have to care about how things are done) 17
  • 18. Docker PaaS with a software factory Information System Dev PaaS Repo Git Corp Git tag UAT PaaS Scan / pull code Jenkins Prod PaaS Build Build apps Unit tests IDE Developer Workstation Ops 18
  • 19. Heroku-like Docker implementation Users Plugins Reverse Proxies Container(s) Cli Git Origin Docker run git push mypaas master Container creation Build Docker Images My PaaS 19
  • 20. 3 implementation examples Dokku Flynn Single host based Bash powered Some nice plugins (DB, NoSQL, caches) Easy to setup / test lighweight Multi-hosts, multi-tenant Relies on a native distributed service registry (etcd) Layers based Work in progress Multi-hosts Highly relies on Chef-server (hosts and apps management) Enable easy hosts enrolment (using chef) 20
  • 21. Heroku-Like Docker implementation conclusion Docker is not visible from outside the PaaS solution Artifacts (Docker images) must be rebuilt on each environment Slow Can’t take full advantage of local Docker registries Break the «build once, run everywhere» good practice Heroku Compliant with constraints Procfile Auto-detected code => buildpacks Only patterns implemented on the PaaS side can be deployed Engineering required on the «Ops» Data persistence (on-disk or in-memory) : (No)SQL, Redis, Memcached… Integration components (ESB, MQ, IAM) H-A components / LB (Proxies, WAFs, WAMs) 21
  • 23. Take (even more) advantage of Docker Docker registry is a major feature of Docker Docker registries can (partially) replace the former Nexus-like artifact repository in your company Don’t make any assumption about the Docker images content Code? Integration images (proxies, reverse-proxies…) Appliance? COTS? Allow any kind of topology (but get ready to pay the price for it) 23
  • 24. Docker registry A local Git/Nexus like private Docker Images registry RESTfull API powered Some enterprise-grade features are yet missing: Nexus-like proxy feature (to locally cache public images) Stock H-A Pretty Web GUI for users (search images, read images-associated release notes) Pretty Web GUI for admins (manage ACLs, images) 24
  • 25. Build container ASAP OPS provide images Public repository Information System Docker Images Private repository Pull Push Tag Dev Container with App Container(s) UAT Image Container Container(s) Test Jenkins Test IDE Developer Workstation Dockerfile / code Repo Git Corp Prod Container(s) Git 25
  • 26. Build container ASAP - Pros / cons KISS Build artifact only once and run it everywhere Not any control over the produced artifact (can even be tweaked manually) How to ensure the Git and Docker registry versions are consistently managed altogether? How to handle the Docker images deployment? 26
  • 27. SF Rebuild pattern Public Repository Images Docker Information System Private repository Repo Git Corp Dev Container(s) pull Image Container Pull Container with App Scan / pull Push Tag Intégration automatic tests UAT Container(s) Jenkins Promote Unit Tests Git Container(s) IDE Prod Container(s) Container(s) Dockerfile / code Build Developer Workstation Software factory Private Repository 27
  • 28. SF Rebuild pattern - pros / cons Looks like actual SF, makes sense Git is the real (code) reference from which artifacts are built Not that much control over the produced artefact (from an ops perspective) How to handle the Docker images deployment? 28
  • 30. Take Away There is not a single Docker enterprise integration pattern Play with several git remotes, Docker registries, environments Adapt with your organization and processes Choose between Code (Git) or Docker Images (registry) deployment (for now) Still some integration / topology management tools are missing Maturity is coming, but not yet totally production-proof Expect hybrid implementations to meet all expectations Heroku-like apps (buildstacks) : simple Dockerfile : free apps design, flexible integration, allow some quality checks Image URL : fast(er) and flexible integration 30
  • 31. Take Away Some projects to watch: CI side Drone (github.com/drone/drone) Deploy side (PaaS style) Deis (deis.io) Dokku (github.com/progrium/dokku) Flynn (flynn.io) Deploy side (Open style) CTL-C (ctl-c.io) Shipyard (github.com/shipyard/shipyard) 31
  • 32. 32
  • 35. Container deployment Container deployment is about Orchestration Apps specific (layers, stacks, topology) Can be tricky (rolling style, zero downtime deployment) Good frameworks exist (Capistrano) Must be versioned according to app version Variabilization: handle environment specificities (config management) Security (passwords, container zone location) URL, links between containers Sizing H-A (enabled or not) Reel / Mocked / pass-through components 35
  • 36. Config Management Several main ways Use of Puppet / Chef / ansible / salt (within a Docker container) can make sense Both at build and startup time Watchout complexity Agent installation Server / master dependencies (enrolment, role assignment) Split cookbooks between setup and run times. Most standard way: env variables (Heroku style) Must tweak startup scripts some applications are not very envvar-aware Use a service directory (zookeeper, etcd) Must tweak startup script, in a two-phase approach Query the directory to find dependencies Publish the offered services once started 36
  • 38. Shipyard Simple Agent / Server Web router + console to aggregate multi-hosts view Can handle central or local registries to get images, even Dockerfile upload Provide a global incoming flow routing (hipache redis-based reverse-proxy), simply point a *.acme.com DNS record to the incoming front router Can start new containers with all needed parameters Env variables Links between containers LXC limitations (CPU shares, memory) Very young Some stability issues ACL / security management H-A ? API available (not tested yet) Available as a Docker container (of course!) 38
  • 39. Shipyard Users Ops Manage Shipyard farm Web console Shipyard engine deploy Jenkins Configurable Reverse-proxy Redis API Build Shipyard Container(s) Software factory Push / tag Docker Pull Docker Docker Docker Docker S. Agent Private repository S. Agent S. Agent S. Agent S. Agent Host Host Host Host Host 39