Presentation is loading. Please wait.

Presentation is loading. Please wait.

Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions.

Similar presentations


Presentation on theme: "Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions."— Presentation transcript:

1 Johan Janssen, Info Support

2 Continuous delivery Docker Jenkins Questions

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

4 Version control Compile Quality checks Testing Deployments DevOpsEnd users Etcetera Setup environment

5

6 Automate environment provisioning Automate application deployment

7

8

9

10

11

12

13

14

15 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 Disk space efficiency Memory efficiency Speed Compatibility (run anywhere) Isolation Versioning Internet of Things (Raspberry Pi etc.)

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

18 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

20

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

22

23 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

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

25 Main directory BuildAndRunScript.sh GeneralBase Dockerfile Sonar Dockerfile

26 Create the Dockerfiles Build the containers: cd GeneralBase (optional) docker.io build -t GeneralBase. (opt..) cd.. (optional) cd Sonar docker.io build -t Sonar.

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

28 # 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 Start / stop / restart docker [start/stop/restart] containerid Follow SystemOut and SystemErr docker logs -f containerid

30 Show (running) containers docker ps –a Show processes running in container docker diff containerid Show changes in the container docker top containerid

31 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 GeneralBase AppServerBase Environment D Environment T Environment A Environment P Jenkins JenkinsDataContainer SonarGitblitNexus

33 Dockerfile ENV JENKINS_HOME /var/JenkinsData Docker commands docker.io run -v /var/JenkinsData –name JenkinsDataContainer ubuntu:saucy true docker.io run -p 8080:8080 --volumes-from JenkinsDataContainer -d Jenkins

34 # 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 real4m11.729s user0m3.329s sys0m10.054s

36

37 Export sudo docker.io export fc8696f5b8b4 > jenkins-backup.tar Import sudo cat jenkins-backup.tar | sudo docker.io import – jenkins

38 sudo docker.io run -rm --volumes-from JenkinsDataContainer -v $(pwd):/backup busybox tar cvf backup.tar /var/JenkinsData

39 sudo docker.io run -v /var/JenkinsData --name JenkinsDataContainer ubuntu:saucy true sudo docker.io run -rm --volumes-from JenkinsDataContainer -v $(pwd):/backup busybox tar xvf /backup/backup.tar –C /

40 Run container sudo docker.io run -e JENKINS_HOME=/var/JenkinsData -p 80:8080 --name Jenkins --volumes-from JenkinsDataContainer -d 1478be52bb java -jar /usr/local/bin/jenkins.war

41

42

43 Creating the Docker registry docker run -p 5000:5000 registry

44 Modify container (for instance with touch) 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

45 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

46

47 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 complete 153bf43b408a: Download complete docker images -tree └─153bf43b408a 194.2 MB test-version-0.1:latest └─ff7e110ebadd 194.2 MB test-version-0.2:latest

48 Commands are easier Faster and easier migration

49 Requires less extra resources Containers are the same, for instance when using apt-get update Not the latest security patches

50

51

52

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

54

55

56

57

58 Continuous delivery Continuous deployment

59

60

61 1 2 3 4 7 8 9 10 5 6?

62

63

64 Execute job after several (parallel) jobs are finished. FirstJob ParallelJob1 ParallelJob2 LastJob

65

66

67 Good looking join Complex workflow Etcetera Advantage: Jenkins jobs are the basis and can be reused. Try to keep it simple!

68 Build Flow Plugin Domain Specific Language Features like retry, parallel, guard/rescue (similar to try/finally) Multijob Plugin Delivery Pipeline Plugin

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

70

71 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

72 Big potential market for Docker and Java Easy to use Highly flexible and customizable

73

74

75

76

77

78 johan.janssen@infosupport.com


Download ppt "Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions."

Similar presentations


Ads by Google