Storing Container Data in Google Cloud Storage

45 minutes
  • 3 Learning Objectives

About this Hands-on Lab

Using Docker volumes is the preferred method of storing container data locally. Volume support is built directly into Docker, making it an easy tool to use for storage, as well as more portable. However, storing container data in Docker volumes still requires you to back up the data in those volumes on your own. There is another option – storing your container data in the cloud. It’s not a solution for every problem, but after this lab, you’ll have another tool at your disposal. This lab will show you how to mount a Cloud Storage bucket onto your local system as a directory. You will then mount that directory into your Docker container. We will use an httpd container to serve the contents of that bucket as a webpage, but you can use it to share any common data between containers. This hands-on lab will demonstrate how flexible Docker can be. You can make changes to your bucket and all of your containers using the Cloud Storage bucket will near-instantly have access to the content.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Configuration and Installation
  1. Make a Google Cloud Storage Bucket.
  2. Install gcsfuse. The necessary yum repo configuration has been added to the server for you in /etc/yum.repos.d/gcsfuse.repo.
  3. Configure FUSE to allow all users to mount the storage.
Prepare the Cloud Storage Bucket
  1. Create a mount point on the server.
  2. Mount the GCS Bucket.
  3. Copy the website files into the Cloud Storage Bucket mounted on the server.
  4. Verify the files are present in the bucket.
Use the GCS Bucket in a Container
  1. Run an httpd container to serve the website. Remember to mount the Cloud Storage folder to the container and publish the web server port.
  2. View the webpage in a browser. Use the server’s public IP provided with the lab.

Additional Resources

While working on upgrading your website to a Docker container, you should explore other options for storing container data. One alternative to storing static content in a Docker volume, is to store the data in a Google Cloud Storage bucket. If you are already using GCP, this would allow you to not worry about backing up container data thanks to the data being stored in the Cloud Storage bucket.

You will be using gcsfuse, a FUSE-based file system, to mount the Cloud Storage bucket to your server. You'll prepare the server by installing all necessary tools. You'll copy the website data, cloned from GitHub into cloud_user's home directory, to the Cloud Storage bucket. You'll use a bind mount to get your Cloud Storage bucket directory into your container. Finally, you'll view the content from a web browser.

Note: While this method works for static content or content that changes occasionally, this should not be used for files that are written frequently, such as a database. That will drastically increase latency and drive up your cloud storage costs. We enable local caching and mount the data as read-only in the container to help mitigate these issues. You can, however, use this method for data output if the container processes a job that emits uniquely-named output.

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?