Handcrafting a Container Image

45 minutes
  • 5 Learning Objectives

About this Hands-on Lab

If you run your website from a pre-built base image, it will require a manual process to set up the container each time it runs. For repeatability and scalability, the container, and your website code should be made into an image. In this lab, you will start with a base webserver image, modify settings in the container for your website, and then create images from the container. You’ll demonstrate the importance of small changes to your container, and how they affect your image. Lastly, you will use your new images to create containers to see your hard work in action.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Get and Run the Base Image
  1. Retrieve the httpd 2.4 image from Docker hub.
  2. Start a container from the httpd image.
Install Tools and Code in the Container
  1. Log in to the container.
  2. Update the base image and install git.
  3. Get website code from GitHub.
  4. Remove the default index page and copy the website files to httpd‘s web serving directory.
  5. Log out of the container.
Create an Image from the Container
  1. Find the template container’s ID.
  2. Create an image named widgetfactory with version v1 from the container.
     1. View the image information.

    Note: You can use the container’s name in place of its ID for docker commit. However, we will practice using the container ID in this lab.

Clean up the Template for a Second Version
  1. Log in to the container.
  2. Remove temporary files and installed utilities.
  3. Log out of the container.
  4. Find the template container’s ID.
  5. Create a new image named widgetfactory with version v2 from the container
  6. View the image information.
  7. Delete the v1 image since it is obsolete.
Run Multiple Containers from the Image
  1. Start three containers from the widgetfactory:v2 image with different published web ports. The exposed ports should be in the 8000 to 8999 range.
  2. View the running containers in Docker.
  3. View the website from each container in a browser, using the three exposed web ports.

Additional Resources


Creating a container image by hand allows you to quickly make and test images using Linux commands you already know. It will allow you to automate part of the process of creating a purpose-built container from an existing image. This technique is also useful for troubleshooting problems in existing containers. You will be able to save the state of an existing container as an image, similar to a Virtual Machine snapshot, then run containers from that image to debug your problem. Debugging is not covered in this lab, but it is an important use of the techniques you are learning.

Logging in to the lab environment

Use the provided username and password to SSH into the server at the public IP.

ssh username@public_IP                                                                                        

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?