Working with Docker Volumes

1 hour
  • 4 Learning Objectives

About this Hands-on Lab

In this Live Environment, you are working on a personal project for a friend who wants to host a website. You have a server running Docker and figure this would be a good use case to containerize the small HTML website. Create a Dockerfile that will use Nginx as the base image and set up two volumes: one volume for the HTML files and the second for logs. Then run the container using the image built from the Dockerfile.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a Dockerfile
  1. Create a Dockerfile.
  2. Enter the nginx information into the file.
  3. Build the image.
Create a volume for the HTML files

The following command should be run:

docker volume create nginx-code

This creates a directory on the lab server: /var/lib/docker/volumes/nginx-code/_data

Create a volume for Nginx logs

The following command should be run:

docker volume create nginx-logs

This creates a directory on the lab server: /var/lib/docker/volumes/nginx-logs/_data

Create a Docker Container

This is the command that should be run:

docker run -d --name=nextgen-dev -p 80:80 --mount source=nginx-code,target=/usr/share/nginx/html --mount source=nginx-logs,target=/var/log/nginx la/static-site:latest

Use docker ps to show the container.

Sample output:

924807c17f6f        la/static-site:latest   "nginx -g 'daemon of…"   28 minutes ago      Up 28 minutes       0.0.0.0:80->80/tcp   static-site 

Additional Resources

The Dockerfile

  1. In the root directory create a Dockerfile that uses nginx as the default image.
  2. Create a volume for /usr/share/nginx/html and set it as the working directory.
  3. Create another volume for /var/log/nginx. When building the image tag it as la/nextgen:latest.

The Volumes

  1. Create a volume called nginx-code.
  2. Create a second volume called nginx-logs.

Create the Container

  1. Create a container called next nextgen-dev.
  2. It should be detached.
  3. Use mount to map nginx-code to /usr/share/nginx/html on the container.
  4. Use mount to map nginx-logs to /var/log/nginx on the container.
  5. Map port 80 to port 80 on the container.
  6. Use the la/nextgen:latest image.
  7. Verify that nginx is running and the default web sites pull up.

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?