<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AyushDabhi</title>
    <description>The latest articles on DEV Community by AyushDabhi (@ayushdabhi).</description>
    <link>https://dev.to/ayushdabhi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F994869%2F55ddbaf9-0d02-4ec2-9c32-b7ed10404f7e.jpg</url>
      <title>DEV Community: AyushDabhi</title>
      <link>https://dev.to/ayushdabhi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ayushdabhi"/>
    <language>en</language>
    <item>
      <title>Docker Commands</title>
      <dc:creator>AyushDabhi</dc:creator>
      <pubDate>Sat, 08 Apr 2023 21:14:39 +0000</pubDate>
      <link>https://dev.to/ayushdabhi/docker-commands-4igb</link>
      <guid>https://dev.to/ayushdabhi/docker-commands-4igb</guid>
      <description>&lt;h2&gt;
  
  
  docker --version
&lt;/h2&gt;

&lt;p&gt;Used to check your docker version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  docker pull
&lt;/h2&gt;

&lt;p&gt;Which pulls the image from the repository to your local environment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker pull redis # It will pull redis image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UlGFEozK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vzgjeq493a6isp27qxvr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UlGFEozK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vzgjeq493a6isp27qxvr.png" alt="Image description" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker ps
&lt;/h2&gt;

&lt;p&gt;It gives running container details.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z-CNNUy8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tc0sleyjybi9ik7q4oll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z-CNNUy8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tc0sleyjybi9ik7q4oll.png" alt="Image description" width="800" height="64"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker start
&lt;/h2&gt;

&lt;p&gt;Restart a stopped container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker start 7aaaa6322b5f # write container id or name
#OR
docker start sad_hugle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8QNkh4nj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5dv6zw8e75fkklx0y4zu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8QNkh4nj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5dv6zw8e75fkklx0y4zu.png" alt="Image description" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Note: CONTAINER ID and NAME is randomly generated. Check your CONTAINER ID and NAME by running the docker ps command.
&lt;/h1&gt;

&lt;h2&gt;
  
  
  docker stop
&lt;/h2&gt;

&lt;p&gt;Use to stop running container&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker stop CONTAINER_ID 
# OR
docker stop NAMES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y-VS6vTj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ypmfr0rdsi2kfeppkqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y-VS6vTj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ypmfr0rdsi2kfeppkqw.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker run
&lt;/h2&gt;

&lt;p&gt;Which combines pull and start, pulls the image if it's not locally available and then starts it right away.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run node #It will pull and start the node container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aMkB5NtW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fntgoipy9ij4a7urzv2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aMkB5NtW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fntgoipy9ij4a7urzv2c.png" alt="Image description" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker run -d
&lt;/h2&gt;

&lt;p&gt;Run the container in detached mode. This means that the container will run in the background and the console output will not be shown in the current terminal session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -d redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kGZIy5cO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/za318jd06g93iwiq07sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kGZIy5cO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/za318jd06g93iwiq07sa.png" alt="Image description" width="800" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker ps -a
&lt;/h2&gt;

&lt;p&gt;Which gives you all the containers no matter if they're running currently or not.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps -a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kWShlWXS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k9ly5862g857rhmvaknb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kWShlWXS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k9ly5862g857rhmvaknb.png" alt="Image description" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker run -p6000:6794
&lt;/h2&gt;

&lt;p&gt;Allows you to bind the port of your host to the container&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-p&lt;/code&gt; =&amp;gt; port&lt;/p&gt;

&lt;p&gt;&lt;code&gt;6000&lt;/code&gt; =&amp;gt; The port of Host&lt;/p&gt;

&lt;p&gt;&lt;code&gt;6794&lt;/code&gt; =&amp;gt; The port of the container&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qXoB3ws9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ev83wssg3ttfzmr2moar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qXoB3ws9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ev83wssg3ttfzmr2moar.png" alt="Image description" width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker images
&lt;/h2&gt;

&lt;p&gt;Which gives you all the images that you have locally available.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jLsLJbNQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g3qyle8qul85abym8q8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jLsLJbNQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g3qyle8qul85abym8q8m.png" alt="Image description" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  docker rm
&lt;/h2&gt;

&lt;p&gt;Remove a Container&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker rm CONTAINER_ID

#OR

docker rm NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xWC4i-0t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2gwmg0odda8a34ch618j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xWC4i-0t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2gwmg0odda8a34ch618j.png" alt="Image description" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Note: You can't remove running container directly first stop the container using &lt;code&gt;docker stop CONTAINER_ID&lt;/code&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  docker rmi
&lt;/h2&gt;

&lt;p&gt;Remove images&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker rmi IMAGE_ID 

#OR

docker rmi IMAGE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker rmi -f IMAGE_ID  # -f means forced fully remove image

#OR

docker rmi -f IMAGE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Note: Delete all dependent containers to remove the image
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---B2gGfYf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8d1feevydp44ehesf9u1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---B2gGfYf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8d1feevydp44ehesf9u1.png" alt="Image description" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading !!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>dockercommands</category>
      <category>dockerimages</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Create your Jenkins Pipeline Job</title>
      <dc:creator>AyushDabhi</dc:creator>
      <pubDate>Tue, 28 Mar 2023 20:01:21 +0000</pubDate>
      <link>https://dev.to/ayushdabhi/create-your-jenkins-pipeline-job-p5n</link>
      <guid>https://dev.to/ayushdabhi/create-your-jenkins-pipeline-job-p5n</guid>
      <description>&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Creating your first Jenkins pipeline.
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Log into Jenkins and select ‘&lt;strong&gt;New item&lt;/strong&gt;’ from the dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uAwbGxPa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8lqbzh9yq15phjweyzus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uAwbGxPa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8lqbzh9yq15phjweyzus.png" alt="Log into Jenkins" width="403" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Next, enter a name for your pipeline and select ‘pipeline’ project. Click on ‘ok’ to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GoPwedIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xif92zkjhlw5qksukkfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GoPwedIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xif92zkjhlw5qksukkfy.png" alt="enter a name for your pipeline" width="880" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Scroll down to the pipeline and choose if you want a declarative pipeline or a scripted one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_8AmM7cI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w1sry4rw4rcmdv29zne0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_8AmM7cI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w1sry4rw4rcmdv29zne0.png" alt="choose if you want a declarative pipeline or a scripted one" width="880" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4a&lt;/strong&gt;: If you want a scripted pipeline then choose ‘pipeline script’ and start typing your code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GnxRYdz---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0sax8o1z5srjq2ttnt2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GnxRYdz---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0sax8o1z5srjq2ttnt2u.png" alt="Image description" width="880" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4b&lt;/strong&gt;: If you want a declarative pipeline then select ‘pipeline script from SCM’ and choose your SCM. In my case, I’m going to use Git throughout this demo. Enter your repository URL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tAcoTWH4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4g2oj9es4611d468hf8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tAcoTWH4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4g2oj9es4611d468hf8.png" alt="Image description" width="880" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Within the script path is the name of the Jenkinsfile that is going to be accessed from your SCM to run. Finally, click on ‘apply’ and ‘save’. You have successfully created your first Jenkins pipeline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_69HQryA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lkdvsf39xl5nq3xly5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_69HQryA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lkdvsf39xl5nq3xly5q.png" alt="Image description" width="880" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Scripted Pipeline Vs Declarative Pipeline
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_qJwKlnA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlaa8idu975eh6nl85y7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_qJwKlnA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlaa8idu975eh6nl85y7.png" alt="Image description" width="880" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Declarative Pipeline Demo
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first part of the demo shows the working of a declarative pipeline. &lt;/p&gt;

&lt;p&gt;Refer the above ‘Creating your first Jenkins pipeline’ to start.&lt;/p&gt;

&lt;p&gt;Let me start the demo by explaining the code I’ve written in my Jenkinsfile.&lt;/p&gt;

&lt;p&gt;Since this is a declarative pipeline, I’m writing the code locally in a file named ‘Jenkinsfile’ and then pushing this file into my global git repository.&lt;/p&gt;

&lt;p&gt;While executing the ‘Declarative pipeline’ demo, this file will be accessed from my git repository. &lt;/p&gt;

&lt;p&gt;The following is a simple demonstration of building a pipeline to run multiple stages, each performing a specific task.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Required Fields of Jenkinsfile
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q9Ntowhu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fm6tl4wtlur548lhj3bz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q9Ntowhu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fm6tl4wtlur548lhj3bz.png" alt="Image description" width="880" height="479"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Jenkinsfile code
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_TkyyMg8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4up3e55fp73ojztjcqc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_TkyyMg8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4up3e55fp73ojztjcqc3.png" alt="Image description" width="880" height="195"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipeline {

   agent any

   stages {

     stage("build") {

       steps {
           echo 'building the application...'
       }
     }
     stage("test") {

       steps {
          echo 'testing the application...'
       }
     }
     stage("deploy") {

       steps {
          echo 'deploying the application...'
       }
     }
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;push this Jenkinsfile into global git repository&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Output
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;Click on "&lt;strong&gt;Build Now&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AjsQvmwj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6rvlkp9vx7jtmhixwv7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AjsQvmwj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6rvlkp9vx7jtmhixwv7i.png" alt="Image description" width="880" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this blog helped you understand the basics of scripted and declarative pipeline and you able to perform declarative pipeline demo !&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>TFTP ( Trivial File Transfer Protocol ) Server and Client Configurations</title>
      <dc:creator>AyushDabhi</dc:creator>
      <pubDate>Mon, 27 Mar 2023 20:43:36 +0000</pubDate>
      <link>https://dev.to/ayushdabhi/tftp-trivial-file-transfer-protocol-server-and-client-configurations-4de6</link>
      <guid>https://dev.to/ayushdabhi/tftp-trivial-file-transfer-protocol-server-and-client-configurations-4de6</guid>
      <description>&lt;blockquote&gt;
&lt;h2&gt;
  
  
  What is TFTP ?
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;Trivial File Transfer Protocol (TFTP) is a simple file &lt;br&gt;
  transfer protocol that allows a client to retrieve or &lt;br&gt;
  transfer files from a server.&lt;/p&gt;

&lt;p&gt;It is a UDP-based protocol that uses port 69 for &lt;br&gt;
  communication. &lt;/p&gt;

&lt;p&gt;TFTP supports only two transfer modes: "netascii" and &lt;br&gt;
  "octet." Netascii mode is used for transferring text files, &lt;br&gt;
  while octet mode is used for transferring binary files.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Advantages of TFTP
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lightweight&lt;/strong&gt;: TFTP is designed to be lightweight, meaning &lt;br&gt;
it uses fewer system resources than other file transfer &lt;br&gt;
protocols such as network switches and &lt;br&gt;
routers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple&lt;/strong&gt;: TFTP has a simple packet format and supports only &lt;br&gt;
two transfer modes, making it easy to implement and use. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fast&lt;/strong&gt;: TFTP uses the User Datagram Protocol (UDP) instead &lt;br&gt;
of Transmission Control Protocol (TCP), which makes it &lt;br&gt;
faster than other protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy to configure&lt;/strong&gt;: TFTP is easy to configure and does not &lt;br&gt;
require complex setup or authentication. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Widely supported&lt;/strong&gt;: TFTP is widely supported by many network &lt;br&gt;
devices, including routers, switches, and firewalls. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Low overhead&lt;/strong&gt;: TFTP has a low overhead, meaning it uses &lt;br&gt;
minimal network bandwidth and system resources. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Disadvantages of TFTP
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No authentication&lt;/strong&gt;: TFTP does not provide any authentication mechanisms, which means that anyone who has access to the TFTP server can download or upload files to it. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Slow transfer speeds&lt;/strong&gt;: TFTP uses UDP (User Datagram Protocol), which does not provide any error-checking or congestion control mechanisms. This can lead to slower transfer speeds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limited file size&lt;/strong&gt;: TFTP has a maximum file size limit of 32 MB, which makes it unsuitable for transferring large files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No encryption&lt;/strong&gt;: TFTP does not provide any encryption mechanisms, which means that data transferred using TFTP can be intercepted and read by third parties. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;How can we configure TFTP server in Ubuntu?&lt;/strong&gt;
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Open the terminal and update the package lists for apt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Install the TFTP server software on the PC that will act as the server using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install tftpd-hpa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Check the status of the TFTP daemon service called "tftpd-hpa" on a Linux system&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl status tftpd-hpa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : Open and edit the configuration file for the TFTP daemon service called "tftpd-hpa" on a Linux system&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo gedit /etc/default/tftpd-hpa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt; : Make tftp Folder&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkdir /tftp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt; : Change the ownership of the directory "/tftp" to the user and group "tftp" on a Linux system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown tftp:tftp /tftp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt; : Restart the TFTP daemon service called "tftpd-hpa" on a Linux system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart tftpd-hpa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;How can we configure TFTP Client in Ubuntu?&lt;/strong&gt;
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install tftp-hpa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;If you got errrors run below commands&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

sudo kill -9 &amp;lt;process_id&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Server Command
&lt;/h2&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ip a show
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Client Command
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; : Start a TFTP client session with a TFTP server located at the specified IP address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo tftp &amp;lt;&amp;lt;server's ip_address&amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : Download a file called "server.txt" from a remote TFTP server to the local system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get server.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Server Command
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;Upload a file called "client.txt" from the local system to a remote TFTP server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;put client.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;Overall, TFTP is a simple and lightweight protocol that is suitable for transferring small files in a low-security environment. However, it may not be the best choice for transferring sensitive or large files, or for use in high-security environments where data privacy is a concern.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>protocol</category>
      <category>tftp</category>
    </item>
    <item>
      <title>Jenkins Setup On Digital- Ocean Cloud ( Run Jenkins as a Docker container )</title>
      <dc:creator>AyushDabhi</dc:creator>
      <pubDate>Sun, 26 Mar 2023 08:23:45 +0000</pubDate>
      <link>https://dev.to/ayushdabhi/jenkins-setup-on-digital-ocean-cloud-run-jenkins-as-a-docker-container--198m</link>
      <guid>https://dev.to/ayushdabhi/jenkins-setup-on-digital-ocean-cloud-run-jenkins-as-a-docker-container--198m</guid>
      <description>&lt;p&gt;Jenkins is an open-source automation server that can be used to automate various tasks like building, testing, and deploying software. &lt;/p&gt;

&lt;p&gt;DigitalOcean is a cloud hosting platform that provides a simple and cost-effective way to deploy and manage applications in the cloud. &lt;/p&gt;

&lt;p&gt;In this blog, we will discuss how to set up Jenkins on DigitalOcean cloud.&lt;/p&gt;

&lt;p&gt;To set up Jenkins on DigitalOcean, the first step is to create a Droplet. &lt;/p&gt;

&lt;p&gt;A Droplet is a virtual machine that can be used to host applications in the cloud. To create a Droplet, follow these steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a Droplet on DigitalOcean&lt;/p&gt;

&lt;p&gt;1) Log in to your DigitalOcean account. Click on the "Create" button and select "Droplets."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VNU0nX1d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5p1zajoib6lbdjpkqru5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VNU0nX1d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5p1zajoib6lbdjpkqru5.png" alt="Create a Droplet on DigitalOcean" width="880" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) Choose Region&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0puEBUbd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rfetidih7qc9m9qg6gnt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0puEBUbd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rfetidih7qc9m9qg6gnt.png" alt="Choose Region" width="880" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Choose an Image&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PPLgu7NG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4h4ptq4jbb4yd3kqx6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PPLgu7NG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4h4ptq4jbb4yd3kqx6r.png" alt="Choose an Image" width="880" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Choose size&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a31nEd7g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nswd5z2p1pdbb822yxfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a31nEd7g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nswd5z2p1pdbb822yxfy.png" alt="Choose size" width="880" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fQNbvM48--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5ki26g30my1fxckc1g1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fQNbvM48--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5ki26g30my1fxckc1g1.png" alt="Choose size" width="880" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) Choose Authentication Method&lt;/p&gt;

&lt;p&gt;i) Password&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zvUC98dW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1vjc5bhp1uq70bsab51g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zvUC98dW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1vjc5bhp1uq70bsab51g.png" alt="Choose Authentication Method Password " width="880" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii) SSH key (We are Using)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pHomqM9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgwfz58ru5ptvn2tccjn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pHomqM9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgwfz58ru5ptvn2tccjn.png" alt="Choose Authentication Method SSH key" width="880" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ulryu484--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h981hdkn65d594s9dg1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ulryu484--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h981hdkn65d594s9dg1z.png" alt="Choose Authentication Method SSH key" width="880" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6) Click on the &lt;strong&gt;Create Droplet&lt;/strong&gt; button to create your Droplet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m41XOurL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7iruoygj0gifj032s0s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m41XOurL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7iruoygj0gifj032s0s8.png" alt="Create Droplet" width="880" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rename droplet name : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C0LaEhho--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqa97xpzbjmjrzlat5dm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C0LaEhho--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqa97xpzbjmjrzlat5dm.png" alt="Rename droplet name " width="880" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7) Click on Networking and click on &lt;strong&gt;Create Firewall&lt;/strong&gt; button &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mQaPt5da--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uj976kgt49dndr9dh3hz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mQaPt5da--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uj976kgt49dndr9dh3hz.png" alt="Create Firewall" width="880" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inbound Rules :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uh6YUIu9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b87v1rxx4kigc3zy4zwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uh6YUIu9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b87v1rxx4kigc3zy4zwc.png" alt="Inbound Rules" width="880" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outbound Rules : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7p4S_skm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohbt4ecbdm4av0nmivda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7p4S_skm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohbt4ecbdm4av0nmivda.png" alt="Outbound Rules" width="880" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firewall Created :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rG9k4gal--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9yrnitz2bur0adcqlpq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rG9k4gal--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9yrnitz2bur0adcqlpq.png" alt="Firewall Created " width="880" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Install Docker on your Droplet&lt;/p&gt;

&lt;p&gt;1) SSH to your droplet &lt;/p&gt;

&lt;p&gt;Copy your droplet's IPV4 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--erGpsmLm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ljjlt2cqwn1vw91x7ft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--erGpsmLm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ljjlt2cqwn1vw91x7ft.png" alt="Copy your droplet's IPV4 " width="880" height="720"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;2) Update your package index by running the command:&lt;br&gt;
     &lt;code&gt;apt update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3) Install docker by running the command :&lt;br&gt;
     &lt;code&gt;apt install docker.io&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Install Jenkins on Docker container&lt;/p&gt;

&lt;p&gt;1) &lt;code&gt;docker run -p 8080:8080 -p 50000:50000 -d -v&lt;br&gt;
   jenkins_home:/var/jenkins_home jenkins/jenkins:lts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;code&gt;docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pphsS1A4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5cqz4pm30o9v5uf7e9k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pphsS1A4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5cqz4pm30o9v5uf7e9k.png" alt="docker ps" width="880" height="157"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;3) Access Jenkins on web-browser via typing&lt;br&gt;
   ip_address:jenkins_port&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3ViLQ84y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/okom9odra0l78ty5wy7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ViLQ84y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/okom9odra0l78ty5wy7f.png" alt="Access Jenkins on web-browser via typing ip_address:jenkins_port" width="880" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Getting Unlock Jenkins Password&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E-RlXT2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3y4yd7mh9p2e0m5ks15u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E-RlXT2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3y4yd7mh9p2e0m5ks15u.png" alt="Getting Unlock Jenkins Password" width="880" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) Install Suggested Plugins&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yz9em1EJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ihpbs07u4mda2o7gzoio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yz9em1EJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ihpbs07u4mda2o7gzoio.png" alt="Install Suggested Plugins" width="880" height="709"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1rfnZZnd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prtqmtxkxm63pyzyvtck.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1rfnZZnd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prtqmtxkxm63pyzyvtck.png" alt="Install Suggested Plugins" width="880" height="708"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6) Create First Admin User&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j7VAS2S4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kgun3oa01b0ytdg9lz4u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j7VAS2S4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kgun3oa01b0ytdg9lz4u.png" alt="Create First Admin User" width="880" height="710"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations🥳&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NuLwlDsH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvwvcgeynoqcqq7b1r9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NuLwlDsH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvwvcgeynoqcqq7b1r9y.png" alt="Congratulations" width="880" height="709"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow me! &lt;a class="mentioned-user" href="https://dev.to/ayushdabhi"&gt;@ayushdabhi&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;#jenkins #devops #cloud #digitalocean&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>devops</category>
      <category>cloudskills</category>
    </item>
  </channel>
</rss>
