SlideShare a Scribd company logo
1 of 65
Download to read offline
FullStack Developers Israel
Docking micro services
with

Haggai	
  Philip	
  Zagury	
  
28.1.2014
Google Campus T.A

Hosted by:
WHO AM I ?
Haggai Philip Zagury,
DevOps Engineer

	
   	
   }
{
● 
● 
● 
● 

Continuous integration
Continuous delivery
It Operations
Configuration management

over 10 years of
DevOps expertise
“ 	
  I am a member of Tikal's
DevOps/ALM group. With over
15 members, we meet, share,
contribute and code together
on a monthly basis

“
WHO WE ARE?
We help companies build,
deliver, deploy, manage
and optimize their products.
OUR EXPERTISE
Where are we
going today
	
  	
  

text
How CM & Deployment changed
Between
Monolithic & SOA / MSA
Stack => Stacks
More Technologies
More Technologies

More Services (API’s)
More Technologies

More Services (API’s)

More Teams
ch team with
Ea

it’s own
“madness”
MONOLITHIC
app deployment

FABRIC	
  

}

1	
  …	
  n	
  

*	
  n	
  
1	
  …	
  n	
  
MONOLITHIC style for SOA/MSA

FABRIC	
  

}

service	
  A	
  
*	
  n	
  
service	
  B	
  

service	
  C	
  
MONOLITHIC style for SOA/MSA
Team	
  /	
  Service	
  A	
  
MONOLITHIC style for SOA/MSA
Team	
  /	
  Service	
  B	
  
MONOLITHIC style for SOA/MSA
Team	
  /	
  Service	
  C	
  
MONOLITHIC style for SOA/MSA

FABRIC	
  

}

*	
  n	
  
text

MONOLITHIC “style”

System provisioning (& OS provisioning)
•  Much more “base images” in order to save time
	
   Deployment takes much longer (ad hoc configuration)
• 
•  Consolidate in order to save time
•  Backup & Restore ? doesn’t save time :(
•  Security ?
text

MONOLITHIC “style”

I	
  need	
  xyz	
  installed	
  
• Kernel	
  version	
  not	
  supported	
  
• Other	
  component's	
  depend	
  on	
  that	
  
• Wait	
  for	
  next	
  release	
  /	
  OS	
  upgrade	
  
text

More images == GB/$$/PERF
Between 100MB & nGB

Cost in storage … [ e.g. S3 ]
Cost in performance [ VMware …]
From library dependency)
From library dependency
runtime directory (encapsulation)
From library dependency
runtime directory (encapsulation)
“.service” (hybrid)
Choose 1 tool for the job ?!

FABRIC	
  

}

service	
  A	
  
*	
  n	
  
service	
  B	
  

service	
  C	
  
Containers	
  
•  OSLV	
  -­‐	
  OperaJng	
  System	
  Level	
  VirtualizaJon	
  (link)	
  
•  API	
  &	
  tooling,	
  which	
  enable	
  *nix	
  users	
  to	
  easily	
  
create	
  and	
  manage	
  system	
  or	
  applicaJon	
  
containers.	
  
	
  
What are containers anyway ?
text

Linux Containers (LXC) - Why ?

Isn't there enough container tech ?
•  Solaris Zones (containers - link)
	
   Vserver
• 
•  Openvz
•  Chroot

Why now ?
•  Solaris not widely used as linux/freebsd …
	
   Linux kernel support ( >= 2.6.27 )
• 
•  Application segmentation
•  We really need it !!! => “.service” era
text

Linux Containers (LXC) - Why ?

Features
•  Kernel namespaces [ isolated processes, network etc ]
	
  
•  Chroot & Seccomp (isolation)

•  Control groups (a.k.a cgroups)
	
  

Limitation	
  
• Only Linux !
text

Revolution – Hard/Software

From	
  Rack	
  servers	
  =>	
  Blade	
  
So what’s this DOCKER and
why do I need it ?
Why DOCKER ?
Why?
•  A wrapper for LXC
•  An abstraction layer for LXC + features
So Why not “plain old” LXC ?
•  Portable deployments across machines
• 
• 
• 

LXC alone doesn't guarantee that !
Docker build - a “build tool” designed for portability
Application centric / OS centric [ Docker’s API ]

•  SHA-1 (git like) based versioning
• 
• 

DRY / Reuse - 1 base image for many applications
Sharing - index (global) or registry (private / on prem)
text

Docker ( & LXC ) Solve !

ISOLATION
•  Daemon per container
	
  

Any	
  version	
  is	
  supported	
  
text

Docker ( & LXC ) Solve !

ISOLATION
•  Daemon per container
	
  
SECURITY	
  
•  Container == Independent ( user/group/service etc)
•  New version == new container ( not toe trading …)
text

Docker ( & LXC ) Solve !

ISOLATION
•  Daemon per container
	
  
SECURITY	
  
•  Container == Independent ( user/group/service etc)
•  New version == new container ( not toe trading …)

PORTABILITY	
  
•  Container on DEV machine => to production
•  Deploy from private registry
•  Rollback == latest -1
VM	
  vs	
  Container	
  

• 
• 
• 
• 

No hypervisor layer
No lib duplication
Shared kernel
VMS are “heavy”

• 
• 
• 
• 

5-10 x Faster
Startup time
VMS are “heavy”
Better utilize HW (cloud)
Docker - lightweight

• 
• 

Reuse kernel
Add functionality to a
container, version it, share it
Micro service example

Docker	
  

•  ROR	
  front	
  end	
  
•  Key-­‐value	
  store	
  
Host	
  /	
  VM	
  	
  
Workflow(s)
The developer workflow
●  How do we test locally ? { if running on
windows / OSX }
●  Define an interface with operations ?
Vagrant & Docker
Vagrant.configure("2") do |config|
config.vm.box = "dummy" config.vm.provider :docker do |docker|
docker.image = "your/image:tag"
docker.cmd

= ["/path/to/your", "command"]

end
end

vagrant	
  plugin	
  install	
  docker-­‐provider	
  
	
  
-­‐	
  docker	
  friendly	
  vagrant	
  image	
  
Fast,	
  isolated	
  development	
  
environments	
  using	
  Docker.	
  
•  Define your application’s environment
•  OS
•  Packages
•  Configuration ! etc
•  Number of machines ?
•  Define a container via Dockerfile
•  Use that Dockerfile to define your environment (via yaml
file)
web:	
  
workfl
o

w	
  

	
  	
  build:	
  .	
  
	
  	
  links:	
  
	
  	
  	
  -­‐	
  db	
  
	
  	
  ports:	
  
	
  	
  	
  -­‐	
  8000:8000	
  
db:	
  
	
  	
  image:	
  hagzag/pgsql	
  
Search & Get an image
docker	
  search	
  <keyword>	
  
	
  

root@docker-­‐poc:/tmp#	
  docker	
  search	
  centos*6	
  
NAME	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  DESCRIPTION	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  
	
  
	
  STARS	
  	
  	
  	
  	
  OFFICIAL	
  	
  	
  TRUSTED	
  
saltstack/centos-­‐6	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  
	
  
	
  0	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  
	
  	
  	
  	
  [OK]	
  
salgest/centos-­‐6	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  
	
  
	
  0	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  
	
  	
  	
  	
  [OK]	
  
saltstack/centos-­‐6-­‐minimal	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  
	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  
	
  	
  	
  	
  [OK]	
  
leifw/tokumx-­‐buildslave-­‐centos-­‐6	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  
	
  0	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  
	
  	
  	
  	
  [OK]	
  
tenforward/centos-­‐i386	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  CentOS	
  6	
  32bit	
  image	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  
hansode/rpmbuilder-­‐rhel6	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  CentOS-­‐6	
  with	
  rpmdevtools	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  
...	
  

hgp://index.Docker.io	
  
Define your own
Dockerfile	
  -­‐>	
  Redis	
  server	
  running	
  in	
  a	
  container	
  	
  
#	
  Docker	
  Image/tag	
  
FROM	
  	
  	
  	
  	
  	
  	
  	
   	
  ubuntu:12.10	
  
#	
  command(s)	
  to	
  execute	
  on	
  container	
  	
  
RUN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  apt-­‐get	
  update	
  
RUN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
  apt-­‐get	
  -­‐y	
  install	
  redis-­‐server	
  
#	
  what	
  port	
  to	
  listen	
  on	
  
EXPOSE	
  	
  	
  	
  	
  
	
  6379	
  
#	
  once	
  container	
  is	
  acJve	
  what	
  binary	
  to	
  run	
  
ENTRYPOINT	
  	
   	
  ["/usr/bin/redis-­‐server"]	
  
Docker - Choose base
docker	
  pull	
  user/container-­‐name	
  
	
  

root@docker-­‐poc:/tmp#	
  docker	
  pull	
  saltstack/centos-­‐6-­‐minimal	
  
Pulling	
  repository	
  saltstack/centos-­‐6-­‐minimal	
  
aca320b373f2:	
  Download	
  complete	
  
f2f28f99c5fd:	
  Download	
  complete	
  
bf9724189396:	
  Download	
  complete	
  
e7adb01c55f6:	
  Download	
  complete	
  
a3f13a39bbbe:	
  Download	
  complete	
  
	
  
	
  

Git	
  style	
  “tags”	
  

Salt	
  –	
  inside	
  …	
  
Docker build
build	
  from	
  Dockerfile	
  	
  
	
  
docker	
  build	
  .	
  
	
  
Step	
  1	
  :	
  FROM	
  ubuntu:12.10	
  
	
  -­‐-­‐-­‐>	
  b750fe79269d	
  
Step	
  2	
  :	
  RUN	
  apt-­‐get	
  update	
  
	
  -­‐-­‐-­‐>	
  Running	
  in	
  0d768rc284d	
  
Fetched	
  9813	
  kB	
  in	
  20s	
  (481	
  kB/s)	
  
	
  -­‐-­‐-­‐>	
  46a6f0556e96	
  
Step	
  3	
  :	
  RUN	
  apt-­‐get	
  -­‐y	
  install	
  redis-­‐server	
  
	
  -­‐-­‐-­‐>	
  Running	
  in	
  5ea88c37d21f	
  
The	
  following	
  extra	
  packages	
  will	
  be	
  installed:	
  
	
  	
  libjemalloc1	
  
The	
  following	
  NEW	
  packages	
  will	
  be	
  installed:	
  
	
  	
  libjemalloc1	
  redis-­‐server	
  
0	
  upgraded,	
  2	
  newly	
  installed,	
  0	
  to	
  remove	
  and	
  0	
  not	
  upgraded.	
  
Need	
  to	
  get	
  319	
  kB	
  of	
  archives.	
  
	
  
Docker build
…	
  
Processing	
  triggers	
  for	
  ureadahead	
  ...	
  
	
  -­‐-­‐-­‐>	
  ba4030995701	
  
Step	
  4	
  :	
  EXPOSE	
  6379	
  
	
  -­‐-­‐-­‐>	
  Running	
  in	
  24720beda74b	
  
	
  -­‐-­‐-­‐>	
  6fdf06372117	
  
Step	
  5	
  :	
  ENTRYPOINT	
  ["/usr/bin/redis-­‐server"]	
  
	
  -­‐-­‐-­‐>	
  Running	
  in	
  c9b9480840ad	
  
	
  -­‐-­‐-­‐>	
  a6dd4adbb425	
  
Successfully	
  built	
  a6dd4adbb425	
  
	
  
docker	
  images	
  
REPOSITORY	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAG	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  IMAGE	
  ID	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CREATED	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  VIRTUAL	
  SIZE	
  
<none>	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <none>	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  a6dd4adbb425	
  	
  	
  	
  	
  	
  	
  	
  8	
  minutes	
  ago	
  	
  	
  	
  	
  	
  	
  297.2	
  MB	
  
Docker tag & push
docker	
  tag	
  a6dd4adbb425	
  localhost:5000/redis_hagzag	
  
	
  
	
  
docker	
  push	
  localhost:5000/redis_hagzag	
  
The	
  push	
  refers	
  to	
  a	
  repository	
  [localhost:5000/redis_hagzag]	
  (len:	
  1)	
  
Sending	
  image	
  list	
  
Pushing	
  repository	
  localhost:5000/redis_hagzag	
  (1	
  tags)	
  
27cf78414709:	
  Image	
  successfully	
  pushed	
  
b750fe79269d:	
  Image	
  successfully	
  pushed	
  
46a6f0556e96:	
  Image	
  successfully	
  pushed	
  
ba4030995701:	
  Image	
  successfully	
  pushed	
  
6fdf06372117:	
  Image	
  successfully	
  pushed	
  
a6dd4adbb425:	
  Image	
  successfully	
  pushed	
  
Pushing	
  tags	
  for	
  rev	
  [a6dd4adbb425]	
  on	
  {hgp://localhost:5000/v1/repositories/
redis_hagzag/tags/latest}	
  
The Deployment workflow
●  Provide docker-registry service / interface
●  Monitoring & Logging facilities
●  Data binding / persistent configuration
Our service

Docker	
  

•  Using	
  –name	
  &	
  -­‐link	
  
•  Linking	
  containers	
  by	
  
reference	
  (not	
  ip)	
  

Host	
  /	
  VM	
  	
  

build	
  run	
  +	
  -­‐name,	
  build	
  run	
  +	
  -­‐link	
  tag	
  =	
  complete	
  “.service”	
  on	
  a	
  single	
  node	
  
Docker run & ps
docker	
  run	
  -­‐name	
  redis	
  -­‐d	
  a6dd4adbb425	
  
	
  
	
  
	
  
docker	
  ps	
  

CONTAINER	
  ID	
  	
  	
  	
  	
  	
  	
  	
  IMAGE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  COMMAND	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CREATED	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  STATUS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  PORTS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  NAMES	
  
9026507ef675	
  	
  	
  	
  	
  	
  	
  	
  a6dd4adbb425	
  	
  /usr/bin/redis-­‐serve	
  	
  	
  12	
  minutes	
  ago	
  	
  	
  	
  	
  	
  Up	
  12	
  minutes	
  	
  	
  	
  	
  	
  	
  6379/tcp	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
redis	
  
7e88dcb96856	
  	
  	
  	
  	
  	
  	
  	
  registry:0.6.1	
  	
  	
  	
  	
  	
  /bin/sh	
  -­‐c	
  cd	
  /docke	
  	
  	
  9	
  days	
  ago	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Up	
  40	
  minutes	
  	
  	
  	
  	
  	
  	
  0.0.0.0:5000-­‐>5000/
tcp	
  	
  	
  condescending_thompson	
  

	
  
Docker inspect
docker	
  inspect	
  redis	
  
	
  
	
  
	
  
What we achieved ?
docker	
  push	
  <reg-­‐name>/app-­‐1	
  

docker	
  pull	
  <reg-­‐name>/app-­‐1	
  

take	
  tag	
  “latest”	
  of	
  app	
  A	
  

In container responsibility
●  Latest code
●  Dependencies

Out container responsibility
●  Security & Remote access
●  Logging
●  Monitoring
●  Networking

Immutability ? - not just yet … but we are getting close
Evolving with Docker
DevEnv	
  
• 
• 
• 
• 

FIG	
  
Vagrant	
  –	
  buggy	
  
Chef-­‐docker	
  (hgps://github.com/bflad/chef-­‐docker)	
  	
  
Chef	
  Docker	
  registry	
  (
hgp://community.opscode.com/cookbooks/docker-­‐registry)	
  	
  

OpsEnv	
  
•  Chef-­‐docker	
  (hgps://github.com/bflad/chef-­‐docker)	
  	
  
•  Chef	
  Docker	
  registry	
  (
hgp://community.opscode.com/cookbooks/docker-­‐registry)	
  	
  
•  Puppet	
  docker	
  (hgp://forge.puppetlabs.com/garethr/docker)	
  	
  
•  DOTCLOUDS	
  (focke	
  authors)	
  –	
  About	
  to	
  base	
  PASS	
  based	
  on	
  Docker	
  
Search for “Dockerfile”
A nodejs container …
Heroku like with Docker = Dokku

hgps://github.com/progrium/dokku	
  
Heroku like
with LXC + Chef = Diez

hgp://deis.io/	
  

hgps://github.com/opdemand/deis	
  
To Summarize
•  Very promising & almost J production ready
•  A great complementary to existing CM tooling
•  Simplifies deployment (I know it doesn’t seem so)
	
  

text
Thank You
Haggai	
  Philip	
  Zagury	
  
Email:	
  hagzag@Jkalk.com	
  

More Related Content

What's hot

Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in developmentAdam Culp
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to productionmuayyad alsadi
 
dockerizing web application
dockerizing web applicationdockerizing web application
dockerizing web applicationWalid Ashraf
 
Continuous Integration and DevOps with Open Build Service(OBS)
Continuous Integration and DevOps with Open Build Service(OBS)Continuous Integration and DevOps with Open Build Service(OBS)
Continuous Integration and DevOps with Open Build Service(OBS)Ralf Dannert
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEMario-Leander Reimer
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
Red Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA Architecture
Red Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA ArchitectureRed Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA Architecture
Red Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA ArchitectureEtsuji Nakai
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 PresentationSreenivas Makam
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefMatt Ray
 
Docker 101 2015-05-28
Docker 101 2015-05-28Docker 101 2015-05-28
Docker 101 2015-05-28Adrian Otto
 
Docker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPDocker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPChris Tankersley
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsAlessandro Pilotti
 
Docker security introduction-task-2016
Docker security introduction-task-2016Docker security introduction-task-2016
Docker security introduction-task-2016Ricardo Gerardi
 
From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017Chris Tankersley
 
青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker Registry青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker RegistryZhichao Liang
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...dotCloud
 
Vagrant crash course
Vagrant crash courseVagrant crash course
Vagrant crash courseMarcus Deglos
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTCGiacomo Vacca
 

What's hot (20)

Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to production
 
dockerizing web application
dockerizing web applicationdockerizing web application
dockerizing web application
 
Continuous Integration and DevOps with Open Build Service(OBS)
Continuous Integration and DevOps with Open Build Service(OBS)Continuous Integration and DevOps with Open Build Service(OBS)
Continuous Integration and DevOps with Open Build Service(OBS)
 
Make Accelerator Pluggable for Container Engine
Make Accelerator Pluggable for Container EngineMake Accelerator Pluggable for Container Engine
Make Accelerator Pluggable for Container Engine
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
Red Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA Architecture
Red Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA ArchitectureRed Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA Architecture
Red Hat Enterprise Linux OpenStack Platform 7 - VM Instance HA Architecture
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and Chef
 
Docker 101 2015-05-28
Docker 101 2015-05-28Docker 101 2015-05-28
Docker 101 2015-05-28
 
Docker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPDocker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHP
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
 
Docker security introduction-task-2016
Docker security introduction-task-2016Docker security introduction-task-2016
Docker security introduction-task-2016
 
From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017
 
青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker Registry青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker Registry
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
 
Vagrant crash course
Vagrant crash courseVagrant crash course
Vagrant crash course
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC
 
The state of the swarm
The state of the swarmThe state of the swarm
The state of the swarm
 

Similar to Docking your services_with_docker

Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Dockernklmish
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with DockerPatrick Mizer
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Productiondevopsdaysaustin
 
Linux Containers and Docker SHARE.ORG Seattle 2015
Linux Containers and Docker SHARE.ORG Seattle 2015Linux Containers and Docker SHARE.ORG Seattle 2015
Linux Containers and Docker SHARE.ORG Seattle 2015Filipe Miranda
 
Docker introduction
Docker introductionDocker introduction
Docker introductionJo Ee Liew
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationErica Windisch
 
WebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerWebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerDavid Currie
 
Docker module 1
Docker module 1Docker module 1
Docker module 1Liang Bo
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and dockersflynn073
 
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdfOpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdfssuser9e06a61
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionBen Hall
 
Start tracking your ruby infrastructure
Start tracking your ruby infrastructureStart tracking your ruby infrastructure
Start tracking your ruby infrastructureSergiy Kukunin
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installationRobert Bohne
 
Docker and coreos20141020b
Docker and coreos20141020bDocker and coreos20141020b
Docker and coreos20141020bRichard Kuo
 
OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...
OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...
OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...OpenNebula Project
 
Fn project quick installation guide
Fn project quick installation guideFn project quick installation guide
Fn project quick installation guideJohan Louwers
 
Docker London Meetup: Docker Engine Evolution
Docker London Meetup: Docker Engine EvolutionDocker London Meetup: Docker Engine Evolution
Docker London Meetup: Docker Engine EvolutionPhil Estes
 
Docker 102 - Immutable Infrastructure
Docker 102 - Immutable InfrastructureDocker 102 - Immutable Infrastructure
Docker 102 - Immutable InfrastructureAdrian Otto
 

Similar to Docking your services_with_docker (20)

Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Docker
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with Docker
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
 
Linux Containers and Docker SHARE.ORG Seattle 2015
Linux Containers and Docker SHARE.ORG Seattle 2015Linux Containers and Docker SHARE.ORG Seattle 2015
Linux Containers and Docker SHARE.ORG Seattle 2015
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
 
WebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerWebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and Docker
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and docker
 
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdfOpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
Start tracking your ruby infrastructure
Start tracking your ruby infrastructureStart tracking your ruby infrastructure
Start tracking your ruby infrastructure
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installation
 
Docker and coreos20141020b
Docker and coreos20141020bDocker and coreos20141020b
Docker and coreos20141020b
 
OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...
OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...
OpenNebulaConf 2016 - OpenNebula, a story about flexibility and technological...
 
Fn project quick installation guide
Fn project quick installation guideFn project quick installation guide
Fn project quick installation guide
 
Docker London Meetup: Docker Engine Evolution
Docker London Meetup: Docker Engine EvolutionDocker London Meetup: Docker Engine Evolution
Docker London Meetup: Docker Engine Evolution
 
Docker 102 - Immutable Infrastructure
Docker 102 - Immutable InfrastructureDocker 102 - Immutable Infrastructure
Docker 102 - Immutable Infrastructure
 
2015 05-06-elias weingaertner-docker-intro
2015 05-06-elias weingaertner-docker-intro2015 05-06-elias weingaertner-docker-intro
2015 05-06-elias weingaertner-docker-intro
 

More from Tikal Knowledge

Clojure - LISP on the JVM
Clojure - LISP on the JVM Clojure - LISP on the JVM
Clojure - LISP on the JVM Tikal Knowledge
 
Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...Tikal Knowledge
 
Processing Big Data in Realtime
Processing Big Data in RealtimeProcessing Big Data in Realtime
Processing Big Data in RealtimeTikal Knowledge
 
Writing a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media playerWriting a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media playerTikal Knowledge
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
Tikal's Backbone_js introduction workshop
Tikal's Backbone_js introduction workshopTikal's Backbone_js introduction workshop
Tikal's Backbone_js introduction workshopTikal Knowledge
 
Cloud computing - an insight into "how does it really work ?"
Cloud computing - an insight into "how does it really work ?" Cloud computing - an insight into "how does it really work ?"
Cloud computing - an insight into "how does it really work ?" Tikal Knowledge
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud ComputingTikal Knowledge
 
Tikal Fuse Day Access Layer Implementation (C#) Based On Mongo Db
Tikal Fuse Day   Access Layer Implementation (C#) Based On Mongo DbTikal Fuse Day   Access Layer Implementation (C#) Based On Mongo Db
Tikal Fuse Day Access Layer Implementation (C#) Based On Mongo DbTikal Knowledge
 
Ship early ship often with Django
Ship early ship often with DjangoShip early ship often with Django
Ship early ship often with DjangoTikal Knowledge
 
Introduction To Cloud Computing
Introduction To Cloud ComputingIntroduction To Cloud Computing
Introduction To Cloud ComputingTikal Knowledge
 
Building Components In Flex3
Building Components In Flex3Building Components In Flex3
Building Components In Flex3Tikal Knowledge
 

More from Tikal Knowledge (20)

Clojure - LISP on the JVM
Clojure - LISP on the JVM Clojure - LISP on the JVM
Clojure - LISP on the JVM
 
Clojure presentation
Clojure presentationClojure presentation
Clojure presentation
 
Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...
 
Kafka short
Kafka shortKafka short
Kafka short
 
Heatmap
HeatmapHeatmap
Heatmap
 
Processing Big Data in Realtime
Processing Big Data in RealtimeProcessing Big Data in Realtime
Processing Big Data in Realtime
 
Who moved my_box
Who moved my_boxWho moved my_box
Who moved my_box
 
Writing a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media playerWriting a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media player
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
Tikal's Backbone_js introduction workshop
Tikal's Backbone_js introduction workshopTikal's Backbone_js introduction workshop
Tikal's Backbone_js introduction workshop
 
TCE Automation
TCE AutomationTCE Automation
TCE Automation
 
Tce automation-d4
Tce automation-d4Tce automation-d4
Tce automation-d4
 
Cloud computing - an insight into "how does it really work ?"
Cloud computing - an insight into "how does it really work ?" Cloud computing - an insight into "how does it really work ?"
Cloud computing - an insight into "how does it really work ?"
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
Tikal Fuse Day Access Layer Implementation (C#) Based On Mongo Db
Tikal Fuse Day   Access Layer Implementation (C#) Based On Mongo DbTikal Fuse Day   Access Layer Implementation (C#) Based On Mongo Db
Tikal Fuse Day Access Layer Implementation (C#) Based On Mongo Db
 
Ship early ship often with Django
Ship early ship often with DjangoShip early ship often with Django
Ship early ship often with Django
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
AWS Case Study
AWS Case StudyAWS Case Study
AWS Case Study
 
Introduction To Cloud Computing
Introduction To Cloud ComputingIntroduction To Cloud Computing
Introduction To Cloud Computing
 
Building Components In Flex3
Building Components In Flex3Building Components In Flex3
Building Components In Flex3
 

Recently uploaded

Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Docking your services_with_docker

  • 1. FullStack Developers Israel Docking micro services with Haggai  Philip  Zagury   28.1.2014 Google Campus T.A Hosted by:
  • 3. Haggai Philip Zagury, DevOps Engineer     } { ●  ●  ●  ●  Continuous integration Continuous delivery It Operations Configuration management over 10 years of DevOps expertise
  • 4. “  I am a member of Tikal's DevOps/ALM group. With over 15 members, we meet, share, contribute and code together on a monthly basis “
  • 6. We help companies build, deliver, deploy, manage and optimize their products.
  • 8. Where are we going today     text
  • 9. How CM & Deployment changed Between Monolithic & SOA / MSA
  • 10.
  • 14. More Technologies More Services (API’s) More Teams
  • 15. ch team with Ea it’s own “madness”
  • 16. MONOLITHIC app deployment FABRIC   } 1  …  n   *  n   1  …  n  
  • 17. MONOLITHIC style for SOA/MSA FABRIC   } service  A   *  n   service  B   service  C  
  • 18. MONOLITHIC style for SOA/MSA Team  /  Service  A  
  • 19. MONOLITHIC style for SOA/MSA Team  /  Service  B  
  • 20. MONOLITHIC style for SOA/MSA Team  /  Service  C  
  • 21. MONOLITHIC style for SOA/MSA FABRIC   } *  n  
  • 22. text MONOLITHIC “style” System provisioning (& OS provisioning) •  Much more “base images” in order to save time   Deployment takes much longer (ad hoc configuration) •  •  Consolidate in order to save time •  Backup & Restore ? doesn’t save time :( •  Security ?
  • 23. text MONOLITHIC “style” I  need  xyz  installed   • Kernel  version  not  supported   • Other  component's  depend  on  that   • Wait  for  next  release  /  OS  upgrade  
  • 24. text More images == GB/$$/PERF Between 100MB & nGB Cost in storage … [ e.g. S3 ] Cost in performance [ VMware …]
  • 25.
  • 26.
  • 28. From library dependency runtime directory (encapsulation)
  • 29. From library dependency runtime directory (encapsulation) “.service” (hybrid)
  • 30. Choose 1 tool for the job ?! FABRIC   } service  A   *  n   service  B   service  C  
  • 31. Containers   •  OSLV  -­‐  OperaJng  System  Level  VirtualizaJon  (link)   •  API  &  tooling,  which  enable  *nix  users  to  easily   create  and  manage  system  or  applicaJon   containers.    
  • 33. text Linux Containers (LXC) - Why ? Isn't there enough container tech ? •  Solaris Zones (containers - link)   Vserver •  •  Openvz •  Chroot Why now ? •  Solaris not widely used as linux/freebsd …   Linux kernel support ( >= 2.6.27 ) •  •  Application segmentation •  We really need it !!! => “.service” era
  • 34. text Linux Containers (LXC) - Why ? Features •  Kernel namespaces [ isolated processes, network etc ]   •  Chroot & Seccomp (isolation) •  Control groups (a.k.a cgroups)   Limitation   • Only Linux !
  • 35. text Revolution – Hard/Software From  Rack  servers  =>  Blade  
  • 36. So what’s this DOCKER and why do I need it ?
  • 37. Why DOCKER ? Why? •  A wrapper for LXC •  An abstraction layer for LXC + features So Why not “plain old” LXC ? •  Portable deployments across machines •  •  •  LXC alone doesn't guarantee that ! Docker build - a “build tool” designed for portability Application centric / OS centric [ Docker’s API ] •  SHA-1 (git like) based versioning •  •  DRY / Reuse - 1 base image for many applications Sharing - index (global) or registry (private / on prem)
  • 38. text Docker ( & LXC ) Solve ! ISOLATION •  Daemon per container   Any  version  is  supported  
  • 39. text Docker ( & LXC ) Solve ! ISOLATION •  Daemon per container   SECURITY   •  Container == Independent ( user/group/service etc) •  New version == new container ( not toe trading …)
  • 40. text Docker ( & LXC ) Solve ! ISOLATION •  Daemon per container   SECURITY   •  Container == Independent ( user/group/service etc) •  New version == new container ( not toe trading …) PORTABILITY   •  Container on DEV machine => to production •  Deploy from private registry •  Rollback == latest -1
  • 41. VM  vs  Container   •  •  •  •  No hypervisor layer No lib duplication Shared kernel VMS are “heavy” •  •  •  •  5-10 x Faster Startup time VMS are “heavy” Better utilize HW (cloud)
  • 42. Docker - lightweight •  •  Reuse kernel Add functionality to a container, version it, share it
  • 43. Micro service example Docker   •  ROR  front  end   •  Key-­‐value  store   Host  /  VM    
  • 45. The developer workflow ●  How do we test locally ? { if running on windows / OSX } ●  Define an interface with operations ?
  • 46. Vagrant & Docker Vagrant.configure("2") do |config| config.vm.box = "dummy" config.vm.provider :docker do |docker| docker.image = "your/image:tag" docker.cmd = ["/path/to/your", "command"] end end vagrant  plugin  install  docker-­‐provider     -­‐  docker  friendly  vagrant  image  
  • 47. Fast,  isolated  development   environments  using  Docker.   •  Define your application’s environment •  OS •  Packages •  Configuration ! etc •  Number of machines ? •  Define a container via Dockerfile •  Use that Dockerfile to define your environment (via yaml file) web:   workfl o w      build:  .      links:        -­‐  db      ports:        -­‐  8000:8000   db:      image:  hagzag/pgsql  
  • 48. Search & Get an image docker  search  <keyword>     root@docker-­‐poc:/tmp#  docker  search  centos*6   NAME                                                              DESCRIPTION                                                                                STARS          OFFICIAL      TRUSTED   saltstack/centos-­‐6                                                                                                                                        0                                                  [OK]   salgest/centos-­‐6                                                                                                                                          0                                                  [OK]   saltstack/centos-­‐6-­‐minimal                                                                                                                      1                                                  [OK]   leifw/tokumx-­‐buildslave-­‐centos-­‐6                                                                                                          0                                                  [OK]   tenforward/centos-­‐i386                            CentOS  6  32bit  image                                                        0   hansode/rpmbuilder-­‐rhel6                        CentOS-­‐6  with  rpmdevtools                                  0   ...   hgp://index.Docker.io  
  • 49. Define your own Dockerfile  -­‐>  Redis  server  running  in  a  container     #  Docker  Image/tag   FROM                  ubuntu:12.10   #  command(s)  to  execute  on  container     RUN                        apt-­‐get  update   RUN                        apt-­‐get  -­‐y  install  redis-­‐server   #  what  port  to  listen  on   EXPOSE            6379   #  once  container  is  acJve  what  binary  to  run   ENTRYPOINT      ["/usr/bin/redis-­‐server"]  
  • 50. Docker - Choose base docker  pull  user/container-­‐name     root@docker-­‐poc:/tmp#  docker  pull  saltstack/centos-­‐6-­‐minimal   Pulling  repository  saltstack/centos-­‐6-­‐minimal   aca320b373f2:  Download  complete   f2f28f99c5fd:  Download  complete   bf9724189396:  Download  complete   e7adb01c55f6:  Download  complete   a3f13a39bbbe:  Download  complete       Git  style  “tags”   Salt  –  inside  …  
  • 51. Docker build build  from  Dockerfile       docker  build  .     Step  1  :  FROM  ubuntu:12.10    -­‐-­‐-­‐>  b750fe79269d   Step  2  :  RUN  apt-­‐get  update    -­‐-­‐-­‐>  Running  in  0d768rc284d   Fetched  9813  kB  in  20s  (481  kB/s)    -­‐-­‐-­‐>  46a6f0556e96   Step  3  :  RUN  apt-­‐get  -­‐y  install  redis-­‐server    -­‐-­‐-­‐>  Running  in  5ea88c37d21f   The  following  extra  packages  will  be  installed:      libjemalloc1   The  following  NEW  packages  will  be  installed:      libjemalloc1  redis-­‐server   0  upgraded,  2  newly  installed,  0  to  remove  and  0  not  upgraded.   Need  to  get  319  kB  of  archives.    
  • 52. Docker build …   Processing  triggers  for  ureadahead  ...    -­‐-­‐-­‐>  ba4030995701   Step  4  :  EXPOSE  6379    -­‐-­‐-­‐>  Running  in  24720beda74b    -­‐-­‐-­‐>  6fdf06372117   Step  5  :  ENTRYPOINT  ["/usr/bin/redis-­‐server"]    -­‐-­‐-­‐>  Running  in  c9b9480840ad    -­‐-­‐-­‐>  a6dd4adbb425   Successfully  built  a6dd4adbb425     docker  images   REPOSITORY                                      TAG                                  IMAGE  ID                        CREATED                          VIRTUAL  SIZE   <none>                                              <none>                            a6dd4adbb425                8  minutes  ago              297.2  MB  
  • 53. Docker tag & push docker  tag  a6dd4adbb425  localhost:5000/redis_hagzag       docker  push  localhost:5000/redis_hagzag   The  push  refers  to  a  repository  [localhost:5000/redis_hagzag]  (len:  1)   Sending  image  list   Pushing  repository  localhost:5000/redis_hagzag  (1  tags)   27cf78414709:  Image  successfully  pushed   b750fe79269d:  Image  successfully  pushed   46a6f0556e96:  Image  successfully  pushed   ba4030995701:  Image  successfully  pushed   6fdf06372117:  Image  successfully  pushed   a6dd4adbb425:  Image  successfully  pushed   Pushing  tags  for  rev  [a6dd4adbb425]  on  {hgp://localhost:5000/v1/repositories/ redis_hagzag/tags/latest}  
  • 54. The Deployment workflow ●  Provide docker-registry service / interface ●  Monitoring & Logging facilities ●  Data binding / persistent configuration
  • 55. Our service Docker   •  Using  –name  &  -­‐link   •  Linking  containers  by   reference  (not  ip)   Host  /  VM     build  run  +  -­‐name,  build  run  +  -­‐link  tag  =  complete  “.service”  on  a  single  node  
  • 56. Docker run & ps docker  run  -­‐name  redis  -­‐d  a6dd4adbb425         docker  ps   CONTAINER  ID                IMAGE                              COMMAND                                CREATED                          STATUS                            PORTS                                        NAMES   9026507ef675                a6dd4adbb425    /usr/bin/redis-­‐serve      12  minutes  ago            Up  12  minutes              6379/tcp                                   redis   7e88dcb96856                registry:0.6.1            /bin/sh  -­‐c  cd  /docke      9  days  ago                    Up  40  minutes              0.0.0.0:5000-­‐>5000/ tcp      condescending_thompson    
  • 57. Docker inspect docker  inspect  redis        
  • 58. What we achieved ? docker  push  <reg-­‐name>/app-­‐1   docker  pull  <reg-­‐name>/app-­‐1   take  tag  “latest”  of  app  A   In container responsibility ●  Latest code ●  Dependencies Out container responsibility ●  Security & Remote access ●  Logging ●  Monitoring ●  Networking Immutability ? - not just yet … but we are getting close
  • 59. Evolving with Docker DevEnv   •  •  •  •  FIG   Vagrant  –  buggy   Chef-­‐docker  (hgps://github.com/bflad/chef-­‐docker)     Chef  Docker  registry  ( hgp://community.opscode.com/cookbooks/docker-­‐registry)     OpsEnv   •  Chef-­‐docker  (hgps://github.com/bflad/chef-­‐docker)     •  Chef  Docker  registry  ( hgp://community.opscode.com/cookbooks/docker-­‐registry)     •  Puppet  docker  (hgp://forge.puppetlabs.com/garethr/docker)     •  DOTCLOUDS  (focke  authors)  –  About  to  base  PASS  based  on  Docker  
  • 62. Heroku like with Docker = Dokku hgps://github.com/progrium/dokku  
  • 63. Heroku like with LXC + Chef = Diez hgp://deis.io/   hgps://github.com/opdemand/deis  
  • 64. To Summarize •  Very promising & almost J production ready •  A great complementary to existing CM tooling •  Simplifies deployment (I know it doesn’t seem so)   text
  • 65. Thank You Haggai  Philip  Zagury   Email:  hagzag@Jkalk.com