in the cloud eclipse rt and docker2014.java-forum-stuttgart.de/_data/b3_2014.pdf · docker java...

28
Web Applications with Eclipse RT and Docker in the Cloud Johannes Eickhold Markus Knauer @mknauer23

Upload: others

Post on 02-Jun-2020

38 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Web Applications with Eclipse RT and Docker

in the CloudJohannes Eickhold

Markus Knauer @mknauer23

Page 2: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user
Page 3: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Sandboxing

Page 4: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

User Perspective

● access● upload● manage

● experiment● play

● register

Page 5: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Implementing our Vision

● one lightweight container per lab● minimal / no manual preparation per lab

Page 6: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user
Page 7: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Button button = new Button(parent, SWT.PUSH);button.setText("Push me!");

{"head":{"requestCounter":1}, "operations": [... ["create","w3","rwt.widgets.Button",{"parent":"w2","style":["PUSH"],"bounds":[5,5,98,32]}], ["set","w3",{"text":"Push me!"}],...]}

Server Client

JSONHTTP

Page 8: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user
Page 9: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Heavy to Lightweight

Isolation Level

Ligh

twei

ght

Hea

vyw

eigh

t

Page 10: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Docker is an open platform Docker is an open platform for developers and sysadmins

Docker is an open platform for developers and sysadmins

to build, ship, and run distributed applications.

Page 11: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Intro to Docker

Page 12: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Intro to Docker

Docker uses containers● LXC (Linux Containers)

○ cgroups and namespaces for strong process isolation and resource control

Docker uses a copy-on-write filesystem● AUFS

○ stacking and layering of containers

Docker uses simple configuration language● Dockerfile

Page 13: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Intro to Docker: Containers

Server Hardware

Host OS (Linux)

Docker Engine

Docker Container A Docker Container B

Base Image Debian

Tomcat

Web Application A

Base Image Ubuntu

Eclipse Virgo

OSGi Application B

Docker Container C

Base Image Ubuntu

Eclipse Virgo

OSGi Application C

API Console Client

Page 14: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Intro to Docker: Commands$ docker version

$ docker search ubuntu

$ docker pull ubuntu

$ docker images

$ docker run ubuntu cat /etc/os-release

$ docker run -t -i ubuntu /bin/bash

$ docker run ubuntu apt-get install -y traceroute

$ docker ps -l

$ docker commit --author="Markus Knauer <[email protected]" -m="Install traceroute" ID123123123123 mknauer/traceroute

$ docker push

$ docker run mknauer/traceroute traceroute eclipse.org

$ docker run -d --name="rap.demo" --publish=10000:8080 -t eclipsesource/eclipse-rap-demo

$ docker inspect ID123123123123

$ docker logs rap.demo

$ docker pause rap.demo

$ docker unpause rap.demo

$ docker stop rap.demo

$ docker rm -v rap.demo

Page 15: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Intro to Docker: DockerfileFROM ubuntu:latest

MAINTAINER EclipseSource <[email protected]>

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

RUN apt-get install -y gzip tar curl openjdk-7-jre-headless

RUN useradd -m tomcat

...

EXPOSE 8080

ADD setenv.sh /home/tomcat/bin/setenv.sh

VOLUME ["/home/tomcat/webapps"]

WORKDIR /home/tomcat

CMD bin/startup.sh && tail -f logs/catalina.out

Page 16: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Docker Security

Docker Daemon is running as root!

Beware!

Bad things may happen!

Page 17: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Serving HTTP

SSL for https?

Dynamic Rewriting?

Page 18: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

The Backend Server

:443

:80

User Portal

Trial Application User

User

Page 19: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Container C

:20003

Dynamic Reverse Proxy++ RESTMappingService

Container B

:20002

Container A

:20001

http://tabristrial.eclipsesource.com/foo/exampleshttp://tabristrial.eclipsesource.com/foo/examples

http://localhost:20002/myapp/examples

user

: foo

http://localhost:20002/myapp

http://tabristrial.eclipsesource.com/foo/examples

Page 20: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Our Technology Selection

Page 21: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Using the Lab1. register at website

2. receive mail with registration key

3. access user portal with registration key (OAuth)

4. upload app (Web Application)

5. URL under which app is available

6. access app

Lab Registration(some website)

Lab

Page 22: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Docker Container

● Based on Ubuntu image● Contains OpenJDK 7 + VirgoStatic and dynamic containers

linked

Page 23: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Inside Docker: VirgoContainer A

:20001

Java VM

:8080

● Upload of app via HTTP● Static Docker instance

(“user portal”) uses JMX bean of Virgo to deploy the app

Application Upload

Page 24: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Docker Java

admin console: docker buildString build( String imageTag, String dockerFolder );

user portal: docker runString create( String imageTag,

String containerName,

int containerPort );

void start( String containerId,

int hostPort,

int containerPort );

Page 25: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Visit the Labs

DEMO

Page 26: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Conclusions

● Docker proved to be stable and flexible and scalable at the same time

● Inspiring cool technology

Page 27: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Outlook

● Polish web user interfaces and add more management capabilities to user console

● Put everything into Docker containers

● Release as well documented open source template project

● Switch to Virgo RAP Server

Page 28: in the Cloud Eclipse RT and Docker2014.java-forum-stuttgart.de/_data/B3_2014.pdf · Docker Java admin console: docker build String build( String imageTag, String dockerFolder ); user

Questions?