O SlideShare utiliza cookies para otimizar a funcionalidade e o desempenho do site, assim como para apresentar publicidade mais relevante aos nossos usuários. Se você continuar a navegar o site, você aceita o uso de cookies. Leia nosso Contrato do Usuário e nossa Política de Privacidade.
O SlideShare utiliza cookies para otimizar a funcionalidade e o desempenho do site, assim como para apresentar publicidade mais relevante aos nossos usuários. Se você continuar a utilizar o site, você aceita o uso de cookies. Leia nossa Política de Privacidade e nosso Contrato do Usuário para obter mais detalhes.
CI, CD WITH DOCKER,
JENKINS AND TUTUM
Presenter Name: Sreenivas Makam
Presented at: Gopaddle Meetup Bangalore
Presentation Date: Jan 23, 2016
• Senior Engineering Manager at Cisco
Systems Data Center group
• Personal blog can be found at
https://sreeninet.wordpress.com/ and my
hacky code at https://github.com/smakam
• Working currently on “Mastering CoreOS”
book. To be published early March 2016.
• You can reach me on LinkedIn at
• Continuous Integration (CI) refers to the
process of making an executable or a Container
image automatically after developer has done
the UT and commit.
• Continuous delivery refers to the process of
taking the developer built image, setting up the
staging environment for testing the image and
deploying it successfully for production.
Why Docker is suited for CI/CD?
• Ability to create consistent build environments
• Build environments can be created and removed
• Ability to run multiple isolated build jobs
• Create consistent staging and production
• Assists with different upgrade patterns(like
Rolling upgrade with Canary pattern)
Jenkins with Docker - Advantages
• Jenkins provides the complete workflow for
CI/CD and has good integration with testing and
code analysis tools.
• Docker provides Containers and Container
• Jenkins with Docker gives a Container based
CI/CD workflow and integration with third-party
tools for creating a customized workflow.
• Jenkins can be run as Docker Container
Jenkins Docker plugins
• Docker Workflow – provides first-class support for Jenkins Workflow to build real
world CD pipelines for containerized applications using Jenkins and Docker
• Build and Publish – builds projects from a Dockerfile and pushes a tested and
proven gold image to Docker Hub
• Docker Hub Notification – triggers downstream jobs when a tagged container is
pushed to Docker Hub
• Docker Traceability – identifies which build pushed a particular container that is
running in production and displays that on the Jenkins builds page
• Docker Slaves – uses Docker containers as standardized build environments
shared between Jenkins masters to improve isolation and elasticity
• Docker Custom Build Environment – specifies customized build environments as
Jenkins Docker slave
• Rather than running builds jobs directly on slave host,
Jenkins Docker executors creates Containers to run build
• For different projects, different Docker Containers can be
• Parallel jobs can be run on a single slave host with full
isolation between jobs.
• To create Docker builds inside a Docker Container, either
Docker in Docker can be used or Docker socket in host can
be exposed to CI container by bind-mounting it with the -
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
Jenkins with Docker – Use cases
• Create Docker Container images with Github and Docker
Github -> Jenkins -> Docker slave -> Docker image ->
• Ability to run multiple Docker build executors in a single
Jenkins slave instance.
Github -> Jenkins -> Docker slave -> C programming project -
Github -> Jenkins -> Docker slave -> Java programming
project -> Testing
• Deploy Container images in staging or production
Docker hub -> Jenkins -> Docker slave -> Testing ->
Deployment using docker-compose
• SaaS Container platform that can be used to build,
deploy and manage Docker Containers
• Hides orchestration, networking and storage
• Provides GUI, CLI as well as API access
• Gives own private repository within Tutum per user,
other repositories can also be used
• Logging, monitoring, Scaling and HA is built-in
• Does rolling upgrade automatically
• In Beta phase, free to try
Tutum for CI, CD
• Tutum integrates well with Github as well as
all Docker repositories.
• Provides private Docker registry in Tutum
• Tutum CI/CD Use case
Github ->Tutum -> Tutum repository -> Deploy
• Provides flexibility to create different staging
and production deployment environments
• Provides rolling upgrade capability
Comparing Tutum with Jenkins
• Jenkins provides better integration with third-party
testing and code analysis tools.
• Tutum is available only as SaaS. Jenkins can be run on-
• Tutum provides its own registry, inherent load
balancing, service discovery capabilities and rolling
• For pure Container based CI/CD, Tutum would be
better. If there is a need to integrate legacy and
Container based applications and also use third-party
tools, Jenkins is the only option.
CI, CD Demo
More details on this topic and recorded demo
are in the 2 blogs below:
• Jenkins Docker plugin (https://wiki.jenkins-
• Docker CI Use case (https://www.docker.com/products/use-cases)
• Continuous delivery with Docker and Jenkins
• Tutum Support (https://support.tutum.co)
• Docker in Docker for CI (http://jpetazzo.github.io/2015/09/03/do-not-
• CI platform (https://blog.codecentric.de/en/2015/10/continuous-