Gebruik dezelfde docker container voor java applicaties tijdens ontwikkelen en in de cloud
This presentation is the property of its rightful owner.
Sponsored Links
1 / 65

Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen en in de cloud PowerPoint PPT Presentation


  • 78 Views
  • Uploaded on
  • Presentation posted in: General

Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen en in de cloud. Johan Janssen, Info Support. Content. Continuous delivery Docker Jenkins Questions. Continuous Delivery. Automate everything Software quality Continuous improvement Regular deployments

Download Presentation

Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen en in de cloud

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


Gebruik dezelfde docker container voor java applicaties tijdens ontwikkelen en in de cloud

Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen en in de cloud

Johan Janssen, Info Support


Content

Content

  • Continuous delivery

  • Docker

  • Jenkins

  • Questions


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


Deployment pipeline1

Deployment pipeline


Focus of this presentation

Focus of this presentation

  • Automate environment provisioning

  • Automate application deployment


What to deliver

What to deliver?


Docker

Docker


Transportation issue

Transportation issue


Transportation solution

Transportation solution


Software issue

Software issue


Software solution

Software solution


Docker compatibility

Docker compatibility


Gebruik dezelfde docker container voor java applicaties tijdens ontwikkelen en in de cloud

Demo


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


Docker activity

Docker activity

  • Since March 2013

  • 8741 commits in 15 months

  • More than 460 570 contributors

  • Downloaded 2.75 13 million times

  • More than 14000 30000 Dockerized apps

  • >6500 Docker related projects on GitHub

  • More than 90 user groups

  • DockerCon (Europe)

  • Support from Google, VMWare, RackSpace, Red Hat, IBM, Microsoft etcetera


Docker on cio today

Docker on CIO TODAY


Windows will get docker support

Windows will get Docker support


My first docker container

My first Docker container

  • Docker on Ubuntu 14.04

    apt-get install docker.io

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


Docker technology

Docker technology


Dockerfiles directory structure

Dockerfiles directory structure

  • Main directory

    • BuildAndRunScript.sh

    • GeneralBase

      • Dockerfile

    • Sonar

      • Dockerfile


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 wget unzip

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"]


Build

Build

  • Create the Dockerfiles

  • Build the containers:

    <optional>cd GeneralBase

    docker.io build -t GeneralBase .

    cd .. </optional>

    cd Sonar

    docker.io build -t Sonar .


Gebruik dezelfde docker container voor java applicaties tijdens ontwikkelen en in de cloud

Run

  • Start the container

    docker.io run -p 9000:9000

    –p 9092:9092 -d Sonar


List all in active containers

List all in(active) containers

# docker.io ps –a

CONTAINER ID: ecbecf77461b

CREATED: 32 minutes ago

STATUS: Up 32 minutes

PORTS: 0.0.0.0:9000->9000/tcp, 0.0.0.0:9092->9092/tcp


Controlling containers

Controlling containers

  • Start / stop / restart

    docker [start/stop/restart] containerid

  • Follow SystemOut and SystemErr

    docker logs -f containerid


Controlling containers1

Controlling containers

  • Show (running) containers

    dockerps –a

  • Show processes running in container

    docker top containerid

  • Show changes in the container

    docker diff containerid


Controlling containers2

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)


We need lots of docker containers

We need lots of Docker containers


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

real4m11.729s

user0m3.329s

sys0m10.054s


Docker overview

Docker overview


One ring to rule them all

One ring to rule them all


Docker registry

Docker registry

  • Creating the Docker registry

    docker run -p 5000:5000 registry


Docker client 1 push

Docker client 1 (push)

  • Modify container

  • 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


Updating containers

Updating containers


Pull update only

Pull update only

docker images -tree

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

docker pull 192.168.56.31:5000/test-version-0.2

ff7e: Download complete

153b: Download complete

docker images -tree

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

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


Docker vs virtual machines1

Docker vs Virtual Machines


Jenkins

Jenkins


Gebruik dezelfde docker container voor java applicaties tijdens ontwikkelen en in de cloud

Demo


Why jenkins

Why Jenkins

  • Simple to use

  • Really popular

    • Used in many organizations

    • Regular updates

    • Big community creating plugins etc.

  • Most developers already use it


Example build pipeline

Example build pipeline

1

2

5

D

6

7

T

8

4

A

3

9

P


Jenkins1

Jenkins


Backend pipeline

Backend pipeline


Frontend pipeline

Frontend pipeline


Combined pipeline

Combined pipeline


Automatic versus manual deployment

Automatic versus manual deployment

Continuous deployment

Continuous delivery


Automatic versus manual

Automatic versus manual


Build pipeline plugin

Build pipeline plugin


Publish over ssh plugin

Publish over SSH plugin


Publish over ssh plugin1

Publish over SSH plugin


Keep it simple

Keep it simple

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

- Confucius


Build pipeline demo

Build pipeline demo


Gebruik dezelfde docker container voor java applicaties tijdens ontwikkelen en in de 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


Isolation

Isolation


Isolation1

Isolation


Isolation2

Isolation


Isolation3

Isolation


Summary

Summary


Questions

Questions

[email protected]

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


  • Login