SlideShare a Scribd company logo
1 of 100
Download to read offline
DOCKER
Gavin Heavyside - ACCU 2015 - @gavinheavyside 1
Gavin Heavyside - ACCU 2015 - @gavinheavyside 2
Gavin Heavyside - ACCU 2015 - @gavinheavyside 3
Gavin Heavyside - ACCU 2015 - @gavinheavyside 4
Gavin Heavyside - ACCU 2015 - @gavinheavyside 5
Gavin Heavyside - ACCU 2015 - @gavinheavyside 6
Gavin Heavyside - ACCU 2015 - @gavinheavyside 7
Gavin Heavyside - ACCU 2015 - @gavinheavyside 8
Goals
Gavin Heavyside - ACCU 2015 - @gavinheavyside 9
ship it
Gavin Heavyside - ACCU 2015 - @gavinheavyside 10
Docker Components
• Engine
• Hub
• Compose
• Swarm
• Machine
Gavin Heavyside - ACCU 2015 - @gavinheavyside 11
Docker Engine
Gavin Heavyside - ACCU 2015 - @gavinheavyside 12
Docker Client-Server
┌───────┐ ┌───────────────────────────────────┐
│Client ├┐ │ ┌──────────────────┐ ┌──────────┐│
└┬──────┘├─┬─┼──│ Docker Daemon │ │Container ││
└─┬─────┘ │ │ └─────────────────┬┘ └──────────┘│
└───────┘ │ │ │ ┌──────────┐│
│ ┌───────┐ │ └──│Container ││
│ │Client │─┘ └──────────┘│
│ └───────┘ ┌──────────┐│
│ │Container ││
│ Docker Host └──────────┘│
└───────────────────────────────────┘
Gavin Heavyside - ACCU 2015 - @gavinheavyside 13
Docker Client
attach build commit cp create diff events
exec export history images import info
inspect kill load login logout logs port
pause ps pull push rename restart rm rmi
run save search start stats stop tag top
unpause version wait
Gavin Heavyside - ACCU 2015 - @gavinheavyside 14
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
Gavin Heavyside - ACCU 2015 - @gavinheavyside 15
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Pulls the ubuntu image
Gavin Heavyside - ACCU 2015 - @gavinheavyside 16
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Creates a new container
Gavin Heavyside - ACCU 2015 - @gavinheavyside 17
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Allocates a filesystem and mounts a R/W layer
Gavin Heavyside - ACCU 2015 - @gavinheavyside 18
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Allocates a network / bridge interface
Gavin Heavyside - ACCU 2015 - @gavinheavyside 19
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Sets up an IP address
Gavin Heavyside - ACCU 2015 - @gavinheavyside 20
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Executes your process
Gavin Heavyside - ACCU 2015 - @gavinheavyside 21
Running a Docker
Container
docker run -i -t ubuntu /bin/bash
• Captures and provides application output
Gavin Heavyside - ACCU 2015 - @gavinheavyside 22
How it works
(Short Version)
• Written in Go
• Takes advantange of Linux kernel features
• Namespaces
• Control Groups (cgroups)
• Union File System
• libcontainer
Gavin Heavyside - ACCU 2015 - @gavinheavyside 23
Namespaces
• Separation of groups of processes
• Can't 'see' resources in other groups
• PID namespace, network, mount, IPC, and
more
Gavin Heavyside - ACCU 2015 - @gavinheavyside 24
Namespaces
• Docker creates a set of namespaces for each
container.
• Isolation layer
• each aspect of a container runs in own
namespace
• does not have access outside it
• some used by Docker: pid, net, ipc, mnt, uts
Gavin Heavyside - ACCU 2015 - @gavinheavyside 25
Control Groups (cgroups)
• limit, account, and isolate resources used by a
collection of processes
• CPU, memory, disk I/O, network, etc.
• The basis of many container projects
• Docker, LXC, lmctfy, Mesos, and more
Gavin Heavyside - ACCU 2015 - @gavinheavyside 26
cgroups
• allow Docker to share available hardware
resources to containers
• set up limits and constraints, if required
Gavin Heavyside - ACCU 2015 - @gavinheavyside 27
Setting Resource Limits
docker run -m 256m --cpu-shares 512 yourapp
Gavin Heavyside - ACCU 2015 - @gavinheavyside 28
Union File Systems
• Layer files and dirs
• Can be from different file systems
• Present as a single filesystem
• Can have RO and RW layers
Gavin Heavyside - ACCU 2015 - @gavinheavyside 29
┌───────────────────────────────────────┐
│ Writeable Layer Container │
└───────────────────────────────────────┘
┌───────────────────────────────────────┐
│ ADD apache Image │
└───────────────────────────────────────┘
┌───────────────────────────────────────┐
│ ADD emacs Image │
└───────────────────────────────────────┘
┌───────────────────────────────────────┐
│ FROM debian Base Image │
└───────────────────────────────────────┘
┌───────────────────────────────────────┐
│ Kernel │
└───────────────────────────────────────┘
Gavin Heavyside - ACCU 2015 - @gavinheavyside 30
Union File Systems
• UnionFS
• aufs
• btrfs
• and more...
Gavin Heavyside - ACCU 2015 - @gavinheavyside 31
libcontainer
• https://github.com/docker/libcontainer
• Default supported container format
• Creates containers with namespaces, cgroups,
capabilities, and filesystem access controls
• Manages lifecycle of the container
Gavin Heavyside - ACCU 2015 - @gavinheavyside 32
Other container
technologies
• Solaris Zones
• lmctfy
• rkt
• LXC
• BSD Jails
Gavin Heavyside - ACCU 2015 - @gavinheavyside 33
Building a Container
• Write a Dockerfile
• build the image with docker build
• run it with docker run
• Share by pushing to a registry
Gavin Heavyside - ACCU 2015 - @gavinheavyside 34
The Dockerfile
• Plain text file
• Series of directives
• add files
• expose ports
• execute commands
• configure runtime
Gavin Heavyside - ACCU 2015 - @gavinheavyside 35
The Dockerfile
FROM busybox
RUN mkdir -p /usr/local/bin
COPY ./hello /usr/local/bin/hello
CMD ["/usr/local/bin/hello"]
Gavin Heavyside - ACCU 2015 - @gavinheavyside 36
FROM
FROM ubuntu:14.04
• Base image (& tag) to start building from
MAINTAINER
MAINTAINER Peter V "venkman@1984.com"
• Who ya gonna call?
Gavin Heavyside - ACCU 2015 - @gavinheavyside 37
RUN
RUN apt-get update && apt-get -y upgrade
• Execute command in a new layer and commit
• defaults to using /bin/sh
• RUN ["/bin/bash", "-c", "uptime"]
Gavin Heavyside - ACCU 2015 - @gavinheavyside 38
CMD
CMD ["executable","param1","param2"]
• Default command to execute
Gavin Heavyside - ACCU 2015 - @gavinheavyside 39
EXPOSE
RUN apt-get install nginx
EXPOSE 80
• Ports for the continer to listen on
• Used for interconnecting linked containers
• Doesn't automatically map to the host
Gavin Heavyside - ACCU 2015 - @gavinheavyside 40
ENV
ENV FOO=bar
• Set an environment variable in the container
ADD / COPY
COPY /my/src /opt/container/src
• Copy content to the container filesystem
Gavin Heavyside - ACCU 2015 - @gavinheavyside 41
USER
USER nginx
• Set the UID for the image and any following
directives
WORKDIR
WORKDIR /path/to/workdir
• set the working dir for the image and any
following directives
Gavin Heavyside - ACCU 2015 - @gavinheavyside 42
ONBUILD
ONBUILD bin/rake db:assets:precompile
• Trigger instruction to run when image is used
as a base for another build
• Only for direct child of this image
• Runs after FROM directive in child build
Gavin Heavyside - ACCU 2015 - @gavinheavyside 43
Gavin Heavyside - ACCU 2015 - @gavinheavyside 44
Dockerfile Tips
• Choose your base image wisely
• Do the expensive work first
• Take advantage of caching and layering
• Use .dockerignore
Gavin Heavyside - ACCU 2015 - @gavinheavyside 45
Gavin Heavyside - ACCU 2015 - @gavinheavyside 46
Pulling Images From a Registry
docker pull elasticsearch
docker pull private.globocorp.com/elasticsearch
Gavin Heavyside - ACCU 2015 - @gavinheavyside 47
Tags
docker pull nginx:latest
docker pull nginx:1.7.11
----- ------
| |
repo tag
Gavin Heavyside - ACCU 2015 - @gavinheavyside 48
Running your own
registry
• registry (Docker < 1.6)
• distribution (Docker 1.6+)
• dogestry
Gavin Heavyside - ACCU 2015 - @gavinheavyside 49
Storage
• Transient
• Local
• Persistent (portable)
• Probably the hardest thing to get right at
the moment
Gavin Heavyside - ACCU 2015 - @gavinheavyside 50
Volumes
Gavin Heavyside - ACCU 2015 - @gavinheavyside 51
VOLUME directive
• Indicates the container wants to use external
storagee
--volumes-from
• mount VOLUME paths from container A in
container B
Gavin Heavyside - ACCU 2015 - @gavinheavyside 52
Persistent Storage
docker run -v /local/path:/container/
path elasticsearch
• local path on filesystem is mounted in
container
• persists after the container exits
• Portability across machines in a cluster is still a
hard problem
Gavin Heavyside - ACCU 2015 - @gavinheavyside 53
Linking Containers
docker run -d -p 80:80 --name app1 app1:latest
docker run --link app1:app1 app2:latest
• The code running in the app2 container can
now talk to app1 on port 80, using the URI
http://app1:80
• Not limited to HTTP!
Gavin Heavyside - ACCU 2015 - @gavinheavyside 54
Tailoring your app for Docker
• Docker works best when containers have a
single responsibility
• not necessarily a single process
• Some design choices can make you life easier
in production
Gavin Heavyside - ACCU 2015 - @gavinheavyside 55
The 12-Factor App
• http://12factor.net
• Codebase
• Dependencies
• Config
• Backing Services
• Build;Release;Run
• Processes
Gavin Heavyside - ACCU 2015 - @gavinheavyside 56
The 12-Factor App
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
Gavin Heavyside - ACCU 2015 - @gavinheavyside 57
12 Factor - Dependencies
• http://12factor.net/dependencies
• Explicitly declare and isolate dependencies
• No implicit deps "leak in"
• Full and explicit dependency spec is applied
in all envs, dev and prod
Gavin Heavyside - ACCU 2015 - @gavinheavyside 58
12 Factor - Config
• http://12factor.net/config
• Store config in the environment
• Config is everything that can change between
deploys; dev, test, and production
Gavin Heavyside - ACCU 2015 - @gavinheavyside 59
12 Factor - Port Binding
• http://12factor.net/port-binding
• App should be entirely self-contained
• Expose services via port binding
• Not just for HTTP
• Remember health check endpoints
Gavin Heavyside - ACCU 2015 - @gavinheavyside 60
12 Factor - Dev/Prod Parity
• http://12factor.net/dev-prod-parity
• Keep development, staging, and production
as similar as possible
• Fewer moving parts means fewer people,
skills, less time to push to production
Gavin Heavyside - ACCU 2015 - @gavinheavyside 61
12 Factor - Logs
• http://12factor.net/logs
• Treat logs as event streams
• Log to stdout
• Collect, rotate, and centralise logs outside the
app
Gavin Heavyside - ACCU 2015 - @gavinheavyside 62
Computation Containers
• A program Q, with preconditions P, will
produce output R
• P and Q can change when we move between
environments
• Docker containers can form a complete
statement of the runtime environment P, and
the program to run Q
Gavin Heavyside - ACCU 2015 - @gavinheavyside 63
Toolchain in a container
$ docker run --rm -v `pwd`:/src 
-w /src golang:1.4 go build hello.go
Gavin Heavyside - ACCU 2015 - @gavinheavyside 64
Toolchain in a container
$ docker run --rm -v `pwd`:/src 
-w /src golang:1.4 go build hello.go
BUT - I'm on OS X and my boot2docker host is
running Linux
Gavin Heavyside - ACCU 2015 - @gavinheavyside 65
Toolchain in a container
$ docker run --rm -v `pwd`:/src 
-w /src golang:1.4 go build
$ ./hello
exec format error: hello
$ file hello
hello: ELF 64-bit LSB executable, ...
Gavin Heavyside - ACCU 2015 - @gavinheavyside 66
Toolchain in a container
$ docker run --rm -v src:/src 
-e "GOOS=darwin" 
-w /src golang:1.4-cross 
go build
$ file hello
hello: Mach-O 64-bit executable x86_64
$ ./hello
Hello, World
Gavin Heavyside - ACCU 2015 - @gavinheavyside 67
Choosing a base image
• Enough foundation, but not too much
• Security and hardening, provenance
• Reuseability
• Compatibility
Gavin Heavyside - ACCU 2015 - @gavinheavyside 68
The PID 1 Reaping
Problem
• Unix processes are modelled like a tree
• PID 1 is the top-most process
• Typically this is an init process
Gavin Heavyside - ACCU 2015 - @gavinheavyside 69
Gavin Heavyside - ACCU 2015 - @gavinheavyside 70
What to do?
• Nothing
• Specify a different init
• runit
• supervisord
• phusion/baseimage-docker
• other init process
Gavin Heavyside - ACCU 2015 - @gavinheavyside 71
Minimalist Host OS
Gavin Heavyside - ACCU 2015 - @gavinheavyside 72
Features of the New
Minimal OSes
• Small and lightweight
• Specialised, not general purpose
• Quick to install and boot
• Smaller surface area to harden and defend
• Applications deployed as containers
Gavin Heavyside - ACCU 2015 - @gavinheavyside 73
Features of the New
Minimal OSes
• Read-only system files
• Transactional platform updates
• Backup, rollback
• Delta patches
• Signatures and fingerprints
Gavin Heavyside - ACCU 2015 - @gavinheavyside 74
Examples of Minimalist
OSes
• Snappy Ubuntu Core
• Project Atomic
• CoreOS
• Docker compatible, pushing own
containers
• RancherOS
Gavin Heavyside - ACCU 2015 - @gavinheavyside 75
CoreOS
• Etcd
• Rkt
• Fleet
• Flannel
Gavin Heavyside - ACCU 2015 - @gavinheavyside 76
Docker on
Windows
Gavin Heavyside - ACCU 2015 - @gavinheavyside 77
Docker Client
Gavin Heavyside - ACCU 2015 - @gavinheavyside 78
Windows Links
• http://azure.microsoft.com/blog/tag/docker/
• http://azure.microsoft.com/blog/2015/04/08/
microsoft-unveils-new-container-
technologies-for-the-next-generation-cloud/
• http://azure.microsoft.com/blog/2015/04/16/
docker-client-for-windows-is-now-available/
Gavin Heavyside - ACCU 2015 - @gavinheavyside 79
Cluster
Management
Gavin Heavyside - ACCU 2015 - @gavinheavyside 80
Cattle, Not Pets
• Not snowflakes, either
• Care about the service, not the server
• Easier said than done
Gavin Heavyside - ACCU 2015 - @gavinheavyside 81
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Host 1 │ │ Host 2 │ │ Host 3 │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐┌──┐ │
│ │ ││ ││ │ │ │ │ ││ ││ │ │ │ │ ││ ││ │ │
│ └──┘└──┘└──┘ │ │ └──┘└──┘└──┘ │ │ └──┘└──┘└──┘ │
└──────────────┘ └──────────────┘ └──────────────┘
Gavin Heavyside - ACCU 2015 - @gavinheavyside 82
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Host 1 │ │ Host 2 │ │ Host 3 │
│ ┌──┐ │ │ │ │ │
│ │ │ │ │ │ │ │
│ └──┘ │ │ │ │ │
│ ┌──┐┌──┐┌──┐ │ │ │ │ │
│ │ ││ ││ │ │ │ │ │ │
│ └──┘└──┘└──┘ │ │ │ │ │
│ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐ │ │ │
│ │ ││ ││ │ │ │ │ ││ │ │ │ │
│ └──┘└──┘└──┘ │ │ └──┘└──┘ │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
Gavin Heavyside - ACCU 2015 - @gavinheavyside 83
┌──────────────┐ ┌──────────────┐
│ Host 1 │ │ Host 2 │
│ ┌──┐ │ │ │
│ │ │ │ │ │
│ └──┘ │ │ │
│ ┌──┐┌──┐┌──┐ │ │ │
│ │ ││ ││ │ │ │ │
│ └──┘└──┘└──┘ │ │ │
│ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐ │
│ │ ││ ││ │ │ │ │ ││ │ │
│ └──┘└──┘└──┘ │ │ └──┘└──┘ │
└──────────────┘ └──────────────┘
Gavin Heavyside - ACCU 2015 - @gavinheavyside 84
Cluster Management
• Kubernetes
• Docker Swarm
• CoreOS Fleet
• AWS ECS
• Google Container Service
• More
Gavin Heavyside - ACCU 2015 - @gavinheavyside 85
Kubernetes
Gavin Heavyside - ACCU 2015 - @gavinheavyside 86
Kubernetes
• Abstract at the service level, not container
• Compose services from containers
• Dependencies
• CPU, RAM, placement
• Container start order
• services, load balancing
Gavin Heavyside - ACCU 2015 - @gavinheavyside 87
Hosted Kubernetes
• Google Container Engine (Alpha)
• Hosted K8 on Google Cloud Platform
• Tectonic (Beta)
• by CoreOS
Gavin Heavyside - ACCU 2015 - @gavinheavyside 88
AWS EC2 Container
Service
• Hosted Docker orchestration on EC2 (GA)
• Multi-container dependencies
• Placement and scheduling
• one-off
• service
• pluggable (e.g. Mesos)
Gavin Heavyside - ACCU 2015 - @gavinheavyside 89
Service Discovery
• How do your services talk to each other?
• How do they find each other in a dynamically
allocated cluster?
• Docker container linking only works within a
host (so far)
Gavin Heavyside - ACCU 2015 - @gavinheavyside 90
Service Discovery
• Message buses (e.g. rabbitMQ)
• DNS
• Service Discovery Tools
• Load balancing and health checking
Gavin Heavyside - ACCU 2015 - @gavinheavyside 91
Service Discovery Tools
• DNS
• SmartStack (nerve, synapse)
• Etcd (and SkyDNS)
• Consul
• More
Gavin Heavyside - ACCU 2015 - @gavinheavyside 92
Consul
• https://consul.io
• K/V, DNS interfaces, ACLs
• Services, health checks, load balancing
• serf gossip protocol, raft consensus algorithm
• distributed, highly available
Gavin Heavyside - ACCU 2015 - @gavinheavyside 93
Registrator
• https://github.com/gliderlabs/registrator
• Container watches Docker engine events,
dynamically registers services with backends
• Etcd, Consul, SkyDNS support
• Automatically publish addresses and ports of
services across your infrastructure
Gavin Heavyside - ACCU 2015 - @gavinheavyside 94
Logs
• Easier if containers log to stdout, saved on the
host
• Can mount log dir as a volume in container if
needed
• Consider running e.g. logstash on the host,
archiving and centralising logs
• New syslog support in Docker 1.6
Gavin Heavyside - ACCU 2015 - @gavinheavyside 95
Monitoring
• Some dedicated tools appearing, hosted and
open source
• Still an area with catching up to do
• Traditional tools can monitor the health of
apps via exposed ports and endpoints
Gavin Heavyside - ACCU 2015 - @gavinheavyside 96
Wrapping Up
Gavin Heavyside - ACCU 2015 - @gavinheavyside 97
Gavin Heavyside - ACCU 2015 - @gavinheavyside 98
Image Credits
• minimalist room: https://www.flickr.com/
photos/colinsite/14089317769
• cluster: https://www.flickr.com/photos/
skiwalker79/3306092836
• wrapping: https://www.flickr.com/photos/
georigami/14253603878
• zombies: https://www.flickr.com/photos/
reana/3238910501
Gavin Heavyside - ACCU 2015 - @gavinheavyside 99
Image Credits
• goals: https://www.flickr.com/photos/
peterfuchs/1239399915
• complexity: https://www.flickr.com/photos/
bitterjug/7670055210
• volume: http://en.wikipedia.org/wiki/
Up_to_eleven
• containers: https://www.flickr.com/photos/
cseeman/11102312383
Gavin Heavyside - ACCU 2015 - @gavinheavyside 100

More Related Content

What's hot

Devops & Configuration management tools
Devops & Configuration management toolsDevops & Configuration management tools
Devops & Configuration management toolsSonu Meena
 
Docker Containers for Continuous Delivery
Docker Containers for Continuous DeliveryDocker Containers for Continuous Delivery
Docker Containers for Continuous DeliverySynerzip
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins PipelinesSteffen Gebert
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
 
Using CVMFS on a distributed Kubernetes cluster - The PRP Experience
Using CVMFS on a distributed Kubernetes cluster - The PRP ExperienceUsing CVMFS on a distributed Kubernetes cluster - The PRP Experience
Using CVMFS on a distributed Kubernetes cluster - The PRP ExperienceIgor Sfiligoi
 
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015Simon McCartney
 
Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Roman Pickl
 
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems IntegrationJenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems IntegrationOleg Nenashev
 
CI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und KubernetesCI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und Kubernetesinovex GmbH
 
Composing Project Archetyps with SBT AutoPlugins
Composing Project Archetyps with SBT AutoPluginsComposing Project Archetyps with SBT AutoPlugins
Composing Project Archetyps with SBT AutoPluginsMark Schaake
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java DevelopersNGINX, Inc.
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfIvan Vasyliev
 
Developing Microservices with Apache Camel, by Claus Ibsen
Developing Microservices with Apache Camel, by Claus IbsenDeveloping Microservices with Apache Camel, by Claus Ibsen
Developing Microservices with Apache Camel, by Claus IbsenJudy Breedlove
 
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins Mando Stam
 
Automate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOpsAutomate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOpsDaniel Oh
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSBamdad Dashtban
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with JenkinsJadson Santos
 
The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...Oleg Nenashev
 

What's hot (20)

Devops & Configuration management tools
Devops & Configuration management toolsDevops & Configuration management tools
Devops & Configuration management tools
 
Docker Containers for Continuous Delivery
Docker Containers for Continuous DeliveryDocker Containers for Continuous Delivery
Docker Containers for Continuous Delivery
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
 
Using CVMFS on a distributed Kubernetes cluster - The PRP Experience
Using CVMFS on a distributed Kubernetes cluster - The PRP ExperienceUsing CVMFS on a distributed Kubernetes cluster - The PRP Experience
Using CVMFS on a distributed Kubernetes cluster - The PRP Experience
 
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
 
Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)
 
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems IntegrationJenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
 
CI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und KubernetesCI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und Kubernetes
 
Composing Project Archetyps with SBT AutoPlugins
Composing Project Archetyps with SBT AutoPluginsComposing Project Archetyps with SBT AutoPlugins
Composing Project Archetyps with SBT AutoPlugins
 
Git training
Git trainingGit training
Git training
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconf
 
Developing Microservices with Apache Camel, by Claus Ibsen
Developing Microservices with Apache Camel, by Claus IbsenDeveloping Microservices with Apache Camel, by Claus Ibsen
Developing Microservices with Apache Camel, by Claus Ibsen
 
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
 
Automate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOpsAutomate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOps
 
Gradle
GradleGradle
Gradle
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
 
The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...
 

Viewers also liked

Coding Dojo - Surrey Rubyists #2 - 26 April 2011
Coding Dojo - Surrey Rubyists #2 - 26 April 2011Coding Dojo - Surrey Rubyists #2 - 26 April 2011
Coding Dojo - Surrey Rubyists #2 - 26 April 2011Gavin Heavyside
 
Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010Gavin Heavyside
 
Solo or together
Solo or togetherSolo or together
Solo or togetherSSMC
 
God's ultimate purpose rom8 18 30
God's ultimate purpose rom8 18 30God's ultimate purpose rom8 18 30
God's ultimate purpose rom8 18 30SSMC
 
De eerste echte update
De eerste echte updateDe eerste echte update
De eerste echte updateMirne
 
Audience Research
Audience ResearchAudience Research
Audience Researchguest743866
 
Laughing ..
Laughing ..Laughing ..
Laughing ..SSMC
 
Tourist attractions
Tourist attractionsTourist attractions
Tourist attractionsmaucgg80
 
Relihiyon Ng Allah
Relihiyon Ng AllahRelihiyon Ng Allah
Relihiyon Ng AllahFanar
 
Fotos de Articulos 1
Fotos de Articulos 1Fotos de Articulos 1
Fotos de Articulos 1Omayra
 
Maximize How You Individualize: because the Journey and Outcome Matter
Maximize How You Individualize: because the Journey and Outcome Matter  Maximize How You Individualize: because the Journey and Outcome Matter
Maximize How You Individualize: because the Journey and Outcome Matter Nicholas Kontopoulos
 
Presentation web 2.0
Presentation web 2.0Presentation web 2.0
Presentation web 2.0maucgg80
 
Jhonner rondon informatica tema vi
Jhonner rondon informatica tema viJhonner rondon informatica tema vi
Jhonner rondon informatica tema vijhonner Rondon
 
Presentation web 2.0
Presentation web 2.0Presentation web 2.0
Presentation web 2.0maucgg80
 
前端工程與Rwd _ 中原大學資管系
前端工程與Rwd _ 中原大學資管系前端工程與Rwd _ 中原大學資管系
前端工程與Rwd _ 中原大學資管系彭其捷 Jack
 
Voice thread tutorial
Voice thread tutorialVoice thread tutorial
Voice thread tutorialmaucgg80
 
Discussing characters within thriller
Discussing characters within thrillerDiscussing characters within thriller
Discussing characters within thrillerguest743866
 

Viewers also liked (20)

Weather abood
Weather aboodWeather abood
Weather abood
 
Coding Dojo - Surrey Rubyists #2 - 26 April 2011
Coding Dojo - Surrey Rubyists #2 - 26 April 2011Coding Dojo - Surrey Rubyists #2 - 26 April 2011
Coding Dojo - Surrey Rubyists #2 - 26 April 2011
 
Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010
 
Solo or together
Solo or togetherSolo or together
Solo or together
 
God's ultimate purpose rom8 18 30
God's ultimate purpose rom8 18 30God's ultimate purpose rom8 18 30
God's ultimate purpose rom8 18 30
 
De eerste echte update
De eerste echte updateDe eerste echte update
De eerste echte update
 
Audience Research
Audience ResearchAudience Research
Audience Research
 
Laughing ..
Laughing ..Laughing ..
Laughing ..
 
Tourist attractions
Tourist attractionsTourist attractions
Tourist attractions
 
Film Techniques
Film TechniquesFilm Techniques
Film Techniques
 
Relihiyon Ng Allah
Relihiyon Ng AllahRelihiyon Ng Allah
Relihiyon Ng Allah
 
Fotos de Articulos 1
Fotos de Articulos 1Fotos de Articulos 1
Fotos de Articulos 1
 
Maximize How You Individualize: because the Journey and Outcome Matter
Maximize How You Individualize: because the Journey and Outcome Matter  Maximize How You Individualize: because the Journey and Outcome Matter
Maximize How You Individualize: because the Journey and Outcome Matter
 
Presentation web 2.0
Presentation web 2.0Presentation web 2.0
Presentation web 2.0
 
Jhonner rondon informatica tema vi
Jhonner rondon informatica tema viJhonner rondon informatica tema vi
Jhonner rondon informatica tema vi
 
Presentation web 2.0
Presentation web 2.0Presentation web 2.0
Presentation web 2.0
 
前端工程與Rwd _ 中原大學資管系
前端工程與Rwd _ 中原大學資管系前端工程與Rwd _ 中原大學資管系
前端工程與Rwd _ 中原大學資管系
 
Voice thread tutorial
Voice thread tutorialVoice thread tutorial
Voice thread tutorial
 
Social
SocialSocial
Social
 
Discussing characters within thriller
Discussing characters within thrillerDiscussing characters within thriller
Discussing characters within thriller
 

Similar to Docker at ACCU2015

EWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker ApplianceEWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker ApplianceRob Tweed
 
Automated Infrastructure and Application Management
Automated Infrastructure and Application ManagementAutomated Infrastructure and Application Management
Automated Infrastructure and Application ManagementClark Everetts
 
Improving WordPress Development and Deployments with Docker
Improving WordPress Development and Deployments with DockerImproving WordPress Development and Deployments with Docker
Improving WordPress Development and Deployments with DockerBrett Palmer
 
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on AzureDocker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on AzurePatrick Chanezon
 
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure Patrick Chanezon
 
Docker for PHP Developers - php[world] 2017
Docker for PHP Developers - php[world] 2017Docker for PHP Developers - php[world] 2017
Docker for PHP Developers - php[world] 2017Chris Tankersley
 
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018Mandi Walls
 
Galera on kubernetes_no_video
Galera on kubernetes_no_videoGalera on kubernetes_no_video
Galera on kubernetes_no_videoPatrick Galbraith
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationGiacomo Vacca
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksGoDataDriven
 
Building the Pipeline of My Dreams
Building the Pipeline of My DreamsBuilding the Pipeline of My Dreams
Building the Pipeline of My DreamsGene Gotimer
 
Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019Maura Teal
 
Docker 101 @KACST Saudi HPC 2016
Docker 101  @KACST Saudi HPC 2016Docker 101  @KACST Saudi HPC 2016
Docker 101 @KACST Saudi HPC 2016Walid Shaari
 
WebSphere and Docker
WebSphere and DockerWebSphere and Docker
WebSphere and DockerDavid Currie
 
From Docker to Production - ZendCon 2016
From Docker to Production - ZendCon 2016From Docker to Production - ZendCon 2016
From Docker to Production - ZendCon 2016Chris Tankersley
 
Continuous Testing using Shippable and Docker
Continuous Testing using Shippable and DockerContinuous Testing using Shippable and Docker
Continuous Testing using Shippable and DockerMukta Aphale
 

Similar to Docker at ACCU2015 (20)

EWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker ApplianceEWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker Appliance
 
Automated Infrastructure and Application Management
Automated Infrastructure and Application ManagementAutomated Infrastructure and Application Management
Automated Infrastructure and Application Management
 
Improving WordPress Development and Deployments with Docker
Improving WordPress Development and Deployments with DockerImproving WordPress Development and Deployments with Docker
Improving WordPress Development and Deployments with Docker
 
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on AzureDocker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
 
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
 
Cicd.pdf
Cicd.pdfCicd.pdf
Cicd.pdf
 
Docker for PHP Developers - php[world] 2017
Docker for PHP Developers - php[world] 2017Docker for PHP Developers - php[world] 2017
Docker for PHP Developers - php[world] 2017
 
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
 
Galera on kubernetes_no_video
Galera on kubernetes_no_videoGalera on kubernetes_no_video
Galera on kubernetes_no_video
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
 
Docker for Developers
Docker for DevelopersDocker for Developers
Docker for Developers
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
 
Building the Pipeline of My Dreams
Building the Pipeline of My DreamsBuilding the Pipeline of My Dreams
Building the Pipeline of My Dreams
 
Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019
 
Docker 101 @KACST Saudi HPC 2016
Docker 101  @KACST Saudi HPC 2016Docker 101  @KACST Saudi HPC 2016
Docker 101 @KACST Saudi HPC 2016
 
WebSphere and Docker
WebSphere and DockerWebSphere and Docker
WebSphere and Docker
 
ConcourseCi overview
ConcourseCi  overviewConcourseCi  overview
ConcourseCi overview
 
From Docker to Production - ZendCon 2016
From Docker to Production - ZendCon 2016From Docker to Production - ZendCon 2016
From Docker to Production - ZendCon 2016
 
Continuous Testing using Shippable and Docker
Continuous Testing using Shippable and DockerContinuous Testing using Shippable and Docker
Continuous Testing using Shippable and Docker
 
Dockerize All The Things
Dockerize All The ThingsDockerize All The Things
Dockerize All The Things
 

Recently uploaded

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

Docker at ACCU2015

  • 1. DOCKER Gavin Heavyside - ACCU 2015 - @gavinheavyside 1
  • 2. Gavin Heavyside - ACCU 2015 - @gavinheavyside 2
  • 3. Gavin Heavyside - ACCU 2015 - @gavinheavyside 3
  • 4. Gavin Heavyside - ACCU 2015 - @gavinheavyside 4
  • 5. Gavin Heavyside - ACCU 2015 - @gavinheavyside 5
  • 6. Gavin Heavyside - ACCU 2015 - @gavinheavyside 6
  • 7. Gavin Heavyside - ACCU 2015 - @gavinheavyside 7
  • 8. Gavin Heavyside - ACCU 2015 - @gavinheavyside 8
  • 9. Goals Gavin Heavyside - ACCU 2015 - @gavinheavyside 9
  • 10. ship it Gavin Heavyside - ACCU 2015 - @gavinheavyside 10
  • 11. Docker Components • Engine • Hub • Compose • Swarm • Machine Gavin Heavyside - ACCU 2015 - @gavinheavyside 11
  • 12. Docker Engine Gavin Heavyside - ACCU 2015 - @gavinheavyside 12
  • 13. Docker Client-Server ┌───────┐ ┌───────────────────────────────────┐ │Client ├┐ │ ┌──────────────────┐ ┌──────────┐│ └┬──────┘├─┬─┼──│ Docker Daemon │ │Container ││ └─┬─────┘ │ │ └─────────────────┬┘ └──────────┘│ └───────┘ │ │ │ ┌──────────┐│ │ ┌───────┐ │ └──│Container ││ │ │Client │─┘ └──────────┘│ │ └───────┘ ┌──────────┐│ │ │Container ││ │ Docker Host └──────────┘│ └───────────────────────────────────┘ Gavin Heavyside - ACCU 2015 - @gavinheavyside 13
  • 14. Docker Client attach build commit cp create diff events exec export history images import info inspect kill load login logout logs port pause ps pull push rename restart rm rmi run save search start stats stop tag top unpause version wait Gavin Heavyside - ACCU 2015 - @gavinheavyside 14
  • 15. Running a Docker Container docker run -i -t ubuntu /bin/bash Gavin Heavyside - ACCU 2015 - @gavinheavyside 15
  • 16. Running a Docker Container docker run -i -t ubuntu /bin/bash • Pulls the ubuntu image Gavin Heavyside - ACCU 2015 - @gavinheavyside 16
  • 17. Running a Docker Container docker run -i -t ubuntu /bin/bash • Creates a new container Gavin Heavyside - ACCU 2015 - @gavinheavyside 17
  • 18. Running a Docker Container docker run -i -t ubuntu /bin/bash • Allocates a filesystem and mounts a R/W layer Gavin Heavyside - ACCU 2015 - @gavinheavyside 18
  • 19. Running a Docker Container docker run -i -t ubuntu /bin/bash • Allocates a network / bridge interface Gavin Heavyside - ACCU 2015 - @gavinheavyside 19
  • 20. Running a Docker Container docker run -i -t ubuntu /bin/bash • Sets up an IP address Gavin Heavyside - ACCU 2015 - @gavinheavyside 20
  • 21. Running a Docker Container docker run -i -t ubuntu /bin/bash • Executes your process Gavin Heavyside - ACCU 2015 - @gavinheavyside 21
  • 22. Running a Docker Container docker run -i -t ubuntu /bin/bash • Captures and provides application output Gavin Heavyside - ACCU 2015 - @gavinheavyside 22
  • 23. How it works (Short Version) • Written in Go • Takes advantange of Linux kernel features • Namespaces • Control Groups (cgroups) • Union File System • libcontainer Gavin Heavyside - ACCU 2015 - @gavinheavyside 23
  • 24. Namespaces • Separation of groups of processes • Can't 'see' resources in other groups • PID namespace, network, mount, IPC, and more Gavin Heavyside - ACCU 2015 - @gavinheavyside 24
  • 25. Namespaces • Docker creates a set of namespaces for each container. • Isolation layer • each aspect of a container runs in own namespace • does not have access outside it • some used by Docker: pid, net, ipc, mnt, uts Gavin Heavyside - ACCU 2015 - @gavinheavyside 25
  • 26. Control Groups (cgroups) • limit, account, and isolate resources used by a collection of processes • CPU, memory, disk I/O, network, etc. • The basis of many container projects • Docker, LXC, lmctfy, Mesos, and more Gavin Heavyside - ACCU 2015 - @gavinheavyside 26
  • 27. cgroups • allow Docker to share available hardware resources to containers • set up limits and constraints, if required Gavin Heavyside - ACCU 2015 - @gavinheavyside 27
  • 28. Setting Resource Limits docker run -m 256m --cpu-shares 512 yourapp Gavin Heavyside - ACCU 2015 - @gavinheavyside 28
  • 29. Union File Systems • Layer files and dirs • Can be from different file systems • Present as a single filesystem • Can have RO and RW layers Gavin Heavyside - ACCU 2015 - @gavinheavyside 29
  • 30. ┌───────────────────────────────────────┐ │ Writeable Layer Container │ └───────────────────────────────────────┘ ┌───────────────────────────────────────┐ │ ADD apache Image │ └───────────────────────────────────────┘ ┌───────────────────────────────────────┐ │ ADD emacs Image │ └───────────────────────────────────────┘ ┌───────────────────────────────────────┐ │ FROM debian Base Image │ └───────────────────────────────────────┘ ┌───────────────────────────────────────┐ │ Kernel │ └───────────────────────────────────────┘ Gavin Heavyside - ACCU 2015 - @gavinheavyside 30
  • 31. Union File Systems • UnionFS • aufs • btrfs • and more... Gavin Heavyside - ACCU 2015 - @gavinheavyside 31
  • 32. libcontainer • https://github.com/docker/libcontainer • Default supported container format • Creates containers with namespaces, cgroups, capabilities, and filesystem access controls • Manages lifecycle of the container Gavin Heavyside - ACCU 2015 - @gavinheavyside 32
  • 33. Other container technologies • Solaris Zones • lmctfy • rkt • LXC • BSD Jails Gavin Heavyside - ACCU 2015 - @gavinheavyside 33
  • 34. Building a Container • Write a Dockerfile • build the image with docker build • run it with docker run • Share by pushing to a registry Gavin Heavyside - ACCU 2015 - @gavinheavyside 34
  • 35. The Dockerfile • Plain text file • Series of directives • add files • expose ports • execute commands • configure runtime Gavin Heavyside - ACCU 2015 - @gavinheavyside 35
  • 36. The Dockerfile FROM busybox RUN mkdir -p /usr/local/bin COPY ./hello /usr/local/bin/hello CMD ["/usr/local/bin/hello"] Gavin Heavyside - ACCU 2015 - @gavinheavyside 36
  • 37. FROM FROM ubuntu:14.04 • Base image (& tag) to start building from MAINTAINER MAINTAINER Peter V "venkman@1984.com" • Who ya gonna call? Gavin Heavyside - ACCU 2015 - @gavinheavyside 37
  • 38. RUN RUN apt-get update && apt-get -y upgrade • Execute command in a new layer and commit • defaults to using /bin/sh • RUN ["/bin/bash", "-c", "uptime"] Gavin Heavyside - ACCU 2015 - @gavinheavyside 38
  • 39. CMD CMD ["executable","param1","param2"] • Default command to execute Gavin Heavyside - ACCU 2015 - @gavinheavyside 39
  • 40. EXPOSE RUN apt-get install nginx EXPOSE 80 • Ports for the continer to listen on • Used for interconnecting linked containers • Doesn't automatically map to the host Gavin Heavyside - ACCU 2015 - @gavinheavyside 40
  • 41. ENV ENV FOO=bar • Set an environment variable in the container ADD / COPY COPY /my/src /opt/container/src • Copy content to the container filesystem Gavin Heavyside - ACCU 2015 - @gavinheavyside 41
  • 42. USER USER nginx • Set the UID for the image and any following directives WORKDIR WORKDIR /path/to/workdir • set the working dir for the image and any following directives Gavin Heavyside - ACCU 2015 - @gavinheavyside 42
  • 43. ONBUILD ONBUILD bin/rake db:assets:precompile • Trigger instruction to run when image is used as a base for another build • Only for direct child of this image • Runs after FROM directive in child build Gavin Heavyside - ACCU 2015 - @gavinheavyside 43
  • 44. Gavin Heavyside - ACCU 2015 - @gavinheavyside 44
  • 45. Dockerfile Tips • Choose your base image wisely • Do the expensive work first • Take advantage of caching and layering • Use .dockerignore Gavin Heavyside - ACCU 2015 - @gavinheavyside 45
  • 46. Gavin Heavyside - ACCU 2015 - @gavinheavyside 46
  • 47. Pulling Images From a Registry docker pull elasticsearch docker pull private.globocorp.com/elasticsearch Gavin Heavyside - ACCU 2015 - @gavinheavyside 47
  • 48. Tags docker pull nginx:latest docker pull nginx:1.7.11 ----- ------ | | repo tag Gavin Heavyside - ACCU 2015 - @gavinheavyside 48
  • 49. Running your own registry • registry (Docker < 1.6) • distribution (Docker 1.6+) • dogestry Gavin Heavyside - ACCU 2015 - @gavinheavyside 49
  • 50. Storage • Transient • Local • Persistent (portable) • Probably the hardest thing to get right at the moment Gavin Heavyside - ACCU 2015 - @gavinheavyside 50
  • 51. Volumes Gavin Heavyside - ACCU 2015 - @gavinheavyside 51
  • 52. VOLUME directive • Indicates the container wants to use external storagee --volumes-from • mount VOLUME paths from container A in container B Gavin Heavyside - ACCU 2015 - @gavinheavyside 52
  • 53. Persistent Storage docker run -v /local/path:/container/ path elasticsearch • local path on filesystem is mounted in container • persists after the container exits • Portability across machines in a cluster is still a hard problem Gavin Heavyside - ACCU 2015 - @gavinheavyside 53
  • 54. Linking Containers docker run -d -p 80:80 --name app1 app1:latest docker run --link app1:app1 app2:latest • The code running in the app2 container can now talk to app1 on port 80, using the URI http://app1:80 • Not limited to HTTP! Gavin Heavyside - ACCU 2015 - @gavinheavyside 54
  • 55. Tailoring your app for Docker • Docker works best when containers have a single responsibility • not necessarily a single process • Some design choices can make you life easier in production Gavin Heavyside - ACCU 2015 - @gavinheavyside 55
  • 56. The 12-Factor App • http://12factor.net • Codebase • Dependencies • Config • Backing Services • Build;Release;Run • Processes Gavin Heavyside - ACCU 2015 - @gavinheavyside 56
  • 57. The 12-Factor App • Port Binding • Concurrency • Disposability • Dev/Prod Parity • Logs • Admin Processes Gavin Heavyside - ACCU 2015 - @gavinheavyside 57
  • 58. 12 Factor - Dependencies • http://12factor.net/dependencies • Explicitly declare and isolate dependencies • No implicit deps "leak in" • Full and explicit dependency spec is applied in all envs, dev and prod Gavin Heavyside - ACCU 2015 - @gavinheavyside 58
  • 59. 12 Factor - Config • http://12factor.net/config • Store config in the environment • Config is everything that can change between deploys; dev, test, and production Gavin Heavyside - ACCU 2015 - @gavinheavyside 59
  • 60. 12 Factor - Port Binding • http://12factor.net/port-binding • App should be entirely self-contained • Expose services via port binding • Not just for HTTP • Remember health check endpoints Gavin Heavyside - ACCU 2015 - @gavinheavyside 60
  • 61. 12 Factor - Dev/Prod Parity • http://12factor.net/dev-prod-parity • Keep development, staging, and production as similar as possible • Fewer moving parts means fewer people, skills, less time to push to production Gavin Heavyside - ACCU 2015 - @gavinheavyside 61
  • 62. 12 Factor - Logs • http://12factor.net/logs • Treat logs as event streams • Log to stdout • Collect, rotate, and centralise logs outside the app Gavin Heavyside - ACCU 2015 - @gavinheavyside 62
  • 63. Computation Containers • A program Q, with preconditions P, will produce output R • P and Q can change when we move between environments • Docker containers can form a complete statement of the runtime environment P, and the program to run Q Gavin Heavyside - ACCU 2015 - @gavinheavyside 63
  • 64. Toolchain in a container $ docker run --rm -v `pwd`:/src -w /src golang:1.4 go build hello.go Gavin Heavyside - ACCU 2015 - @gavinheavyside 64
  • 65. Toolchain in a container $ docker run --rm -v `pwd`:/src -w /src golang:1.4 go build hello.go BUT - I'm on OS X and my boot2docker host is running Linux Gavin Heavyside - ACCU 2015 - @gavinheavyside 65
  • 66. Toolchain in a container $ docker run --rm -v `pwd`:/src -w /src golang:1.4 go build $ ./hello exec format error: hello $ file hello hello: ELF 64-bit LSB executable, ... Gavin Heavyside - ACCU 2015 - @gavinheavyside 66
  • 67. Toolchain in a container $ docker run --rm -v src:/src -e "GOOS=darwin" -w /src golang:1.4-cross go build $ file hello hello: Mach-O 64-bit executable x86_64 $ ./hello Hello, World Gavin Heavyside - ACCU 2015 - @gavinheavyside 67
  • 68. Choosing a base image • Enough foundation, but not too much • Security and hardening, provenance • Reuseability • Compatibility Gavin Heavyside - ACCU 2015 - @gavinheavyside 68
  • 69. The PID 1 Reaping Problem • Unix processes are modelled like a tree • PID 1 is the top-most process • Typically this is an init process Gavin Heavyside - ACCU 2015 - @gavinheavyside 69
  • 70. Gavin Heavyside - ACCU 2015 - @gavinheavyside 70
  • 71. What to do? • Nothing • Specify a different init • runit • supervisord • phusion/baseimage-docker • other init process Gavin Heavyside - ACCU 2015 - @gavinheavyside 71
  • 72. Minimalist Host OS Gavin Heavyside - ACCU 2015 - @gavinheavyside 72
  • 73. Features of the New Minimal OSes • Small and lightweight • Specialised, not general purpose • Quick to install and boot • Smaller surface area to harden and defend • Applications deployed as containers Gavin Heavyside - ACCU 2015 - @gavinheavyside 73
  • 74. Features of the New Minimal OSes • Read-only system files • Transactional platform updates • Backup, rollback • Delta patches • Signatures and fingerprints Gavin Heavyside - ACCU 2015 - @gavinheavyside 74
  • 75. Examples of Minimalist OSes • Snappy Ubuntu Core • Project Atomic • CoreOS • Docker compatible, pushing own containers • RancherOS Gavin Heavyside - ACCU 2015 - @gavinheavyside 75
  • 76. CoreOS • Etcd • Rkt • Fleet • Flannel Gavin Heavyside - ACCU 2015 - @gavinheavyside 76
  • 77. Docker on Windows Gavin Heavyside - ACCU 2015 - @gavinheavyside 77
  • 78. Docker Client Gavin Heavyside - ACCU 2015 - @gavinheavyside 78
  • 79. Windows Links • http://azure.microsoft.com/blog/tag/docker/ • http://azure.microsoft.com/blog/2015/04/08/ microsoft-unveils-new-container- technologies-for-the-next-generation-cloud/ • http://azure.microsoft.com/blog/2015/04/16/ docker-client-for-windows-is-now-available/ Gavin Heavyside - ACCU 2015 - @gavinheavyside 79
  • 80. Cluster Management Gavin Heavyside - ACCU 2015 - @gavinheavyside 80
  • 81. Cattle, Not Pets • Not snowflakes, either • Care about the service, not the server • Easier said than done Gavin Heavyside - ACCU 2015 - @gavinheavyside 81
  • 82. ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Host 1 │ │ Host 2 │ │ Host 3 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐┌──┐ │ │ │ ││ ││ │ │ │ │ ││ ││ │ │ │ │ ││ ││ │ │ │ └──┘└──┘└──┘ │ │ └──┘└──┘└──┘ │ │ └──┘└──┘└──┘ │ └──────────────┘ └──────────────┘ └──────────────┘ Gavin Heavyside - ACCU 2015 - @gavinheavyside 82
  • 83. ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Host 1 │ │ Host 2 │ │ Host 3 │ │ ┌──┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ │ │ │ │ │ │ ┌──┐┌──┐┌──┐ │ │ │ │ │ │ │ ││ ││ │ │ │ │ │ │ │ └──┘└──┘└──┘ │ │ │ │ │ │ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐ │ │ │ │ │ ││ ││ │ │ │ │ ││ │ │ │ │ │ └──┘└──┘└──┘ │ │ └──┘└──┘ │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ Gavin Heavyside - ACCU 2015 - @gavinheavyside 83
  • 84. ┌──────────────┐ ┌──────────────┐ │ Host 1 │ │ Host 2 │ │ ┌──┐ │ │ │ │ │ │ │ │ │ │ └──┘ │ │ │ │ ┌──┐┌──┐┌──┐ │ │ │ │ │ ││ ││ │ │ │ │ │ └──┘└──┘└──┘ │ │ │ │ ┌──┐┌──┐┌──┐ │ │ ┌──┐┌──┐ │ │ │ ││ ││ │ │ │ │ ││ │ │ │ └──┘└──┘└──┘ │ │ └──┘└──┘ │ └──────────────┘ └──────────────┘ Gavin Heavyside - ACCU 2015 - @gavinheavyside 84
  • 85. Cluster Management • Kubernetes • Docker Swarm • CoreOS Fleet • AWS ECS • Google Container Service • More Gavin Heavyside - ACCU 2015 - @gavinheavyside 85
  • 86. Kubernetes Gavin Heavyside - ACCU 2015 - @gavinheavyside 86
  • 87. Kubernetes • Abstract at the service level, not container • Compose services from containers • Dependencies • CPU, RAM, placement • Container start order • services, load balancing Gavin Heavyside - ACCU 2015 - @gavinheavyside 87
  • 88. Hosted Kubernetes • Google Container Engine (Alpha) • Hosted K8 on Google Cloud Platform • Tectonic (Beta) • by CoreOS Gavin Heavyside - ACCU 2015 - @gavinheavyside 88
  • 89. AWS EC2 Container Service • Hosted Docker orchestration on EC2 (GA) • Multi-container dependencies • Placement and scheduling • one-off • service • pluggable (e.g. Mesos) Gavin Heavyside - ACCU 2015 - @gavinheavyside 89
  • 90. Service Discovery • How do your services talk to each other? • How do they find each other in a dynamically allocated cluster? • Docker container linking only works within a host (so far) Gavin Heavyside - ACCU 2015 - @gavinheavyside 90
  • 91. Service Discovery • Message buses (e.g. rabbitMQ) • DNS • Service Discovery Tools • Load balancing and health checking Gavin Heavyside - ACCU 2015 - @gavinheavyside 91
  • 92. Service Discovery Tools • DNS • SmartStack (nerve, synapse) • Etcd (and SkyDNS) • Consul • More Gavin Heavyside - ACCU 2015 - @gavinheavyside 92
  • 93. Consul • https://consul.io • K/V, DNS interfaces, ACLs • Services, health checks, load balancing • serf gossip protocol, raft consensus algorithm • distributed, highly available Gavin Heavyside - ACCU 2015 - @gavinheavyside 93
  • 94. Registrator • https://github.com/gliderlabs/registrator • Container watches Docker engine events, dynamically registers services with backends • Etcd, Consul, SkyDNS support • Automatically publish addresses and ports of services across your infrastructure Gavin Heavyside - ACCU 2015 - @gavinheavyside 94
  • 95. Logs • Easier if containers log to stdout, saved on the host • Can mount log dir as a volume in container if needed • Consider running e.g. logstash on the host, archiving and centralising logs • New syslog support in Docker 1.6 Gavin Heavyside - ACCU 2015 - @gavinheavyside 95
  • 96. Monitoring • Some dedicated tools appearing, hosted and open source • Still an area with catching up to do • Traditional tools can monitor the health of apps via exposed ports and endpoints Gavin Heavyside - ACCU 2015 - @gavinheavyside 96
  • 97. Wrapping Up Gavin Heavyside - ACCU 2015 - @gavinheavyside 97
  • 98. Gavin Heavyside - ACCU 2015 - @gavinheavyside 98
  • 99. Image Credits • minimalist room: https://www.flickr.com/ photos/colinsite/14089317769 • cluster: https://www.flickr.com/photos/ skiwalker79/3306092836 • wrapping: https://www.flickr.com/photos/ georigami/14253603878 • zombies: https://www.flickr.com/photos/ reana/3238910501 Gavin Heavyside - ACCU 2015 - @gavinheavyside 99
  • 100. Image Credits • goals: https://www.flickr.com/photos/ peterfuchs/1239399915 • complexity: https://www.flickr.com/photos/ bitterjug/7670055210 • volume: http://en.wikipedia.org/wiki/ Up_to_eleven • containers: https://www.flickr.com/photos/ cseeman/11102312383 Gavin Heavyside - ACCU 2015 - @gavinheavyside 100