52
Using Docker and Jenkins to deploy and run applications on the Raspberry Pi and in the cloud. Johan Janssen, @johanjanssen42, Info Support

Using Docker and Jenkins to deploy and run applications on the Raspberry Pi and in the cloud

Embed Size (px)

DESCRIPTION

Using Docker and Jenkins to deploy and run applications on the Raspberry Pi and in the cloud. Johan Janssen, @johanjanssen42, Info Support. Content. Internet of things Continuous delivery Docker Jenkins Questions. Internet of Things. Developments outside the IoT. - PowerPoint PPT Presentation

Citation preview

Page 1: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Using Docker and Jenkins to deploy and run applications

on the Raspberry Pi and in the cloud.

Johan Janssen, @johanjanssen42, Info Support

Page 2: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Content

Internet of things

Continuous delivery

Docker

Jenkins

Questions

Page 3: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Internet of Things

Page 4: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Developments outside the IoT

Continuous Delivery Virtual machines Provisioning (Chef, Puppet, Vagrant …) Version control / infrastructure as code Isolation

Updating and synchronizing environments

Page 5: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

IoT limitations

Page 6: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud
Page 7: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Hyper Text Coffee Pot Control Protocol

April Fools prank

It might become real

Page 8: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker

Page 9: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Demo

Page 10: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Continuous Delivery Automate everything Software quality Continuous improvement Regular deployments Anyone can deploy

Page 11: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Deployment pipeline

Version control

Compile

Quality checks

Testing

Deployments

DevOps End users

Etcetera

Setup environment

Page 12: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Deployment pipeline

Page 13: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Focus of this presentation

Automate environment provisioning

Automate application deployment

Page 14: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

What to deliver?

Page 15: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Why Docker To enable continuous delivery Quickly provision environments Run the same software local and in the

cloud Easy to move software

Better performance Higher availability Cheaper

Page 16: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker vs Virtual Machines Disk space efficiency Memory efficiency Speed Compatibility (run anywhere) Isolation Versioning Internet of Things (Raspberry Pi etc.)

Page 17: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker vs provisioning tools

Simple general commands No Domain Specific Language (DSL) Configuration with operating system

commands

Page 18: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Dockerfile GeneralBaseFROM ubuntu:saucy

RUN apt-get -y install software-properties-commonRUN add-apt-repository ppa:webupd8team/javaRUN apt-get update && apt-get -y upgradeRUN echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selectionsRUN apt-get -y install oracle-java7-installerENV JAVA_HOME /usr/lib/jvm/java-7-oracle

Page 19: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Dockerfile SonarFROM GeneralBase

RUN apt-get install -y wget unzipRUN wget http://dist.sonar.codehaus.org/sonarqube-4.2.zipRUN unzip sonarqube-4.2.zip -d /optRUN rm sonarqube-4.2.zip

EXPOSE 9000 EXPOSE 9092CMD ["/opt/sonarqube-4.2/bin/linux-x86-64/sonar.sh", "console", "/bin/bash"]

Page 20: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

We need lots of Docker containers

GeneralBase

AppServerBase

Environment D

Environment T

Environment A

Environment P

Jenkins

JenkinsDataContainer

Sonar Gitblit Nexus

Page 21: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Data volumes Dockerfile

ENV JENKINS_HOME /var/JenkinsData

Docker commandsdocker.io run -v /var/JenkinsData –name JenkinsDataContainer ubuntu:saucy true

docker.io run -p 8080:8080 --volumes-from JenkinsDataContainer -d Jenkins

Page 22: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Diskspace# docker.io images --tree└─ 179.9 MB Tags: ubuntu:saucy └─253.6 MB └─741.8 MB Tags: GeneralBase:latest └─763.6 MB Tags: AppServerBase:latest

├─763.6 MB Tags: EnvironmentP:latest └─865.6 MB Tags: Nexus:latest

└─808.3 MB Tags: Gitblit:latest └─901.5 MB Tags: Sonar:latest └─805.4 MB Tags: Jenkins:latest

Page 23: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Execution time

real 4m11.729suser 0m3.329s sys 0m10.054s

Page 24: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker overview

Page 25: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

One ring to rule them all

Page 26: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker registry

Creating the Docker registrydocker run -p 5000:5000 registry

Page 27: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker client 1 (push) Modify container (for instance with touch) Commit

docker.io commit 064f192.168.56.31:5000/test-version-0.2

New containerid -> ff7e

Pushdocker.io push

192.168.56.31:5000/test-version-0.2

Page 28: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Docker client 2 (pull) Pull

docker.io pull 192.168.56.31:5000/test-version-0.2

Rundocker.io run -i -t ff7e /bin/bash

View the changed container

Page 29: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Updating containers

Page 30: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Pull update onlydocker images -tree└─153bf43b408a 194.2 MB test-version-0.1:latest

docker pull 192.168.56.31:5000/test-version-0.2 ff7e110ebadd: Download complete153bf43b408a: Download complete

docker images -tree└─153bf43b408a 194.2 MB test-version-0.1:latest └─ff7e110ebadd 194.2 MB test-version-0.2:latest

Page 31: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Jenkins

Page 32: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Demo

Page 33: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Why Jenkins Simple to use Really popular

Used in many organizations Regular updates Big community creating plugins etc.

Most Java developers already use it

Page 34: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Jenkins

Page 35: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Backend pipeline

Page 36: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Frontend pipeline

Page 37: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Combined pipeline

Page 38: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Automatic versus manual deployment

Continuous delivery

Continuous deployment

Page 39: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Automatic versus manual

Page 40: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Build pipeline plugin

Page 41: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Example build pipeline

TAP

D

1

2

34

7

8

9

10

56?

6?

Page 42: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Publish over SSH plugin

Page 43: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Publish over SSH plugin

Page 44: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Keep it simple“Life is really simple, but we insist on making it complicated.”

- Confucius

Page 45: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Build pipeline demo

Page 46: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Tips Use a (private) Docker registry Use images from the registry instead of export Keep environmental settings separate Use Jenkins to manage everything Do not add extra functionality like OpenSSH Think about topics such as security, monitoring

and logging Separate concerns in separate containers Inherit containers

Page 47: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Isolation

Page 48: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Isolation

Page 49: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Isolation

Page 50: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Isolation

Page 51: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Summary

Page 52: Using  Docker  and Jenkins to deploy and run applications on the Raspberry Pi and in the  cloud

Questions

[email protected] @johanjanssen42http://blogs.infosupport.com/author/johanj/