Gaming industry under DDoS attack. Get DDoS protection now. Start onboarding
  1. Home
  2. Developers
  3. Building Docker images to Docker Hub using Jenkins Pipelines

Building Docker images to Docker Hub using Jenkins Pipelines

  • By Gcore
  • March 19, 2023
  • 2 min read
Building Docker images to Docker Hub using Jenkins Pipelines

Jenkins Pipeline is a powerful tool when you are using Jenkins to automate your deployments. Flexible and customized actions split between stages are a good reason to try this feature.

Building your own Docker Image and upload to Docker Hub to keep your repository updated is a good example to understand how Jenkins Pipelines can improve your way of work.

Prerequisites

  • A server with Jenkins and Docker running on it (Jenkins user should be allowed to run Docker).
  • Github account.
  • Docker hub account.

Setting up your environment

Install the Docker Pipelines plugin on Jenkins:

Manage Jenkins → Manage Plugins.

Search Docker Pipelines, click on Install without restart and wait until is done. 
Upload your Dockerfile definition to your Github repository. Click on the green button Clone or Download and copy the URL as you will need it later.

On Jenkins you need to create a new credential with your Docker Hub account details. Go to Credentials → Global → Add credentials and fill out the form with your username and password. Fill in ID and Descriptions. Note that if you set the ID, you will need this specific ID to refer this credential from your scripts. Here we are just using dockerhub_id.

Creating your first Jenkins Pipeline

Now, we are ready to create our first Pipeline. On Jenkins go to  New Item → Pipeline, type the name you want for this Pipeline project and then click OK.

Following that you can skip all General and Build Trigger options and go straight to the Pipeline section. Here you can include a Pipeline definition (usually named Jenkinsfile) or you can refer to an external location like Git or Subversion.

The Pipeline we are defining have four stages:

  • The first one is to get the Dockerfile from our Github repository,
  • The second one will build the image using $BUILD_NUMBER to tag the version,
  • The third one is pushing the built image to your Docker Hub registry.
  • Finally, we will cleanup the previously built image on the local server.

Please note you need to modify the code with your specific Docker Hub and Github details:

pipeline {environment {registry = "YourDockerhubAccount/YourRepository"registryCredential = 'dockerhub_id'dockerImage = ''}agent anystages {stage('Cloning our Git') {steps {git 'https://github.com/YourGithubAccount/YourGithubRepository.git'}}stage('Building our image') {steps{script {dockerImage = docker.build registry + ":$BUILD_NUMBER"}}}stage('Deploy our image') {steps{script {docker.withRegistry( '', registryCredential ) {dockerImage.push()}}}}stage('Cleaning up') {steps{sh "docker rmi $registry:$BUILD_NUMBER"}}}}

Run your Pipeline and build Images

Now we are ready to run the Pipeline and check the output if an error is present on any stage during the run. 
Go to your Pipeline project on Jenkins and click on Build Now to run manually. You should get a sequential output of the different stages similar to this one:

If everything is fine, you can check your Docker Hub repository for a new image tagged with the Jenkins build version matching with your Docker Hub registry:

This was a basic example of how to work with Pipelines and integrate different components of your deployments. There are possibilities of creating numerous complex integrations through Pipelines as you go ahead.

Some ideas to go further with Jenkins:

  • Define a webhook to run Pipeline when a commit is submitted to your Github repository.
  • Include several containers in the same pipeline to keep different stages (like backend and frontend) or different environments (dev/prod)
  • Set a notification by Email/Telegram/Slack with the status and/or output of your Pipeline.

As you can see, a lot of options are easily achievable. Just keep playing and getting deeper on Jenkins Pipelines Orchestration. Alternatively you can also run Jenkins on Kubernetes.

Discover more with Gcore Managed Kubernetes

Related articles

What's the difference between multi-cloud and hybrid cloud?

Multi-cloud and hybrid cloud represent two distinct approaches to distributed computing architecture that build upon the foundation of cloud computing to help organizations improve their IT infrastructure.Multi-cloud environments involve us

What is multi-cloud? Strategy, benefits, and best practices

Multi-cloud is a cloud usage model where an organization utilizes public cloud services from two or more cloud service providers, often combining public, private, and hybrid clouds, as well as different service models, such as Infrastructur

What is cloud migration? Benefits, strategy, and best practices

Cloud migration is the process of transferring digital assets, such as data, applications, and IT resources, from on-premises data centers to cloud platforms, including public, private, hybrid, or multi-cloud environments. Organizations can

What is a private cloud? Benefits, use cases, and implementation

A private cloud is a cloud computing environment dedicated exclusively to a single organization, providing a single-tenant infrastructure that improves security, control, and customization compared to public clouds.Private cloud environment

What is a cloud GPU? Definition, types, and benefits

A cloud GPU is a remotely rented graphics processing unit hosted in a cloud provider's data center, accessible over the internet via APIs or virtual machines. These virtualized resources allow users to access powerful computing capabilities

What is cloud networking: benefits, components, and implementation strategies

Cloud networking is the use and management of network resources, including hardware and software, hosted on public or private cloud infrastructures rather than on-premises equipment. Over 90% of enterprises are expected to adopt cloud netwo

Subscribe to our newsletter

Get the latest industry trends, exclusive insights, and Gcore updates delivered straight to your inbox.