SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Ceph, Docker, Heroku Slugs, 
CoreOS and Deis Overview 
[EXTENDED] 
lorieri Nov/2014 @againstty0
Welcome 
to 
the 
future
“Ceph's main goals are to be completely 
distributed without a single point of failure, 
scalable to the exabyte level, and freely-available”
● 100% distributed 
● CephFS 
○ For POSIX sharing 
○ not really 100% (active-standby) 
● LibRados 
○ RBD 
■ For Blocks 
○ Rados Gateway 
■ For REST Objects 
■ S3 and Swift compatible
CephFS
● Rados Gateway 
$ s3cmd mb s3://mybucket 
Bucket 's3://mybucket/' created 
$ s3cmd put ~/myfile.txt s3://mybucket/ --acl-public 
/Users/lalorie/myfile.txt -> s3://mybucket/myfile.txt [1 of 1] 
15 of 15 100% in 0s 240.81 B/s done 
$ curl mybucket.myradosgw.com/myfile.txt 
myfile content
● RBD $ rbd create mypool/myimage --size 102400 
$ sudo rbd map mypool/myimage --name client.admin 
$ sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo 
$ sudo mount /dev/rbd/rbd/foo /media/disk1
● CephFS On ALL machines you want to share 
$ mount -t ceph  
10.0.0.1,10.0.0.2,10.0.0.3:/ /media/disk1 
10.0.0.[1-3] are the metadata servers
“Build, Ship and Run 
Any App, Anywhere”
● 100% portable 
● Easy API for LXC 
● Public Repository 
● Lightweight, 1 process (ideal) 
● Layers (Union File System) 
○ Shares read-only data 
○ Incremental 
● Volumes (not layered volumes)
FROM ubuntu:12.04 
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list 
RUN apt-get update && apt-get upgrade -y 
RUN apt-get install -y gcc make g++ build-essential libc6-dev tcl wget 
RUN wget http://download.redis.io/redis-stable.tar.gz -O - | tar -xvz 
RUN (cd /redis-stable && make) 
RUN (cd /redis-stable && make test) 
RUN mkdir -p /redis-data 
VOLUME ["/redis-data"] 
EXPOSE 6379 
ENTRYPOINT ["/redis-stable/src/redis-server"] 
CMD ["--dir", "/redis-data"]
● Slugs 
“A slug is a bundle of your source, 
fetched dependencies, the language 
runtime, and compiled/generated output 
of the build system - ready for execution.”
Slug 
Your App 
Git 
Buildpacks Repo 
$ git push 
Builder 
Runtime 
Code
● Twelve Factor 
“Who should read this document? 
Any developer building applications which run as 
a service. Ops engineers who deploy or manage 
such applications.”
● III - Config 
“Store config in the environment 
- easy to change between deploys without changing any code; 
- [not] checked into the code repo accidentally; 
- language- and OS-agnostic standard.”
● VI - Processes 
“Execute the app as one or 
more stateless processes 
Twelve-factor processes are stateless and share-nothing.”
● IX - Disposability 
“app’s processes are disposable, meaning 
they can be started or stopped at a moment’s 
notice”
● XI - Logs 
“Treat logs as event streams 
… streams of all running processes and backing services”
“Linux for Massive Server Deployments 
CoreOS enables warehouse-scale 
computing on top of a minimal, modern 
operating system.”
● 100% distributed 
● Lightweight 
● cloud-init for every boot 
● Automatic Updates 
○ 2 boot partitions
Etcd 
Locksmithd Confd 
Fleet 
Systemd Systemd Systemd Systemd Systemd Systemd Systemd 
Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7
Distributed database 
Reboot Admin Configuration Manager 
Distributed Init 
New Init New Init New Init New Init New Init New Init New Init 
Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7
Fleet
● Fleet 
Distributed 
Services 
[Unit] 
Description=deis-controller 
Requires=deis-store-volume.service 
After=deis-store-volume.service 
[Service] 
EnvironmentFile=/etc/environment 
TimeoutStartSec=20m 
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && 
docker history $IMAGE >/dev/null || docker pull $IMAGE" 
ExecStartPre=/bin/sh -c "docker inspect deis-controller >/dev/null && docker rm -f 
deis-controller || true" 
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && docker 
run --name deis-controller --rm -p 8000:8000 -e EXTERNAL_PORT=8000 -e 
HOST=$COREOS_PRIVATE_IPV4 -v /var/run/fleet.sock:/var/run/fleet.sock -v 
/var/lib/deis/store:/data $IMAGE" 
ExecStopPost=-/usr/bin/docker rm -f deis-controller 
Restart=on-failure 
RestartSec=5 
[Install] 
WantedBy=multi-user.target
● Fleet 
Distributed 
Services
“Your PaaS. Your Rules. 
An open source PaaS that makes it easy to 
deploy and manage applications on your 
own servers. Deis builds upon Docker and 
CoreOS to provide a lightweight PaaS 
with a Heroku-inspired workflow.”
● CoresOS + Docker + Ceph + Heroku 
● Twelve-Factor 
○ for Deis: must be stateless (no wordpress) 
● Nginx Router + Wildcard DNS 
● First release using Ceph 
○ more features coming soon 
● Limited 
○ twelve-factor 
○ only HTTP port (non-http soon) 
○ must expose ONLY one port
● Installation: 
○ Install CoreOS and ssh keys then: 
$ export DEISCTL_TUNNEL=coreos01 
$ curl -sSL http://deis.io/deisctl/install.sh | sh 
$ git clone https://github.com/deis/deis.git ; cd deis 
$ deisctl config platform set  
domain=mylocalpaas.com 
$ deisctl install platform && deisctl start platform
Installation will set the domain in 
the distributed database (Etcd) 
then load and run the 
“init” files (Fleet+Systemd) 
into the cluster 
Everything else happens by the help of twelve-factor
● Install client * at deis git directory 
$ pip install ./client/ 
$ deis register http://mylocalpaas.com 
$ deis keys:add
● Create a 
Docker App 
# write some “code” 
$ mkdir ~/myapp ; cd ~/myapp 
$ git init 
$ echo "Hello" > index.html 
# create the Dockerfile 
$ echo 'FROM myregistry/my-tiny-nginx 
ADD ./index.html /usr/share/nginx/www/index.html 
EXPOSE 80 
ENTRYPOINT ["/usr/sbin/nginx"] 
CMD ["-c","/etc/nginx/nginx.conf","-p","/etc/nginx","-g","daemon off;"]'  
> Dockerfile 
# create the app 
$ git commit -a -m "initial" 
$ deis create myapp
● Deploy it 
$ git push deis master 
… 
-----> Building Docker image 
… 
-----> Pushing image to private registry 
… 
-----> Launching... 
done, myapp:v1 deployed to Deis 
http://myapp.mylocalpaas.com 
$ curl http://myapp.mylocalpaas.com 
Hello
● Scale it 
$ deis scale cmd=5 
Scaling processes... but first, coffee! 
..o 
done in 25s 
=== myapp Processes 
--- cmd: 
cmd.1 up (v13) 
cmd.2 up (v13) 
cmd.3 up (v13) 
cmd.4 up (v13) 
cmd.5 up (v13)
● Deploy a 
Heroku App 
Available Buildpacks: 
● Ruby 
● Nodejs 
● Java 
● Gradle 
● Grails 
● Play 
● Python 
● Clojure 
● PHP 
● Go 
● Meteorite 
● Perl 
● Scala 
● Dart 
● Nginx 
● Apache
● Create it $ git clone https://github.com/deis/example-ruby-sinatra.git 
$ cd example-ruby-sinatra 
$ deis create myappheroku 
Creating application... done, created myappheroku 
Git remote deis added
● Deploy it 
(suppressed output) 
$ git push deis master 
-----> Ruby app detected 
-----> Compiling Ruby/Rack 
-----> Installing dependencies using 1.5.2 
Using bundler (1.5.2) 
Installing tilt (1.3.6) 
Installing rack (1.5.2) 
Installing rack-protection (1.5.0) 
Installing sinatra (1.4.2) 
Your bundle is complete! 
-----> Compiled slug size is 12M 
-----> Building Docker image 
-----> Pushing image to private registry 
-----> myappheroku deployed to Deis 
http://myappheroku.mylocalpaas.com 
$ curl -s http://myappheroku.mylocalpaas.com 
Powered by Deis!
● using deis 
deis open
● using deis 
deis config
● using deis 
deis run ( runs in an ephemeral container!)
● using deis 
deis limits
● using deis 
deis releases / deis rollbacks
● using deis 
deis logs
● using deis 
deis domains
● Advanced 
Debug 
Example 
1 - Get the ENTRYPOINT and the CMD of your container 
for buildpacks they looks like: 
ENTRYPOINT [“/runner/init”] 
CMD [“start”, “web”] 
2 - Get (or Ask for) the address of the Deis Registry 
Ex: 10.1.1.3:5000 
* and if you have access to it :) 
3 - Get the App’s version 
$ deis releases 
3 - Run it locally 
$ docker run --name debug -d  
10.1.1.3:5000/example-ruby-sinatra:v7  
/runner/init start web 
3 - Then you can do things like run “docker exec” 
$ docker exec -t -i debug /bin/bash
● Example: 
deploy, 
migrate or 
reuse 
your app 
in another 
system 
using Chef/Puppet/Ansible to deploy an image from Deis 
1 - Makes your automation creates a file with all 
environment variables on it: 
/apps/myapp/environment 
export DB=user@host:port
● Example: 
deploy, 
migrate or 
reuse 
your app 
in another 
system 
using Chef/Puppet/Ansible to deploy an image from Deis 
2 - Run a container from Deis: 
- Use the host’s /apps/myapp directory as a 
volume to /my 
- Perhaps bind a local port to it 
- Try to load the environment from the file 
before run the ENTRYPOINT
● Example: 
deploy, 
migrate or 
reuse 
your app 
in another 
system 
using Chef/Puppet/Ansible to deploy an image from Deis 
docker run -d --name myapp  
-v /apps/myapp:/my  
-p 80:5000  
10.1.1.3:5000/myapp:v14  
bash -c  
‘true; source /my/environment; /runner/init start web’
● Example: 
deploy, 
migrate or 
reuse 
your app 
in another 
system 
… or 
make your automation create a Dockerfile: 
FROM 10.1.1.3:5000/myapp:v14 
ADD /apps/myapp /my 
RUN true; source /my/environment; 
EXPOSE 5000 
ENTRYPOINT [“/runner/init”]’ 
CMD [“start”,”web”] 
$ sudo docker build -t myapp:v14 
$ docker run -d --name myapp myapp:v14
Thanks! 
lorieri 
@againstty0

Más contenido relacionado

La actualidad más candente

Running Django on Docker: a workflow and code
Running Django on Docker: a workflow and codeRunning Django on Docker: a workflow and code
Running Django on Docker: a workflow and codeDanielle Madeley
 
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境謝 宗穎
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmMario IC
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortalsHenryk Konsek
 
Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Pini Reznik
 
Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Henryk Konsek
 
Docker DANS workshop
Docker DANS workshopDocker DANS workshop
Docker DANS workshopvty
 
Scaling Next-Generation Internet TV on AWS With Docker, Packer, and Chef
Scaling Next-Generation Internet TV on AWS With Docker, Packer, and ChefScaling Next-Generation Internet TV on AWS With Docker, Packer, and Chef
Scaling Next-Generation Internet TV on AWS With Docker, Packer, and Chefbridgetkromhout
 
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQDocker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQErica Windisch
 
Docker Clustering - Batteries Included
Docker Clustering - Batteries IncludedDocker Clustering - Batteries Included
Docker Clustering - Batteries IncludedC4Media
 
Docker Ecosystem: Part V - Docker Registry
Docker Ecosystem: Part V - Docker RegistryDocker Ecosystem: Part V - Docker Registry
Docker Ecosystem: Part V - Docker RegistryMario IC
 
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @WayraDeis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @WayraLeo Lorieri
 
Building a Docker v1.12 Swarm cluster on ARM
Building a Docker v1.12 Swarm cluster on ARMBuilding a Docker v1.12 Swarm cluster on ARM
Building a Docker v1.12 Swarm cluster on ARMTeam Hypriot
 
Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015Leonid Mirsky
 

La actualidad más candente (20)

Running Django on Docker: a workflow and code
Running Django on Docker: a workflow and codeRunning Django on Docker: a workflow and code
Running Django on Docker: a workflow and code
 
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker Swarm
 
Docker n co
Docker n coDocker n co
Docker n co
 
From zero to Docker
From zero to DockerFrom zero to Docker
From zero to Docker
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014
 
Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.
 
Docker DANS workshop
Docker DANS workshopDocker DANS workshop
Docker DANS workshop
 
Scaling Next-Generation Internet TV on AWS With Docker, Packer, and Chef
Scaling Next-Generation Internet TV on AWS With Docker, Packer, and ChefScaling Next-Generation Internet TV on AWS With Docker, Packer, and Chef
Scaling Next-Generation Internet TV on AWS With Docker, Packer, and Chef
 
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQDocker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
 
Docker Clustering - Batteries Included
Docker Clustering - Batteries IncludedDocker Clustering - Batteries Included
Docker Clustering - Batteries Included
 
Docker Ecosystem: Part V - Docker Registry
Docker Ecosystem: Part V - Docker RegistryDocker Ecosystem: Part V - Docker Registry
Docker Ecosystem: Part V - Docker Registry
 
Dokku
DokkuDokku
Dokku
 
Docker in practice
Docker in practiceDocker in practice
Docker in practice
 
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @WayraDeis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
 
Docker linuxday 2015
Docker linuxday 2015Docker linuxday 2015
Docker linuxday 2015
 
Building a Docker v1.12 Swarm cluster on ARM
Building a Docker v1.12 Swarm cluster on ARMBuilding a Docker v1.12 Swarm cluster on ARM
Building a Docker v1.12 Swarm cluster on ARM
 
Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015
 
Docker compose
Docker composeDocker compose
Docker compose
 

Destacado

Build your own PaaS using Kubernetes and Deis — GDG DevFest NL
Build your own PaaS using Kubernetes and Deis — GDG DevFest NLBuild your own PaaS using Kubernetes and Deis — GDG DevFest NL
Build your own PaaS using Kubernetes and Deis — GDG DevFest NLJeroen Visser
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSAWS Vietnam Community
 
Containerisation and DEIS
Containerisation and DEISContainerisation and DEIS
Containerisation and DEISjustinhennessy
 
Artificial intelligence
Artificial intelligenceArtificial intelligence
Artificial intelligencePesco8
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...iMasters
 
企业PaaS助力数字化转型
企业PaaS助力数字化转型企业PaaS助力数字化转型
企业PaaS助力数字化转型Hardway Hou
 
IaaS, PaaS e SaaS para Developers
IaaS, PaaS e SaaS para DevelopersIaaS, PaaS e SaaS para Developers
IaaS, PaaS e SaaS para DevelopersRenato Groff
 
AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...
AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...
AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...Robin Fernandes
 
Docker and DevOps Trends in Hosting Industry
Docker and DevOps Trends in Hosting IndustryDocker and DevOps Trends in Hosting Industry
Docker and DevOps Trends in Hosting IndustryJelastic Multi-Cloud PaaS
 
Mesos vs kubernetes comparison
Mesos vs kubernetes comparisonMesos vs kubernetes comparison
Mesos vs kubernetes comparisonKrishna-Kumar
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudMassimiliano Dessì
 
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic Multi-Cloud PaaS
 
Tracxn Research — Docker Ecosystem Startup Landscape, September 2016
Tracxn Research —  Docker Ecosystem Startup Landscape, September 2016Tracxn Research —  Docker Ecosystem Startup Landscape, September 2016
Tracxn Research — Docker Ecosystem Startup Landscape, September 2016Tracxn
 

Destacado (20)

Build your own PaaS using Kubernetes and Deis — GDG DevFest NL
Build your own PaaS using Kubernetes and Deis — GDG DevFest NLBuild your own PaaS using Kubernetes and Deis — GDG DevFest NL
Build your own PaaS using Kubernetes and Deis — GDG DevFest NL
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
 
Tsuru @ Devops world
Tsuru @ Devops worldTsuru @ Devops world
Tsuru @ Devops world
 
Containerisation and DEIS
Containerisation and DEISContainerisation and DEIS
Containerisation and DEIS
 
Artificial intelligence
Artificial intelligenceArtificial intelligence
Artificial intelligence
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
 
Deis overview
Deis overviewDeis overview
Deis overview
 
企业PaaS助力数字化转型
企业PaaS助力数字化转型企业PaaS助力数字化转型
企业PaaS助力数字化转型
 
IaaS, PaaS e SaaS para Developers
IaaS, PaaS e SaaS para DevelopersIaaS, PaaS e SaaS para Developers
IaaS, PaaS e SaaS para Developers
 
Understanding PaaS
Understanding PaaSUnderstanding PaaS
Understanding PaaS
 
AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...
AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...
AtlasCamp 2016: Art of PaaS - Lessons learned running a platform for hundreds...
 
Docker and DevOps Trends in Hosting Industry
Docker and DevOps Trends in Hosting IndustryDocker and DevOps Trends in Hosting Industry
Docker and DevOps Trends in Hosting Industry
 
Mesos vs kubernetes comparison
Mesos vs kubernetes comparisonMesos vs kubernetes comparison
Mesos vs kubernetes comparison
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Paas ppt
Paas pptPaas ppt
Paas ppt
 
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
 
Azure Reference Architectures
Azure Reference ArchitecturesAzure Reference Architectures
Azure Reference Architectures
 
Docker 1.11
Docker 1.11Docker 1.11
Docker 1.11
 
Tracxn Research — Docker Ecosystem Startup Landscape, September 2016
Tracxn Research —  Docker Ecosystem Startup Landscape, September 2016Tracxn Research —  Docker Ecosystem Startup Landscape, September 2016
Tracxn Research — Docker Ecosystem Startup Landscape, September 2016
 
Azure: PaaS or IaaS
Azure: PaaS or IaaSAzure: PaaS or IaaS
Azure: PaaS or IaaS
 

Similar a [EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview

Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient waySylvain Rayé
 
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...Puppet
 
Challenges of container configuration
Challenges of container configurationChallenges of container configuration
Challenges of container configurationlutter
 
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
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby TeamArto Artnik
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
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
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 applicationRoman Rodomansky
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environmentSumedt Jitpukdebodin
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
Docker workshop
Docker workshopDocker workshop
Docker workshopEvans Ye
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupalDay
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Ben Hall
 
Docker & rancher
Docker & rancherDocker & rancher
Docker & rancherAlin Voinea
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020CloudHero
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Ben Hall
 

Similar a [EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview (20)

Docker, c'est bonheur !
Docker, c'est bonheur !Docker, c'est bonheur !
Docker, c'est bonheur !
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
 
Challenges of container configuration
Challenges of container configurationChallenges of container configuration
Challenges of container configuration
 
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
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
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
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environment
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Docker as development environment
Docker as development environmentDocker as development environment
Docker as development environment
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
 
Docker & rancher
Docker & rancherDocker & rancher
Docker & rancher
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
 

Último

₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Roomgirls4nights
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...aditipandeya
 

Último (20)

Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
 

[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview

  • 1. Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview [EXTENDED] lorieri Nov/2014 @againstty0
  • 2. Welcome to the future
  • 3. “Ceph's main goals are to be completely distributed without a single point of failure, scalable to the exabyte level, and freely-available”
  • 4. ● 100% distributed ● CephFS ○ For POSIX sharing ○ not really 100% (active-standby) ● LibRados ○ RBD ■ For Blocks ○ Rados Gateway ■ For REST Objects ■ S3 and Swift compatible
  • 5.
  • 7. ● Rados Gateway $ s3cmd mb s3://mybucket Bucket 's3://mybucket/' created $ s3cmd put ~/myfile.txt s3://mybucket/ --acl-public /Users/lalorie/myfile.txt -> s3://mybucket/myfile.txt [1 of 1] 15 of 15 100% in 0s 240.81 B/s done $ curl mybucket.myradosgw.com/myfile.txt myfile content
  • 8. ● RBD $ rbd create mypool/myimage --size 102400 $ sudo rbd map mypool/myimage --name client.admin $ sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo $ sudo mount /dev/rbd/rbd/foo /media/disk1
  • 9. ● CephFS On ALL machines you want to share $ mount -t ceph 10.0.0.1,10.0.0.2,10.0.0.3:/ /media/disk1 10.0.0.[1-3] are the metadata servers
  • 10. “Build, Ship and Run Any App, Anywhere”
  • 11. ● 100% portable ● Easy API for LXC ● Public Repository ● Lightweight, 1 process (ideal) ● Layers (Union File System) ○ Shares read-only data ○ Incremental ● Volumes (not layered volumes)
  • 12. FROM ubuntu:12.04 RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update && apt-get upgrade -y RUN apt-get install -y gcc make g++ build-essential libc6-dev tcl wget RUN wget http://download.redis.io/redis-stable.tar.gz -O - | tar -xvz RUN (cd /redis-stable && make) RUN (cd /redis-stable && make test) RUN mkdir -p /redis-data VOLUME ["/redis-data"] EXPOSE 6379 ENTRYPOINT ["/redis-stable/src/redis-server"] CMD ["--dir", "/redis-data"]
  • 13.
  • 14. ● Slugs “A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.”
  • 15. Slug Your App Git Buildpacks Repo $ git push Builder Runtime Code
  • 16. ● Twelve Factor “Who should read this document? Any developer building applications which run as a service. Ops engineers who deploy or manage such applications.”
  • 17. ● III - Config “Store config in the environment - easy to change between deploys without changing any code; - [not] checked into the code repo accidentally; - language- and OS-agnostic standard.”
  • 18. ● VI - Processes “Execute the app as one or more stateless processes Twelve-factor processes are stateless and share-nothing.”
  • 19. ● IX - Disposability “app’s processes are disposable, meaning they can be started or stopped at a moment’s notice”
  • 20. ● XI - Logs “Treat logs as event streams … streams of all running processes and backing services”
  • 21. “Linux for Massive Server Deployments CoreOS enables warehouse-scale computing on top of a minimal, modern operating system.”
  • 22. ● 100% distributed ● Lightweight ● cloud-init for every boot ● Automatic Updates ○ 2 boot partitions
  • 23. Etcd Locksmithd Confd Fleet Systemd Systemd Systemd Systemd Systemd Systemd Systemd Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7
  • 24. Distributed database Reboot Admin Configuration Manager Distributed Init New Init New Init New Init New Init New Init New Init New Init Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7
  • 25. Fleet
  • 26. ● Fleet Distributed Services [Unit] Description=deis-controller Requires=deis-store-volume.service After=deis-store-volume.service [Service] EnvironmentFile=/etc/environment TimeoutStartSec=20m ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && docker history $IMAGE >/dev/null || docker pull $IMAGE" ExecStartPre=/bin/sh -c "docker inspect deis-controller >/dev/null && docker rm -f deis-controller || true" ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && docker run --name deis-controller --rm -p 8000:8000 -e EXTERNAL_PORT=8000 -e HOST=$COREOS_PRIVATE_IPV4 -v /var/run/fleet.sock:/var/run/fleet.sock -v /var/lib/deis/store:/data $IMAGE" ExecStopPost=-/usr/bin/docker rm -f deis-controller Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
  • 28. “Your PaaS. Your Rules. An open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.”
  • 29. ● CoresOS + Docker + Ceph + Heroku ● Twelve-Factor ○ for Deis: must be stateless (no wordpress) ● Nginx Router + Wildcard DNS ● First release using Ceph ○ more features coming soon ● Limited ○ twelve-factor ○ only HTTP port (non-http soon) ○ must expose ONLY one port
  • 30. ● Installation: ○ Install CoreOS and ssh keys then: $ export DEISCTL_TUNNEL=coreos01 $ curl -sSL http://deis.io/deisctl/install.sh | sh $ git clone https://github.com/deis/deis.git ; cd deis $ deisctl config platform set domain=mylocalpaas.com $ deisctl install platform && deisctl start platform
  • 31. Installation will set the domain in the distributed database (Etcd) then load and run the “init” files (Fleet+Systemd) into the cluster Everything else happens by the help of twelve-factor
  • 32.
  • 33. ● Install client * at deis git directory $ pip install ./client/ $ deis register http://mylocalpaas.com $ deis keys:add
  • 34. ● Create a Docker App # write some “code” $ mkdir ~/myapp ; cd ~/myapp $ git init $ echo "Hello" > index.html # create the Dockerfile $ echo 'FROM myregistry/my-tiny-nginx ADD ./index.html /usr/share/nginx/www/index.html EXPOSE 80 ENTRYPOINT ["/usr/sbin/nginx"] CMD ["-c","/etc/nginx/nginx.conf","-p","/etc/nginx","-g","daemon off;"]' > Dockerfile # create the app $ git commit -a -m "initial" $ deis create myapp
  • 35. ● Deploy it $ git push deis master … -----> Building Docker image … -----> Pushing image to private registry … -----> Launching... done, myapp:v1 deployed to Deis http://myapp.mylocalpaas.com $ curl http://myapp.mylocalpaas.com Hello
  • 36. ● Scale it $ deis scale cmd=5 Scaling processes... but first, coffee! ..o done in 25s === myapp Processes --- cmd: cmd.1 up (v13) cmd.2 up (v13) cmd.3 up (v13) cmd.4 up (v13) cmd.5 up (v13)
  • 37. ● Deploy a Heroku App Available Buildpacks: ● Ruby ● Nodejs ● Java ● Gradle ● Grails ● Play ● Python ● Clojure ● PHP ● Go ● Meteorite ● Perl ● Scala ● Dart ● Nginx ● Apache
  • 38. ● Create it $ git clone https://github.com/deis/example-ruby-sinatra.git $ cd example-ruby-sinatra $ deis create myappheroku Creating application... done, created myappheroku Git remote deis added
  • 39. ● Deploy it (suppressed output) $ git push deis master -----> Ruby app detected -----> Compiling Ruby/Rack -----> Installing dependencies using 1.5.2 Using bundler (1.5.2) Installing tilt (1.3.6) Installing rack (1.5.2) Installing rack-protection (1.5.0) Installing sinatra (1.4.2) Your bundle is complete! -----> Compiled slug size is 12M -----> Building Docker image -----> Pushing image to private registry -----> myappheroku deployed to Deis http://myappheroku.mylocalpaas.com $ curl -s http://myappheroku.mylocalpaas.com Powered by Deis!
  • 40.
  • 41. ● using deis deis open
  • 42. ● using deis deis config
  • 43. ● using deis deis run ( runs in an ephemeral container!)
  • 44. ● using deis deis limits
  • 45. ● using deis deis releases / deis rollbacks
  • 46. ● using deis deis logs
  • 47. ● using deis deis domains
  • 48. ● Advanced Debug Example 1 - Get the ENTRYPOINT and the CMD of your container for buildpacks they looks like: ENTRYPOINT [“/runner/init”] CMD [“start”, “web”] 2 - Get (or Ask for) the address of the Deis Registry Ex: 10.1.1.3:5000 * and if you have access to it :) 3 - Get the App’s version $ deis releases 3 - Run it locally $ docker run --name debug -d 10.1.1.3:5000/example-ruby-sinatra:v7 /runner/init start web 3 - Then you can do things like run “docker exec” $ docker exec -t -i debug /bin/bash
  • 49. ● Example: deploy, migrate or reuse your app in another system using Chef/Puppet/Ansible to deploy an image from Deis 1 - Makes your automation creates a file with all environment variables on it: /apps/myapp/environment export DB=user@host:port
  • 50. ● Example: deploy, migrate or reuse your app in another system using Chef/Puppet/Ansible to deploy an image from Deis 2 - Run a container from Deis: - Use the host’s /apps/myapp directory as a volume to /my - Perhaps bind a local port to it - Try to load the environment from the file before run the ENTRYPOINT
  • 51. ● Example: deploy, migrate or reuse your app in another system using Chef/Puppet/Ansible to deploy an image from Deis docker run -d --name myapp -v /apps/myapp:/my -p 80:5000 10.1.1.3:5000/myapp:v14 bash -c ‘true; source /my/environment; /runner/init start web’
  • 52. ● Example: deploy, migrate or reuse your app in another system … or make your automation create a Dockerfile: FROM 10.1.1.3:5000/myapp:v14 ADD /apps/myapp /my RUN true; source /my/environment; EXPOSE 5000 ENTRYPOINT [“/runner/init”]’ CMD [“start”,”web”] $ sudo docker build -t myapp:v14 $ docker run -d --name myapp myapp:v14