using docker and jenkins to deploy and run applications on the raspberry pi and in the cloud n.
Download
Skip this Video
Download Presentation
Using Docker and Jenkins to deploy and run applications on the Raspberry Pi and in the cloud .

Loading in 2 Seconds...

play fullscreen
1 / 52

Using Docker and Jenkins to deploy and run applications on the Raspberry Pi and in the cloud . - PowerPoint PPT Presentation


  • 255 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Using Docker and Jenkins to deploy and run applications on the Raspberry Pi and in the cloud .' - lucius-williamson


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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

content
Content
  • Internet of things
  • Continuous delivery
  • Docker
  • Jenkins
  • Questions
developments outside the iot
Developments outside the IoT
  • Continuous Delivery
  • Virtual machines
  • Provisioning (Chef, Puppet, Vagrant …)
  • Version control / infrastructure as code
  • Isolation
  • Updating and synchronizing environments
hyper text coffee pot control protocol
Hyper Text Coffee Pot Control Protocol
  • April Fools prank
  • It might become real
continuous delivery
Continuous Delivery
  • Automate everything
  • Software quality
  • Continuous improvement
  • Regular deployments
  • Anyone can deploy
deployment pipeline
Deployment pipeline

Setup environment

Quality checks

Version control

Compile

Testing

Deployments

Etcetera

DevOps

End users

focus of this presentation
Focus of this presentation
  • Automate environment provisioning
  • Automate application deployment
why docker
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
docker vs virtual machines
Docker vs Virtual Machines
  • Disk space efficiency
  • Memory efficiency
  • Speed
  • Compatibility (run anywhere)
  • Isolation
  • Versioning
  • Internet of Things (Raspberry Pi etc.)
docker vs provisioning tools
Docker vs provisioning tools
  • Simple general commands
  • No Domain Specific Language (DSL)
  • Configuration with operating system commands
dockerfile generalbase
DockerfileGeneralBase

FROM ubuntu:saucy

RUN apt-get -y install software-properties-common

RUN add-apt-repository ppa:webupd8team/java

RUN apt-get update && apt-get -y upgrade

RUN echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selections

RUN apt-get -y install oracle-java7-installer

ENV JAVA_HOME /usr/lib/jvm/java-7-oracle

dockerfile sonar
Dockerfile Sonar

FROM GeneralBase

RUN apt-get install -y wgetunzip

RUN wget http://dist.sonar.codehaus.org/sonarqube-4.2.zip

RUN unzip sonarqube-4.2.zip -d /opt

RUN rm sonarqube-4.2.zip

EXPOSE 9000

EXPOSE 9092

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

data volumes
Data volumes
  • Dockerfile

ENV JENKINS_HOME /var/JenkinsData

  • Docker commands

docker.io run -v /var/JenkinsData–name

JenkinsDataContainerubuntu:saucy true

docker.io run -p 8080:8080 --volumes-from

JenkinsDataContainer -d Jenkins

diskspace
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

execution time
Execution time

real 4m11.729s

user 0m3.329s

sys 0m10.054s

docker registry
Docker registry
  • Creating the Docker registry

docker run -p 5000:5000 registry

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

docker.io commit 064f

192.168.56.31:5000/test-version-0.2

  • New containerid -> ff7e
  • Push

docker.io push

192.168.56.31:5000/test-version-0.2

docker client 2 pull
Docker client 2 (pull)
  • Pull

docker.io pull

192.168.56.31:5000/test-version-0.2

  • Run

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

  • View the changed container
pull update only
Pull update only

dockerimages -tree

└─153bf43b408a 194.2 MB test-version-0.1:latest

dockerpull 192.168.56.31:5000/test-version-0.2

ff7e110ebadd: Download complete

153bf43b408a: Download complete

dockerimages -tree

└─153bf43b408a 194.2 MB test-version-0.1:latest

└─ff7e110ebadd 194.2 MB test-version-0.2:latest

why jenkins
Why Jenkins
  • Simple to use
  • Really popular
    • Used in many organizations
    • Regular updates
    • Big community creating plugins etc.
  • Most Java developers already use it
automatic versus manual deployment
Automatic versus manual deployment

Continuous deployment

Continuous delivery

example build pipeline
Example build pipeline

1

6?

6?

2

5

D

7

8

T

9

4

A

3

10

P

keep it simple
Keep it simple

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

- Confucius

slide46
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
questions
Questions

johan.janssen@infosupport.com @johanjanssen42

http://blogs.infosupport.com/author/johanj/