johan janssen, info support. continuous delivery docker jenkins questions
TRANSCRIPT
![Page 1: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/1.jpg)
Gebruik dezelfde Docker container voor Java applicaties tijdens
ontwikkelen en in de cloud
Johan Janssen, Info Support
![Page 2: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/2.jpg)
Content
Continuous delivery
Docker
Jenkins
Questions
![Page 3: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/3.jpg)
Continuous Delivery
Automate everything
Software quality
Continuous improvement
Regular deployments
Anyone can deploy
![Page 4: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/4.jpg)
Deployment pipeline
Version control
Compile
Quality checks
Testing
Deployments
DevOps End users
Etcetera
Setup environment
![Page 5: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/5.jpg)
Deployment pipeline
![Page 6: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/6.jpg)
Focus of this presentation
Automate environment provisioning
Automate application deployment
![Page 7: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/7.jpg)
What to deliver?
![Page 8: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/8.jpg)
Docker
![Page 9: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/9.jpg)
Transportation issue
![Page 10: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/10.jpg)
Transportation solution
![Page 11: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/11.jpg)
Software issue
![Page 12: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/12.jpg)
Software solution
![Page 13: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/13.jpg)
Docker compatibility
![Page 14: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/14.jpg)
Demo
![Page 15: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/15.jpg)
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
![Page 16: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/16.jpg)
Docker vs Virtual Machines
Disk space efficiency Memory efficiency Speed Compatibility (run anywhere) Isolation Versioning Internet of Things (Raspberry Pi
etc.)
![Page 17: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/17.jpg)
Docker vs provisioning tools
Simple general commands No Domain Specific Language
(DSL) Configuration with operating
system commands
![Page 18: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/18.jpg)
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
![Page 19: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/19.jpg)
Docker on CIO TODAY
![Page 20: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/20.jpg)
Windows will get Docker support
![Page 21: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/21.jpg)
My first Docker container
Docker on Ubuntu 14.04
apt-get install docker.io
docker.io run -i -t ubuntu:saucy /bin/bash
![Page 22: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/22.jpg)
Docker technology
![Page 23: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/23.jpg)
Dockerfiles directory structure
Main directory BuildAndRunScript.sh GeneralBase
Dockerfile Sonar
Dockerfile
![Page 24: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/24.jpg)
Dockerfile GeneralBase
FROM ubuntu:saucy
RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:webupd8team/javaRUN apt-get update && apt-get -y upgradeRUN echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selectionsRUN apt-get -y install oracle-java7-installerENV JAVA_HOME /usr/lib/jvm/java-7-oracle
![Page 25: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/25.jpg)
Dockerfile SonarFROM GeneralBase
RUN apt-get install -y wget unzipRUN wget http://dist.sonar.codehaus.org/sonarqube-4.2.zipRUN unzip sonarqube-4.2.zip -d /optRUN rm sonarqube-4.2.zip
EXPOSE 9000 EXPOSE 9092CMD ["/opt/sonarqube-4.2/bin/linux-x86-64/sonar.sh", "console", "/bin/bash"]
![Page 26: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/26.jpg)
Build
Create the Dockerfiles Build the containers:
<optional>cd GeneralBasedocker.io build -t GeneralBase . cd .. </optional>cd Sonardocker.io build -t Sonar .
![Page 27: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/27.jpg)
Run
Start the containerdocker.io run -p 9000:9000
–p 9092:9092 -d Sonar
![Page 28: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/28.jpg)
List all in(active) containers
# docker.io ps –aCONTAINER 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
![Page 29: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/29.jpg)
Controlling containers
Start / stop / restartdocker [start/stop/restart] containerid
Follow SystemOut and SystemErrdocker logs -f containerid
![Page 30: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/30.jpg)
Controlling containers
Show (running) containersdocker ps –a
Show processes running in container
docker top containerid
Show changes in the containerdocker diff containerid
![Page 31: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/31.jpg)
Controlling containers
Stop all containersdocker.io stop $(docker.io ps -a -q)
Remove all containersdocker.io rm $(docker.io ps -a -q)
Remove all imagesdocker.io rmi $(docker.io images -q)
![Page 32: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/32.jpg)
We need lots of Docker containers
GeneralBase
AppServerBase
Environment D
Environment T
Environment A
Environment P
Jenkins
JenkinsDataContainer
Sonar Gitblit Nexus
![Page 33: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/33.jpg)
Data volumes
DockerfileENV JENKINS_HOME /var/JenkinsData
Docker commandsdocker.io run -v /var/JenkinsData –name JenkinsDataContainer ubuntu:saucy true
docker.io run -p 8080:8080 --volumes-from JenkinsDataContainer -d Jenkins
![Page 34: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/34.jpg)
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
![Page 35: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/35.jpg)
Execution time
real 4m11.729suser 0m3.329s sys 0m10.054s
![Page 36: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/36.jpg)
Docker overview
![Page 37: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/37.jpg)
One ring to rule them all
![Page 38: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/38.jpg)
Docker registry
Creating the Docker registrydocker run -p 5000:5000 registry
![Page 39: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/39.jpg)
Docker client 1 (push)
Modify container Commit
docker.io commit 064f192.168.56.31:5000/test-version-0.2
New containerid -> ff7e
Pushdocker.io push
192.168.56.31:5000/test-version-0.2
![Page 40: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/40.jpg)
Docker client 2 (pull)
Pulldocker.io pull 192.168.56.31:5000/
test-version-0.2
Rundocker.io run -i -t ff7e /bin/bash
View the changed container
![Page 41: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/41.jpg)
Updating containers
![Page 42: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/42.jpg)
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 complete153b: Download complete
docker images -tree└─153b 194.2 MB test-version-0.1:latest └─ff7e 194.2 MB test-version-0.2:latest
![Page 43: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/43.jpg)
Docker vs Virtual Machines
![Page 44: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/44.jpg)
Jenkins
![Page 45: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/45.jpg)
Demo
![Page 46: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/46.jpg)
Why Jenkins
Simple to use Really popular
Used in many organizations Regular updates Big community creating plugins
etc.
Most developers already use it
![Page 47: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/47.jpg)
Example build pipeline
TAP
D
1
2
34
6
7
8
9
5
![Page 48: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/48.jpg)
Jenkins
![Page 49: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/49.jpg)
Backend pipeline
![Page 50: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/50.jpg)
Frontend pipeline
![Page 51: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/51.jpg)
Combined pipeline
![Page 52: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/52.jpg)
Automatic versus manual deployment
Continuous delivery
Continuous deployment
![Page 53: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/53.jpg)
Automatic versus manual
![Page 54: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/54.jpg)
Build pipeline plugin
![Page 55: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/55.jpg)
Publish over SSH plugin
![Page 56: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/56.jpg)
Publish over SSH plugin
![Page 57: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/57.jpg)
Keep it simple
“Life is really simple, but we insist on making it complicated.”
- Confucius
![Page 58: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/58.jpg)
Build pipeline demo
![Page 59: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/59.jpg)
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
![Page 60: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/60.jpg)
Isolation
![Page 61: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/61.jpg)
Isolation
![Page 62: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/62.jpg)
Isolation
![Page 63: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/63.jpg)
Isolation
![Page 64: Johan Janssen, Info Support. Continuous delivery Docker Jenkins Questions](https://reader035.vdocument.in/reader035/viewer/2022062408/56649eb45503460f94bbbfd2/html5/thumbnails/64.jpg)
Summary