hands-on lab

Software Development, Testing, and Delivery with Docker

Up to 2h
Get guided in a real environmentPractice with a step-by-step scenario in a real, provisioned environment.
Learn and validateUse validations to check your solutions every step of the way.
See resultsTrack your knowledge and monitor your progress.


Docker has propelled containers to the forefront of software development and delivery. In this Lab, you will learn how to take an existing application and containerize and connect its tiers using Dockerfiles, user-defined networks, and the Docker Compose tool. You will also see how you can use Docker to simplify your software processes at each of the development, test, and delivery phases. The Lab environment simulates a real-world scenario with separate development, test, and production servers. You will create your own Docker Registry to manage different versions of the application and share the container images across environments. You will also take a software update from development, through test, to production deployment using Docker.

Lab Objectives

Upon completion of this lab you will be able to:

  • Containerize an existing application
  • Connect containers using user-defined networks
  • Use Docker Compose to create multi-container environments
  • Set up a private Docker Registry
  • Develop, test, and deliver containerized software
  • Release updates to production with containers

Lab Prerequisites

You should be familiar with the following:

  • Docker containers, images, and registries
  • Working at the command line in Linux
  • Connecting to virtual machines using SSH

The Getting Started with Docker on Linux Lab is a good way to fulfill the prerequisites.

Lab Environment

Before completing the lab instructions, the environment will look as follows:

After completing the lab instructions, the environment should look similar to:


November 16th, 2023 - Updated outdated password instructions

November 9th, 2023 - Resolved Node.js script issue

February 24th, 2023 - Removed instruction to stop viewing Docker Compose logs (no longer required) 

April 1st, 2022 - Updated the source code for v1.1 of the application to resolve an issue causing the Docker image to fail to build in the final lab step

October 8th, 2021 - Updated Node.js version and instructions to reflect the latest portal experience

August 11th, 2021 - Resolved an issue causing the startup deployment to fail

February 25th, 2021 - Resolved an issue causing the startup deployment to fail

April 29, 2020 - Added a validation check function to validate the work done in the lab.

July 9th, 2018 - Updated to use newer versions of Docker and Docker Compose. Also upgraded VMs to SSD SKUs.

About the author

Logan Rakai, opens in a new tab
Lead Content Developer - Labs
Learning paths

Logan has been involved in software development and research since 2007 and has been in the cloud since 2012. He is an AWS Certified DevOps Engineer - Professional, AWS Certified Solutions Architect - Professional, Microsoft Certified Azure Solutions Architect Expert, MCSE: Cloud Platform and Infrastructure, Google Cloud Certified Associate Cloud Engineer, Certified Kubernetes Security Specialist (CKS), Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD), and Certified OpenStack Administrator (COA). He earned his Ph.D. studying design automation and enjoys all things tech.

LinkedIn, Twitter, GitHub

Covered topics

Lab steps

Logging in to the Microsoft Azure Portal
Connecting to the Lab Provisioned Azure Virtual Machine
Getting to Know the Application
Containerizing the Application
Creating Your Own Docker Registry
Composing Multi-Container Environments
Composing the Production Environment
Developing and Releasing an Update to Production