70
ons with Docker on the Raspberry Pi and other platforms Johan Janssen, Info Support

Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Embed Size (px)

Citation preview

Page 1: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Run Java applications with Docker on

the Raspberry Pi and other platforms

Johan Janssen, Info Support

Page 2: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Content

Internet of Things

Docker and Java on a Raspberry Pi

Jenkins

Questions

Page 3: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Internet of Things

Page 4: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Potential market

Huge and still growing

Not stable yet, lots of innovation

Cool new technologies

Suitable for Java!

Page 5: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Weather station

Page 6: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Drone

Page 7: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Wave Glider

Page 8: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Wearables

Page 9: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Robots

Page 10: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Raspberry Pi

Page 11: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Raspberry Pi

Page 12: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Developments outside the IoT

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

Updating and synchronizing environments

Page 13: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

IoT limitations

Page 14: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions
Page 15: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

What to deliver?

Page 16: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker

Page 17: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Transportation issue

Page 18: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Transportation solution

Page 19: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Software issue

Page 20: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Software solution

Page 21: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker compatibility

Page 22: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Why Docker To enable continuous delivery Quickly provision environments Easy to roll forward Security

For instance to run ‘untrusted’ applications like a Dropbox client

Alternative for virtual machines On top of virtual machines

Page 23: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

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

Page 24: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker vs provisioning tools

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

commands

Page 25: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker activity Since March 2013 More than 460 570 contributors Downloaded 2.75 13 million times More than 14000 30000 Dockerized apps More than 90 user groups, DockerCon

(Europe) Support from Google, VMWare,

RackSpace, Red Hat, IBM, Microsoft etcetera

Page 26: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker on CIO TODAY

Page 27: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker ecosystem

Page 28: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

My first Docker container

Docker on Ubuntu 14.04

apt-get install docker.io

docker.io run -i -t ubuntu:saucy /bin/bash

Page 29: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

My first Pi Docker container

Docker on the Raspberry Pi

docker run -i –tresin/rpi-raspbian

/bin/bash

Page 30: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker technology

Page 31: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Raspberry installation Download Arch Linux http://downloads.raspberrypi.org/arch_latest unzip ArchLinuxARM-2014.06-rpi.img.zip Find SD card: sudo fdisk -l sudo dd bs=1M if=ArchLinuxARM-2014.06-rpi.img of=/dev/sdX Change partitions (optional) Put the SD card in the Raspberry Pi and boot username and password are both ‘root’

Page 32: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Raspberry installation Update repositoriespacman –Syy

Optional update al packages: pacman -Syu

Install Dockerpacman -S docker

Page 33: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Raspberry installation Start Docker servicesystemctl start docker

Auto start Docker service on bootsystemctl enable docker

Reboot

Page 34: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Configure static IP address cp /etc/netctl/examples/ethernet-static /etc/netctl/static Edit /etc/netctl/static

Description='A basic static ethernet connection'Interface=eth0Connection=ethernetAutoWired=yesIP=staticAddress=('192.168.1.3/24')Gateway='192.168.1.1'DNS=('192.168.1.1')

Page 35: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Static IP address Enable static ip

netctl enable static

Disable static ip mv /etc/netctl/static /etc/netctl/examples/

Page 36: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Tomcat DockerfileFROM resin/rpi-raspbianRUN apt-get update

RUN apt-get install -y openjdk-7-jre-headless wgetRUN wget -O /tmp/tomcat8.tar.gz http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.9/bin/apache-tomcat-8.0.9.tar.gzRUN (cd /opt && tar zxf /tmp/tomcat8.tar.gz)RUN (mv /opt/apache-tomcat* /opt/tomcat)ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-armhf

RUN rm -rf /opt/tomcat/webapps/docs /opt/tomcat/webapps/examples /opt/tomcat/webapps/host-manager /opt/tomcat/webapps/manager

EXPOSE 8080CMD ["/opt/tomcat/bin/catalina.sh", "run"]

Page 37: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Tomcat Dockerfile explainedFROM resin/rpi-raspbian

RUN apt-get install -y openjdk-7-jre-headless wget

ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-armhf

EXPOSE 8080CMD ["/opt/tomcat/bin/catalina.sh", "run"]

Page 38: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

TomcatExtra DockerfileFROM tomcat

ADD DockerPiExample.war /opt/tomcat/webapps/

Page 39: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Directory structure Main directory

BuildAndRunScript.sh Tomcat

Dockerfile TomcatExtra

Dockerfile DockerPiExample.war

Page 40: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Build Create the Dockerfiles Build the containers

cd Tomcat (optional)docker build -t tomcat . (optional)cd .. (optional)cd TomcatExtradocker build -t tomcatextra .

Page 41: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Run Start the container

docker run -p 8080:8080 -d tomcatextra

Page 42: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Hyper Text Coffee Pot Control Protocol

April Fools prank

It might become real

Page 43: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Hyper Text Coffee Pot Control Protocol

Page 44: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Controlling containers

Start / stop / restartdocker [start/stop/restart] containerid

Follow SystemOut and SystemErrdocker logs -f containerid

Page 45: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Controlling containers Show (running) containers

docker ps –a

Show processes running in containerdocker diff containerid

Show changes in the containerdocker top containerid

Page 46: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Controlling containers Stop all containers

docker.io stop $(docker.io ps -a -q) Remove all containers

docker.io rm $(docker.io ps -a -q) Remove all images

docker.io rmi $(docker.io images -q)

Page 47: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Demo

Page 48: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker overview

Page 49: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

One ring to rule them all

Page 50: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker registry

Creating the Docker registrydocker run -p 5000:5000 registry

Page 51: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker client 1 (push) Change container (using touch for instance) Commit

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

New containerid -> ff7e Push

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

Page 52: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

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

Page 53: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Updating containers

Page 54: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Pull update only on Docker client 2

docker 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 55: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Use registry instead exports

Commands are easier

Faster and easier migration

Page 56: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Use registry instead of multiple builds

Requires less extra resources

Containers are the same, for instance when using apt-get update

Not the latest security patches

Page 57: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Docker vs Virtual Machines

Page 58: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

We need lots of Docker containers

GeneralBase

AppServerBase

Environment D

Environment T

Environment A

Environment P

Jenkins

JenkinsDataContainer

Sonar Gitblit Nexus

Page 59: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

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 60: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Execution time on laptop

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

Page 61: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Jenkins

Page 62: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Why Jenkins Simple to use Really popular

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

Most developers already use it

Page 63: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Jenkins demo

Page 64: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Tips

Deploy the first container when the hardware is nearby this saves network traffic Use a (private) Docker registry Keep environmental settings separate

Start playing with Docker!

Page 65: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Summary

Big potential market for Docker and Java

Easy to use

Highly flexible and customizable

Page 66: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Isolation

Page 67: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Isolation

Page 68: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Isolation

Page 69: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Isolation

Page 70: Johan Janssen, Info Support. Internet of Things Docker and Java on a Raspberry Pi Jenkins Questions

Questions

[email protected]