Building a Custom Image Using Podman

45 minutes
  • 3 Learning Objectives

About this Hands-on Lab

For this lab, we will be creating a Dockerfile that will start a web server using a custom configuration file copied from the host system. The web server will listen on a non-standard port. Upon completion, you will have a working understanding of Dockerfiles and how to build a custom image from them.

*This lab is not approved or sponsored by Red Hat.*

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Set Up a New Build Directory

Create a new build directory. Then, copy the Dockerfile, along with any .zip and .tar files, from /home/cloud_user and add them to the build directory.

Complete the Dockerfile

Complete the Dockerfile. The following should be completed in the Dockerfile:

  • Start with the image registry.access.redhat.com/ubi8/ubi:8.4.
  • Set yourself as the maintainer and provide a description using LABEL.
  • Install nginx and unzip packages into the image.
  • Set a variable named PORT to a value of 90.
  • Use the variable PORT to expose port 90 in the image.
  • Import the file nginx.zip to /tmp.
  • Unzip the nginx.zip file to /etc/nginx.
  • Import and extract the file llama_cart.tar to /usr/share/nginx/html/.
  • Import the file llama_cart.tar to the working directory /tar_file without uncompressing it.
  • Set the container to start nginx with options "-g" and "daemon off;". Make "-g" and "daemon off;" overwritable by Podman run arguments.

Note: The draft Dockerfile also contains these notes presented as comments.

Build and Test the New Image
  • Build the new container image with the following information:

    • Name the image llama-cart.
    • Tag the image v1.
  • Start a new container named llama-cart and expose port 90 in the container to port 8090 on the localhost.

  • Verify the website is available on port 8090 of the system using a web browser.

Additional Resources

In this lab scenario, you have been approached by the sales team that needs your help. They are making a pitch to a prospective client on how great containers are, and would like to show them how easily a container for their upcoming llama-cart-racing website can be set up. What they would like you to do is create a new image from a Dockerfile, and then run a container using the new image. They have requested the new image be based off of Red Hat Universal Base Image 8 with the tag 8.4, and named llama-cart and tagged v1.

A draft Dockerfile with some instructions has been left on the system for you to use. Along with this, they have also provided a custom Nginx configuration zip file they would like you to use. That configuration will set Nginx to run on port 90.

The content for the test website is also provided in a tar file. This file should be uncompressed in the image, and a compressed copy should be kept inside the image, as well.

For the test demo, start a container called llama-cart based off this new image, and expose container port 90 to host port 8090. Test that the new container and website are available in a browser.

Good luck in helping the sales team win the deal with the prospective client.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?