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

Post on 02-Jun-2020

40 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Web Applications with Eclipse RT and Docker

in the CloudJohannes Eickhold

Markus Knauer @mknauer23

Sandboxing

User Perspective

● access● upload● manage

● experiment● play

● register

Implementing our Vision

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

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

Heavy to Lightweight

Isolation Level

Ligh

twei

ght

Hea

vyw

eigh

t

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.

Intro to Docker

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

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

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 <mknauer@eclipsesource.com" -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

Intro to Docker: DockerfileFROM ubuntu:latest

MAINTAINER EclipseSource <admin@eclipsesource.com>

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

Docker Security

Docker Daemon is running as root!

Beware!

Bad things may happen!

Serving HTTP

SSL for https?

Dynamic Rewriting?

The Backend Server

:443

:80

User Portal

Trial Application User

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

Our Technology Selection

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

Docker Container

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

linked

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

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 );

Visit the Labs

DEMO

Conclusions

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

● Inspiring cool technology

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

Questions?

top related