• Articles
  • Tutorials
  • Interview Questions

Deploying Jenkins on Docker: A Step-by-Step Guide

Deploying Jenkins on Docker: A Step-by-Step Guide

An industry-standard automation server, Jenkins can be seamlessly integrated with Docker, a powerful containerization platform. Running Jenkins on Docker brings numerous advantages, including simplified setup, easy scalability, and enhanced portability. 

By encapsulating Jenkins within a Docker container, you can ensure consistent and reproducible environments across different systems, eliminating potential compatibility issues. 

This blog provides a clear understanding of how to configure and utilize Jenkins within Docker.

Kindly go through our Docker Course video in order to get a better understanding:

Video Thumbnail

What is Jenkins?

What is Jenkins

Jenkins is an open-source automation server pivotal in facilitating continuous integration and delivery of software applications. It offers a strong foundation for automating diverse tasks encompassing the software development lifecycle, including building, testing, and deploying applications. 

Jenkins boasts extensive plugins and integrations with various tools, enabling effortless customization and extensibility. Its user-friendly web interface and robust capabilities have positioned Jenkins as a preferred choice for teams and organizations seeking to automate their development workflows and accomplish swift and dependable software delivery. In Jenkins, we create pipelines to achieve continuous integration and continuous development.

What is Docker?

What is Docker

Docker is a popular platform for containerization, enabling the creation and management of lightweight, isolated software containers. Containers are self-contained units that package an application and its dependencies, allowing easy deployment across different environments. 

Docker provides a consistent runtime environment, ensuring applications run consistently regardless of the underlying system. By utilizing Docker, developers can achieve greater efficiency, scalability, and flexibility in deploying their applications while minimizing conflicts between dependencies. 

Docker simplifies the process of packaging, shipping, and running applications, revolutionizing how software is developed and deployed.

Cloud Computing EPGC IITR iHUB

Jenkins Vs. Docker

Jenkins Vs Docker

Jenkins and Docker have widely used software development and deployment tools, each serving distinct purposes. Although they can be employed together to enhance the software development process, there are fundamental differences between the two:

CriteriaJenkinsDocker
PurposeIt is an open-source automation server primarily utilized for continuous integration and continuous delivery. It streamlines software application building, testing, and deployment by automating these processes.Docker is an open-source platform that facilitates application packaging and execution within containers. Its primary goal is to offer a consistent runtime environment, allowing applications to operate uniformly across different systems.
FunctionalityWith extensive features, Jenkins excels in CI/CD. It encompasses source code management, build automation, testing, and deployment, empowering developers to construct pipelines or workflows that automate the software development lifecycle.
Docker is primarily concerned with containerization. It enables developers to encapsulate applications and their dependencies into lightweight, portable containers. These containers can then be executed on any machine equipped with Docker, guaranteeing consistent behavior across diverse environments.
ScalabilityAs a distributed system, Jenkins can scale by employing multiple instances known as “agents” to handle different aspects of the build and deployment processes. It facilitates workload distribution through a master-slave architecture.Docker’s scalability is achieved through containerization. Running multiple containerized application instances across various machines or cloud instances allows horizontal scaling to be easily accomplished.
IsolationJenkins relies on the underlying operating system’s process isolation capabilities and does not inherently provide isolation between different build or deployment processes.Docker delivers robust isolation among applications running within containers. Each container possesses its own file system, network stack, and process space, ensuring isolation from other applications and the host system.
PortabilityWhile Jenkins primarily focuses on automating software development workflows rather than portability, it offers some portability. Configurations and job definitions can be exported and imported to replicate similar environments elsewhere.Docker containers are highly portable. Once a Docker image is created, it can be executed on any machine equipped with Docker, irrespective of the underlying operating system or infrastructure. This is as long as the necessary dependencies are satisfied.

How to Configure Jenkins in Docker?

How to Configure Jenkins in Docker

Here’s a step-by-step guide on how to configure Jenkins on Docker:

  • Step 1: Install Docker
    Ensure that Docker is installed on your machine. Download and install Docker from the official Docker website.
  • Step 2: Pull the Jenkins Docker Image
    Open a terminal or command prompt and run the following command to pull the Jenkins Docker image:
docker pull jenkins/jenkins
  • Step 3: Create a Docker Volume (Optional)
    Creating a Docker volume is optional but recommended to persist Jenkins data even after the container restarts. Run the following docker command to create a Docker volume named “jenkins_volume”:
docker volume create jenkins_volume
  • Step 4: Run the Jenkins Docker Container
    Execute the following command to run the Jenkins Docker container:
    This command starts the Jenkins container, binds ports 8080 and 50000 to the host, and mounts the “jenkins_volume” to the container’s “/var/jenkins_home” directory.
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --mount source=jenkins_volume,target=/var/jenkins_home jenkins/jenkins
  • Step 5: Access the Jenkins Web Interface
    Wait for a few moments until Jenkins starts up. Then, open a web browser and visit the local host. You should see the Jenkins setup page.
  • Step 6: Retrieve the Initial Admin Password
    To proceed with the Jenkins setup, you must retrieve the initial admin password. Run the following command to access the Jenkins container and retrieve the password:
docker exec jenkins cat
/var/jenkins_home/secrets/initialAdminPassword

Copy the password displayed in the terminal.

  • Step 7: Complete Jenkins Setup
    Return to the Jenkins setup page in your web browser. Paste the initial admin password into the provided field and click “Continue.” Follow the on-screen instructions to complete the setup, including installing plugins and creating an admin user.
  • Step 8: Start Using Jenkins
    Once the setup is complete, you can start using Jenkins. Customize Jenkins based on your requirements and begin creating jobs and managing your CI and CD processes.

That’s it! You have successfully configured Jenkins on Docker.

Get 100% Hike!

Master Most in Demand Skills Now!

Conclusion

In conclusion, this blog has provided a concise and informative guide on running Jenkins on Docker, ensuring clarity for learners. We defined Jenkins as a popular automation tool and Docker as a containerization platform. By comparing Jenkins and Docker, we shed light on their distinct roles in software development. 

Moreover, we detailed the step-by-step process of configuring Jenkins within a Docker environment, emphasizing the significance of proper setup. This blog equips learners with the knowledge and practical insights to utilize Jenkins on Docker effectively, facilitating streamlined and efficient development workflows.

Course Schedule

Name Date Details
AWS Certification 30 Nov 2024(Sat-Sun) Weekend Batch View Details
07 Dec 2024(Sat-Sun) Weekend Batch
14 Dec 2024(Sat-Sun) Weekend Batch

About the Author

Senior Cloud Computing Associate

Rupinder is a distinguished Cloud Computing & DevOps associate with architect-level AWS, Azure, and GCP certifications. He has extensive experience in Cloud Architecture, Deployment and optimization, Cloud Security, and more. He advocates for knowledge sharing and in his free time trains and mentors working professionals who are interested in the Cloud & DevOps domain.