<?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: Isaac Arogbonlo</title>
    <description>The latest articles on DEV Community by Isaac Arogbonlo (@arogbonlo).</description>
    <link>https://dev.to/arogbonlo</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%2F1070946%2Fbbca4b10-3079-4554-9363-b90eb8643d4d.jpeg</url>
      <title>DEV Community: Isaac Arogbonlo</title>
      <link>https://dev.to/arogbonlo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arogbonlo"/>
    <language>en</language>
    <item>
      <title>The Role of Continuous Testing in Building High-Quality Software.</title>
      <dc:creator>Isaac Arogbonlo</dc:creator>
      <pubDate>Wed, 24 May 2023 10:20:06 +0000</pubDate>
      <link>https://dev.to/arogbonlo/the-role-of-continuous-testing-in-building-high-quality-software-57pc</link>
      <guid>https://dev.to/arogbonlo/the-role-of-continuous-testing-in-building-high-quality-software-57pc</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7pZK1huF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i8pm29ps3z1lpzslh0j7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7pZK1huF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i8pm29ps3z1lpzslh0j7.png" alt="" width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
Photo from — &lt;a href="https://www.globalapptesting.com/blog/what-is-continuous-testing"&gt;Synopsis.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The role of continuous testing in the delivery of high-quality software can never be emphasized, however, it is important that we understand the rudimentary nuggets of the concepts we are about to explore. For starters, software testing analyzes and verifies that a software product or program accomplishes its intended work. Some advantages include bug prevention, reduced development costs, and improved performance.&lt;/p&gt;

&lt;p&gt;Furthermore, you should know that continuous testing is an integral part of software testing. It involves testing software continuously and automatically throughout its development and maintenance lifespan. It is critical for ensuring software quality, decreasing errors, shortening time to market, and increasing customer satisfaction. It’s an essential technique for software development, allowing firms to provide high-quality software that satisfies user expectations, minimizes costs, and retains a competitive advantage. Let us dive deeper. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Continuous Testing?
&lt;/h2&gt;

&lt;p&gt;Over the years, software development has changed at a rapid pace. What is the catalyst for this evolution? Advanced software ensures quick and efficient service, utilizing Agile and DevOps to satisfy customers. The development period is shortened from weeks to months to days and hours, and automated testing progressively replaces manual testing techniques.&lt;/p&gt;

&lt;p&gt;Continuous testing is a technique that involves continually and automatically testing software throughout its development and maintenance lifespan. It is a sequential process incorporating testing operations into the software development pipeline, allowing for the early discovery and correction of errors and difficulties. It is also commonly used in Agile and DevOps approaches, emphasizing iterative and collaborative software development with rapid releases and ongoing feedback loops. Its goal is to offer immediate and precise feedback on the quality and dependability of the program under development, allowing for faster releases and guaranteeing that the product satisfies the specified quality requirements.&lt;/p&gt;

&lt;p&gt;Depending on the needs of the software being produced, it may entail using various testing techniques such as automated testing, unit testing, integration testing, performance testing, security testing, and other forms of testing. These tests are frequently automated and run in the background as part of the development pipeline, employing tools and frameworks that facilitate automated testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Continuous Testing
&lt;/h2&gt;

&lt;p&gt;Because the testing process begins in the early phases of development and continues indefinitely, application hazards are discovered early on. In this manner, development teams may avoid these difficulties as they advance through the development cycle, reducing the time and effort spent at the end of the process finding and fixing errors. Continuous testing is becoming increasingly popular, and it makes sense to use it since it can improve the efficiency of existing approaches. Here are some of its main benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testing Throughout the Pipeline&lt;/strong&gt;: Testing Throughout the Pipeline (TTTP) is a software testing strategy that entails testing at every stage of the software development process, from design through deployment. It highlights the significance of regular and early testing to discover problems as early as possible, decrease expenses, and improve software quality. Continuous testing is a process that involves running automated tests continually throughout the software development pipeline to offer feedback on the program’s quality. This method enables developers to detect and correct flaws before they become more complex and costly. Developers may spot flaws early in the pipeline and address them before they become more complex and expensive to solve. This strategy can lower total software development costs and improve software quality.&lt;br&gt;
Furthermore, testing throughout the pipeline aids in detecting flaws that traditional testing methods may miss. For example, tests performed during the design process can assist in detecting problems in the software architecture, but tests performed during the deployment phase can assist in detecting defects that only occur in production situations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Collaboration&lt;/strong&gt;: Continuous testing guarantees everyone in the software development process is aware of the current status of the product, including flaws or issues discovered during testing. Improved cooperation can assist in identifying and resolving difficulties early in the development process, lowering the chance of serious problems later.&lt;br&gt;
Effective collaboration is critical in software development and testing; continuous testing may aid this process in various ways. They include early problem identification and resolution, greater transparency throughout the software development process, consistent and dependable testing, less manual work, increased efficiency, and improved developer-tester communication and collaboration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Discrepancy issues&lt;/strong&gt;: When test automation scripts are performed in multiple environments, discrepancies might occur due to setup changes such as operating systems, browsers, and software versions. These discrepancies can lead to test failures, slowing development and raising expenses. Continuous Testing eliminates differences by providing the same parameters for all test automation scripts. This guarantees that tests are executed consistently across all environments. This uniformity also reduces the possibility of human mistakes. When testers are obliged to configure test environments manually, they are more likely to make mistakes. Continuous testing removes the need for manual configuration and decreases the risk of human errors by providing the same structures for all test automation scripts.&lt;br&gt;
Furthermore, by providing the same parameters for every test automation script, continuous testing helps to increase testing process efficiency. Without spending time creating multiple environments, testers can perform tests more quickly. This can assist in accelerating the development process, allowing for faster software delivery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Immediate Feedback&lt;/strong&gt;: Continuous testing relies heavily on direct feedback. It refers to the continuous and timely examination of software quality throughout development, allowing developers to detect and fix any faults or errors swiftly.&lt;br&gt;
Continuous testing requires immediate feedback since it helps detect faults early in development, making resolving them more straightforward and less expensive. It helps to minimize the time and expense of resolving problems while improving the overall quality of the product. Rapid feedback allows developers to iterate quickly and make required code modifications, resulting in a shorter time-to-market for the software product. &lt;strong&gt;This can provide businesses with a competitive advantage in the marketplace.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Continuous Testing Process and Phases
&lt;/h2&gt;

&lt;p&gt;Continuous testing is a strategy that reiterates testing promptly, constantly, and throughout the software development lifecycle. The continuous testing process is divided into several phases, which are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Planning&lt;/strong&gt;: This phase defines the testing strategy and objectives, as well as the tools and frameworks to be used. The testing team also works with the development team to ensure the program meets the specifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Design&lt;/strong&gt;: Test cases and situations are created according to the requirements and design standards during this phase. The test cases should include all potential scenarios and exceptions to guarantee complete testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Execution&lt;/strong&gt;: In this step, the tests are executed on the program, and the results are collected. Continuous automated tests are conducted, and manual tests are run as needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Reporting&lt;/strong&gt;: The test results are examined in this phase, and reports are prepared. These reports assist in identifying any faults that need to be fixed and provide input on the software’s quality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Maintenance&lt;/strong&gt;: During this phase, the test cases and scenarios are updated and maintained to stay current and realistic. As the program evolves, the tests must evolve as well.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Continuous testing is a constant cycle throughout software development, from planning to test maintenance. Issues may be found early and fixed quickly by continually testing the program, resulting in higher-quality software and a shorter time-to-market.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Continuous Testing is Important in Building High-Quality Software
&lt;/h2&gt;

&lt;p&gt;Continuous testing is critical to producing high-quality software because it allows software teams to notice and fix errors early in the process. By regularly testing, teams may detect bugs, performance difficulties, and other faults in software. This reduces the time and costs involved with problem resolution, promotes communication among team members, and boosts trust in the software’s quality. Continuous testing ensures that software is dependable, scalable, and satisfies the demands of its users, which leads to happier consumers and improved user experience.&lt;/p&gt;

&lt;p&gt;Most modern software development firms fantasize about frequent deployments. However, many organizations still need to decrease their development cycles. The most significant constraint in the software development lifecycle is still &lt;strong&gt;testing&lt;/strong&gt;. Teams need to conduct various tests, automated and human, throughout the delivery process for effective continuous delivery and quality. Implementing continuous testing is easier if difficulties are answered. Let’s talk about the biggest obstacles in continuous testing and how to deal with them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Faced by Software Development Teams
&lt;/h2&gt;

&lt;p&gt;When adopting continuous testing, software development teams confront several problems. Automation, test coverage, integration, test data, time limits, and skills are required to address these issues.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt;: Automating the process is one of the most challenging aspects of continuous testing. Creating automated test cases and integrating them into the continuous testing pipeline takes time, effort, and talent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Coverage&lt;/strong&gt;: Guaranteeing that all software features are adequately tested may be difficult, especially when the product is complex. A well-constructed testing strategy and successful communication between developers and testers are required to maintain high test coverage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration with DevOps&lt;/strong&gt;: Including testing tools in software development can be difficult, especially when several devices and systems are involved. Ensuring the tools are correctly set up and integrated might take time and technical knowledge.&lt;br&gt;
To be effective, continuous testing must be linked with DevOps principles. For DevOps to succeed, continuous testing must be included in the development process. This might be difficult for software development teams not used to working in Agile or DevOps settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Data&lt;/strong&gt;: When dealing with big and complicated datasets, creating &lt;strong&gt;realistic test data&lt;/strong&gt; that covers all potential circumstances may be challenging.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time Constraints&lt;/strong&gt;: Continuous testing requires substantial time and resources, which can be difficult for software development teams working under tight constraints. It might be challenging to balance the requirement for rigorous testing and the necessity to deliver software fast.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Skillset&lt;/strong&gt;: Regular testing necessitates a substantial investment in automating the environment. Hiring qualified profiles or training current employees can be expensive and time-consuming.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solutions to Integrate Continuous Testing
&lt;/h2&gt;

&lt;p&gt;Continuous testing demands considerable investment in automation environments. If the tests are automated, they may be run rapidly and frequently, minimizing testing time. This contributes to the difficulty of test automation by making testing more efficient and effective. It can also assist in tackling the test environment problem by offering a fast way to establish and distribute test environments. &lt;/p&gt;

&lt;p&gt;Continuous testing allows testing to occur in many settings simultaneously, guaranteeing that the software is entirely and adequately tested. Continuous testing can help the difficulty of test data management by offering a practical framework for managing test data. Continuous testing guarantees that test data is constantly updated and relevant by automating test data creation. &lt;/p&gt;

&lt;p&gt;Continuous testing requires a specific skill set, but software development teams can acquire the essential abilities in-house by offering training and tools. Software development teams can ensure testing is done successfully and efficiently by assembling a team with the relevant expertise. This results in &lt;strong&gt;higher-quality software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Finally, it's important to include continuous testing in the development process as a vital DevOps component. Software development teams may guarantee that testing is done constantly throughout the development process by including continuous testing in the DevOps process. This results in higher-quality software and a faster time-to-market.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Several businesses have improved their software quality through continuous testing&lt;/strong&gt;. Here are a few examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Netflix&lt;/strong&gt;: To evaluate the robustness of its systems, Netflix employs the “&lt;strong&gt;Simian Army&lt;/strong&gt;” continuous testing architecture. Simian Army entails inserting flaws into the system to see how it reacts. Netflix has discovered and resolved errors before they become severe using &lt;strong&gt;continuous testing&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Slack&lt;/strong&gt;: Slack relies on a continuous testing structure called “&lt;strong&gt;Slackbot&lt;/strong&gt;” to ensure the quality of its chat platform. Slackbot is a chatbot that inspects the Slack platform for problems and notifies developers when issues are discovered. Continuous testing has resulted in increased software quality and a better user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Airbnb&lt;/strong&gt;: Airbnb utilizes a continuous testing technique known as “&lt;strong&gt;Continuous Deployment&lt;/strong&gt;” to ensure the high quality of its website and mobile applications. Any code changes made by developers are automatically pushed to the production environment and tested using a set of automated tests with Continuous Deployment. This enables Airbnb to discover and resolve issues early in the development process, resulting in a shorter time-to-market and higher software quality.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;The future of continuous testing in software development seems bright. As the software development business evolves, there is an increasing demand for high-quality software solutions that can be supplied &lt;strong&gt;swiftly&lt;/strong&gt; and &lt;strong&gt;consistently&lt;/strong&gt;. Continuous testing is a crucial facilitator of this transition since it helps software development teams find and fix errors early in the development process, decreasing time-to-market and enhancing end-product quality.&lt;/p&gt;

&lt;p&gt;More complex and sophisticated continuous testing tools and frameworks, such as AI-powered testing and self-healing systems that can automatically discover and resolve faults, are expected to be created. More communication between software development teams, operations teams, and business analysts is also expected to guarantee that software solutions fulfill the demands of consumers and stakeholders.&lt;/p&gt;

&lt;p&gt;Furthermore, security and compliance testing will most certainly be emphasized as software products grow more complicated and linked. Continuous testing will ensure that software products are safe, compliant, and capable of meeting the demands of an ever-changing technological world.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Differences Between a DockerFile, Docker Image, and Docker Container</title>
      <dc:creator>Isaac Arogbonlo</dc:creator>
      <pubDate>Mon, 24 Apr 2023 17:27:08 +0000</pubDate>
      <link>https://dev.to/arogbonlo/differences-between-a-dockerfile-docker-image-and-docker-container-4l30</link>
      <guid>https://dev.to/arogbonlo/differences-between-a-dockerfile-docker-image-and-docker-container-4l30</guid>
      <description>&lt;p&gt;It could be difficult to comprehend all the terms if you are new to Docker. Many Docker terminology can signify various things to different people, and they are occasionally used in diverse contexts. For instance, you could be curious about the differences between a Docker image and a Docker container, much like other people who are learning about Docker. They differ in a modest but important way.&lt;/p&gt;

&lt;p&gt;The differences between Docker images and containers, and docker files will be covered in this article, which will also explain how and when to utilize each.&lt;/p&gt;

&lt;p&gt;In most multinational corporations, the Docker tool is an essential component of the configuration management tool. With a Dockerfile, the Docker tool executes an application securely and at an advanced abstraction level. To achieve high system availability, reliability of the system, and service delivery with increased reliability, many businesses are widely embracing the technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Docker image, Docker container, and Dockerfile give Docker its widespread use. However, only Dockerfiles can be used to create Docker images. Let’s learn more about Docker and Dockerfile as we move forward.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of Docker
&lt;/h2&gt;

&lt;p&gt;Using containers, the Docker containerization platform makes it simple to design, deploy, and operate programs. Consider a container to be a software shipping container; it carries critical stuff such as files and programs so that an application may be transported quickly from manufacturer to consumer. One of the key advantages of containerization is that it allows developers to bundle their programs with all of the dependencies required to function on any Linux distribution. This eliminates the need to install each requirement manually.&lt;/p&gt;

&lt;p&gt;Several containers, each based on the same or distinct images, can run concurrently. Docker, which produces numerous instances of an operating system, is comparable to virtual machines. Docker, on the other hand, allows you to construct containers that operate on the same operating system. As a result, a given hardware configuration may support more containers than virtual machines.&lt;/p&gt;

&lt;p&gt;Docker containers may run within virtual machines as well. Docker adds an extra layer of abstraction and automation to virtual machine creation, making it easier to utilize.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Dockerfile?
&lt;/h2&gt;

&lt;p&gt;It is a straightforward text file containing a collection of commands or procedures. These commands and guidelines we run act on the base image configured to create a new Docker image. A Dockerfile is the Docker image’s source code. A Dockerfile is a text file containing various instructions and configurations. The FROM command in a Dockerfile identifies the base image from which you are constructing.&lt;/p&gt;

&lt;p&gt;When you run the Docker run command, Docker uses this file to build the image itself. The Dockerfile includes the image’s creation instructions. The benefit of utilizing a Dockerfile over merely keeping the binary image is that automated builds guarantee you always have the most up-to-date version. This is advantageous in terms of security, as you do not want to install any insecure applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples of Docker Commands for Creating a Dockerfile.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we write our first Dockerfile, we must first grasp what the file contains.&lt;/p&gt;

&lt;p&gt;Dockerfiles are collections of instructions that instruct you on creating a specific Docker image.&lt;/p&gt;

&lt;p&gt;The following commands can be used in a Dockerfile:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FROM&lt;/strong&gt;, &lt;strong&gt;PULL&lt;/strong&gt;, &lt;strong&gt;RUN&lt;/strong&gt;, and &lt;strong&gt;CMD&lt;/strong&gt; are all commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FROM&lt;/strong&gt;: Generates a layer based on Ubuntu 18.04.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull&lt;/strong&gt;: This command adds files from your Docker repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RUN&lt;/strong&gt;: Constructs your container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CMD&lt;/strong&gt;: specifies which command should be executed within the container.&lt;/p&gt;

&lt;p&gt;A sample Dockerfile containing the necessary commands is shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**FROM** 18.04 ubuntu

**PULL** /file

**RUN**: make / file command.CMD: python /file/file.py

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

&lt;/div&gt;



&lt;p&gt;You will also find &lt;strong&gt;&lt;a href="https://spacelift.io/blog/dockerfile"&gt;this&lt;/a&gt;&lt;/strong&gt; insightful. This post explains Dockerfiles, how to make one, and some recommended practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Image
&lt;/h2&gt;

&lt;p&gt;Images are read-only blueprints that include container-creation instructions. A Docker image is a container created to operate on the Docker framework. Consider an image a blueprint or picture of what will be in a container when it is operational.&lt;/p&gt;

&lt;p&gt;An image is made up of numerous stacks, similar to the layers in a photo editor, each of which changes something in the surroundings. Images include the application’s code, or binary, runtimes, libraries, and other filesystem items. The Docker image is dependent core host operating system (OS). To develop a web server image, for example, begin with an image that includes Ubuntu Linux (a base OS). Then, on top of that, install Apache and PHP.&lt;/p&gt;

&lt;p&gt;You may manually generate images with a Dockerfile, which is a text document that contains all of the instructions needed to produce a Docker image. You can also use the command docker pull [name] to grab images from a central repository known as a registry or from repositories such as Docker Hub.&lt;/p&gt;

&lt;p&gt;When a Docker user executes an image, it creates one or more container instances. The container’s operating point can be whatever the developer desires; it might have a web server installed and configured, or it could just execute a bash shell as root. However, in fact, most images contain some preloaded software and configuration files.&lt;/p&gt;

&lt;p&gt;Docker images are irrevocable, which means they cannot be changed once they are produced. If you need to alter something, make a new container with your modifications and save it as another image.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Build a Docker Image
&lt;/h2&gt;

&lt;p&gt;Docker images may be generated &lt;strong&gt;interactively&lt;/strong&gt; or using a &lt;strong&gt;Dockerfile&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Method of Interaction&lt;/strong&gt;:&lt;br&gt;
Users use this approach to launch a container from a functioning Docker image and make any necessary modifications to the environment before storing the image. The interactive technique is the most efficient and straightforward way to construct Docker images. The first step is to run Docker and open a terminal window. Then start Docker using the image name:&lt;strong&gt;tag name&lt;/strong&gt; command. This starts a shell session with the container started by the image. Docker utilizes the most current version of the image if the tag name is not specified. Following that, the image should appear in the results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dockerfile Method&lt;/strong&gt;:&lt;br&gt;
This technique necessitates the creation of a text Dockerfile. The Dockerfile includes the commands used to create an image. This approach is more difficult and time-consuming, but somehow it performs better in contexts with continuous delivery. The procedure entails generating the Dockerfile and adding the image’s commands. Once the Dockerfile is started, the user creates &lt;strong&gt;a.dockerignore&lt;/strong&gt; file to eliminate any files that are not required for the final build. There is a docker-ignore file in the root directory. The Docker build command is then used to generate a Docker image, after which an image name and tag are assigned.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Docker Image with Dockerfile
&lt;/h2&gt;

&lt;p&gt;Let’s start by specifying the location of the dockerfile &lt;strong&gt;simplidocker&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;docker build [OPTIONS] PATH | URL | -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let’s create a simple image with a Dockerfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker build [location of your Dockerfile]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The new picture may now be labeled with a name by adding the -t flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t simpli image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the Docker image has been built, you may validate it by running 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;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result should show that &lt;strong&gt;simpli_docker&lt;/strong&gt; is available in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Container
&lt;/h2&gt;

&lt;p&gt;Containers are compact, virtualized runtime environments used to run applications. Each container is a software package including all of the configuration files, dependencies, system tools, libraries, and source code required to run a certain application. They are distinct from the host and any other instances running on the host. Although they differ, virtual machines and containers are fairly equivalent.&lt;/p&gt;

&lt;p&gt;When a Docker image is executed, it creates an isolated, secure repository. A Docker container may be started, stopped, operated, and deleted.&lt;/p&gt;

&lt;p&gt;It is a Docker image instance. The same Docker image may be used to build an unlimited number of Docker containers. The Docker container is where your production application, such as a database or any of your resources, will run. The Docker image is a collection of files that constitute a tiny component of the operating system necessary to execute the Docker container as a standalone unit on any host.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Dockerfile to Create a Docker Image and Docker Container
&lt;/h2&gt;

&lt;p&gt;First and foremost, you should create a directory in which to save all of the Docker images you generate.&lt;/p&gt;

&lt;p&gt;With the following command, we will create a directory called “Simplidocker.”&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir simplidocker

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

&lt;/div&gt;



&lt;p&gt;Place the Docker image in that directory, and then create a new empty file (Dockerfile) in it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the editor to open the file. In this example, we used vi to open the file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vi Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, include the following information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM ubuntu

MAINTAINER simpli

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

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt; should be run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CMD [“echo”, “Welcome to Simplidocker”]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Save and close the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;This is how your process will appear.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t8I8nl8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/osotzux85i03kjp5ramw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t8I8nl8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/osotzux85i03kjp5ramw.jpeg" alt="IMAGE FROM JFROG" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Make a Dockerfile and include the instructions for creating your Docker image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the docker build command to build your docker image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the docker run command to create containers now that the docker image is ready to use.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using containers and images, users may specify application dependencies and configurations, as well as everything necessary for a machine to run that program. The life cycles of containers and pictures, however, are not the same.&lt;/p&gt;

&lt;p&gt;In this blog, you were able to understand the differences between a Docker image, Docker Container, and a Dockerfile.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>dockerfile</category>
      <category>dockerimage</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Jenkins in Docker: Docker running inside a Jenkins Container.</title>
      <dc:creator>Isaac Arogbonlo</dc:creator>
      <pubDate>Mon, 24 Apr 2023 16:43:44 +0000</pubDate>
      <link>https://dev.to/arogbonlo/jenkins-in-docker-docker-running-inside-a-jenkins-container-4l9f</link>
      <guid>https://dev.to/arogbonlo/jenkins-in-docker-docker-running-inside-a-jenkins-container-4l9f</guid>
      <description>&lt;p&gt;Jenkins is a well-known continuous integration and delivery (CI/CD) platform. Jenkins is open-source and has a robust reference implementation that preserves its present software and produces plugins to improve its capability.&lt;/p&gt;

&lt;p&gt;Amidst good community assistance, you may find difficulties with Jenkins, such as configuration file incompatibilities, which you may eliminate by running Jenkins in a container platform such as Docker. Running Jenkins with Docker, on the other hand, introduces a new issue if you intend to dockerize apps with Jenkins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This article will walk you through initiating Jenkins in Docker and allowing the Jenkins container to enable Docker to operate (build, run, and push images).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please keep in mind that this hands-on is done on an Ubuntu computer. To advance, you must be somewhat familiar with Docker.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To begin, we will install Jenkins on our local PC but containerize it with Docker. If you may recollect, one of the merits of Jenkins is its platform neutrality, implying it can operate on any platform such as macOS, Linux, or Windows, and yet behave identically across platforms. Let’s get started straight now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Docker has to be installed on your host system (this machine is a Linux machine). If you want to join along, simply click (&lt;a href="https://docs.docker.com/engine/install/"&gt;https://docs.docker.com/engine/install/&lt;/a&gt;) to install Docker on your local PC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now we’ll launch Docker and expose port &lt;code&gt;8080&lt;/code&gt; from the container, as well as bind it to port &lt;code&gt;8080&lt;/code&gt; on our host system, so we can view Jenkins from this Docker container. We’ll establish another port, &lt;code&gt;50000&lt;/code&gt;, and link it to the host computer; this will be the communication channel between the Jenkins master and worker nodes. We will also run the Docker container in “isolated” mode so that it may function as a daemon. Finally, we would mount disks holding Jenkins tasks, plugins, and other files.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let’s execute the following instructions on our local machine:&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 -p 8080:8080 -p 50000:50000 -d -v /var/run/docker.sock:/var/run/docker.sock -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
Now, let’s start an interactive shell on the newly formed Jenkins container so that we may install Docker inside of it. To do this, we execute the following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it — user root &amp;lt;container id&amp;gt; bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
Simply execute the following command once inside the Jenkins container to install Docker:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl https://get.docker.com/ &amp;gt; dockerinstall &amp;amp;&amp;amp; chmod 777 dockerinstall &amp;amp;&amp;amp; ./dockerinstall
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above command downloads and executes the Docker rapid installation script from &lt;a href="https://get.docker.com/"&gt;https://get.docker.com/&lt;/a&gt;, which further installs Docker within the container.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Exit the Jenkins container interactive shell and execute the following command to alter the permissions on “docker.sock” for increased security.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod 666 /var/run/docker.sock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker has now been installed within the Jenkins container!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Now, open our browser and connect to Jenkins at localhost: &lt;code&gt;8080&lt;/code&gt;.As you can see in your browser, Jenkins wants to be unlocked using the password saved in the provided directory. Let’s access Jenkins by importing the password from the provided directory. We do this by using the following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it &amp;lt;container id&amp;gt; bash
cat var/jenkins_home/secrets/initialAdminPassword
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The password would be shown on your terminal as something like &lt;code&gt;fce7b34895cf4ba0860f8d2c8fe8487a&lt;/code&gt;. Simply copy the password and paste it into the appropriate field.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Simply choose “Install suggested plugins” now that you’ve been taken to the “Getting Started” page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You must now wait anxiously for each plugin to be installed. &lt;br&gt;
You’ve been sent to the page where you may create your user profile. Enter the necessary information.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Now that you’ve successfully installed Docker within a Jenkins container, you may complete the task at hand that needs Docker.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for the audience!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please drop a few claps and leave a comment if you have any thoughts on the subject — I am always eager to learn and improve!&lt;br&gt;
Cheers!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>jenkins</category>
      <category>containers</category>
    </item>
  </channel>
</rss>
