1 / 65

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. Continuous delivery Docker Jenkins Questions. Continuous Delivery. Automate everything Software quality Continuous improvement Regular deployments

Télécharger la présentation

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen en in de cloud Johan Janssen, Info Support

  2. Content • Continuous delivery • Docker • Jenkins • Questions

  3. Continuous Delivery • Automate everything • Software quality • Continuous improvement • Regular deployments • Anyone can deploy

  4. Deployment pipeline Setup environment Quality checks Version control Compile Testing Deployments Etcetera DevOps End users

  5. Deployment pipeline

  6. Focus of this presentation • Automate environment provisioning • Automate application deployment

  7. What to deliver?

  8. Docker

  9. Transportation issue

  10. Transportation solution

  11. Software issue

  12. Software solution

  13. Docker compatibility

  14. Demo

  15. 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

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

  17. Docker vs provisioning tools • Simple general commands • No Domain Specific Language (DSL) • Configuration with operating system commands

  18. 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

  19. Docker on CIO TODAY

  20. Windows will get Docker support

  21. My first Docker container • Docker on Ubuntu 14.04 apt-get install docker.io docker.io run -i -t ubuntu:saucy /bin/bash

  22. Docker technology

  23. Dockerfiles directory structure • Main directory • BuildAndRunScript.sh • GeneralBase • Dockerfile • Sonar • Dockerfile

  24. 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

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

  26. Build • Create the Dockerfiles • Build the containers: <optional>cd GeneralBase docker.io build -t GeneralBase . cd .. </optional> cd Sonar docker.io build -t Sonar .

  27. Run • Start the container docker.io run -p 9000:9000 –p 9092:9092 -d Sonar

  28. 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

  29. Controlling containers • Start / stop / restart docker [start/stop/restart] containerid • Follow SystemOut and SystemErr docker logs -f containerid

  30. Controlling containers • Show (running) containers dockerps –a • Show processes running in container docker top containerid • Show changes in the container docker diff containerid

  31. 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)

  32. We need lots of Docker containers

  33. 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

  34. 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

  35. Execution time real 4m11.729s user 0m3.329s sys 0m10.054s

  36. Docker overview

  37. One ring to rule them all

  38. Docker registry • Creating the Docker registry docker run -p 5000:5000 registry

  39. 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

  40. 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

  41. Updating containers

  42. 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

  43. Docker vs Virtual Machines

  44. Jenkins

  45. Demo

  46. Why Jenkins • Simple to use • Really popular • Used in many organizations • Regular updates • Big community creating plugins etc. • Most developers already use it

  47. Example build pipeline 1 2 5 D 6 7 T 8 4 A 3 9 P

  48. Jenkins

  49. Backend pipeline

  50. Frontend pipeline

More Related