In this article, we want to teach you how to Install and Use Docker Compose on Ubuntu 20.04.
Docker Compose is used to run multiple containers as a single service. For example, imagine you had an application that required NGNIX and MySQL, you could create one file which would start both the containers as a service without the need to start each one separately.
Here we show you how to get started with Docker Compose.
Install and Use Docker Compose on Ubuntu 20.04
Before you start to install and use Docker Compose, you need some requirements first.
You need to log in to your server as a non-root user with sudo privileges and set up a basic firewall. To do this you can check our article about the Initial Server Setup with Ubuntu 20.04.
Also, a Docker is installed on your server. you can follow our article about How to Install and Use Docker on Ubuntu 20.04.
When you are done with these requirements, you can start to install Docker Compose on Ubuntu 20.04.
Install Docker Compose on Ubuntu 20.04
To install Docker compose you need to confirm the latest version of Docker Compose on the releases page.
Now run the following command to download the 1.29.2 release:
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Then, you need to set the correct permissions with the following command:
sudo chmod +x /usr/local/bin/docker-compose
To see if your installation was successful run the following command:
In your output you will see:
Output docker-compose version 1.29.2, build 5becea4c
Now you have successfully installed Docker Compose on Ubuntu 20.04.
Let’s see how to set up the YAML file, and the minimal configuration required to run a container using Docker Compose.
Set Up a YAML file
To set up a YAML file, you need to create a web server environment using the official Nginx image from DockerHub. This containerized environment will serve a single static HTML file.
First, create a new directory in your home folder, then move into it with the following command:
mkdir ~/compose-demo cd ~/compose-demo
Then, create a folder to serve as the document root for your Nginx environment with the following command:
Here you need to create a new index.html file with your favorite text editor, here we use vi:
Paste the following content into your file:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Docker Compose Demo</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/[email protected]/dist/dark.min.css"> </head> <body> <h1>This is a Docker Compose Demo Page.</h1> <p>This content is being served by an Nginx container.</p> </body> </html>
When you are finished, save and close the file.
Now you can create the YAML file with the following command:
Then, paste the following content into the file:
version: '3.7' services: web: image: nginx:alpine ports: - "8000:80" volumes: - ./app:/usr/share/nginx/html
The docker-compose.yml file typically starts off with the version definition. This will tell Docker Compose which configuration version we’re using.
Save and close the file, when you are done.
Let’s see how to use Docker Compose on Ubuntu 20.04.
Use Docker Compose to Run a Container
At this step, you can execute Docker Compose to bring our environment up.
The following command will download the necessary Docker images, create a container for the web service, and run the containerized environment in background mode:
docker-compose up -d
In your output you will see:
Output Creating network "compose-demo_default" with the default driver Pulling web (nginx:alpine)... alpine: Pulling from library/nginx a0d0a0d46f8b: Pull complete 4dd4efe90939: Pull complete c1368e94e1ec: Pull complete 3e72c40d0ff4: Pull complete 969825a5ca61: Pull complete 61074acc7dd2: Pull complete Digest: sha256:686aac2769fd6e7bab67663fd38750c135b72d993d0bb0a942ab02ef647fc9c3 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done
Your container is now up and running.
To see that your container is active, run the following command:
Your output should similar to this:
Output Name Command State Ports -------------------------------------------------------------------------------- compose-demo_web_1 /docker-entrypoint.sh Up 0.0.0.0:8000->80/tcp,::: ngin ... 8000->80/tcp
Now you can access the Docker Compose demo page on Ubuntu 20.04 by typing your server’s IP address in your web browser followed by “:8000”:
You will see a page like this:
Here we want to show you how to manage Docker Compose commands on Ubuntu 20.04.
Manage Docker Compose Commands
To check the logs produced by your Nginx container, you can use the following command:
Your output should similar to this:
Output Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up ...
If you want to pause the container without changing the current state of your containers, you can use the following command:
Output Pausing compose-demo_web_1 ... done
You can unpause the container with the following command:
Output Unpausing compose-demo_web_1 ... done
To stop a container you can use the Docker Compose stop command on Ubuntu 20.04:
Output stopping compose-demo_web_1 ... done
If you want to remove the containers, networks, and volumes associated with this containerized environment, you can use the following command:
Output Removing compose-demo_web_1 ... done Removing network compose-demo_default
This command will not remove the base image, you can bring it up again with the docker-compose up command.
To remove the base image from your system, you can use the following command:
docker image rm nginx:alpine
Output Untagged: nginx:alpine Untagged: [email protected]:686aac2769fd6e7bab67663fd38750c135b72d993d0bb0a942ab02ef647fc9c3 Deleted: sha256:513f9a9d8748b25cdb0ec6f16b4523af7bba216a6bf0f43f70af75b4cf7cb780 Deleted: sha256:5da2ba1075ada2783aada4fa30ec8cdd56a072759ea7c283de1c505b56ed0e70 Deleted: sha256:198f9b11827076fddb1d6abac11ec4d87d0a52dabea2df751ab998920af715b8 Deleted: sha256:580b12eeafe4e1d9b8a9d7207a1fb54f3def230b51262d0aa1d6ae38a3d6c808 Deleted: sha256:0b316c7704153abae2097fbf7f15d87b9208d175a6112af8ce9ce6757b08dab1 Deleted: sha256:2f2b56622dca526989a9376c2e74fcbc900a9515efb6f804c1462c121f45411d Deleted: sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68
Conclusion of Install and Use Docker Compose
At this point, you learn how to install and use Docker Compose on Ubuntu 20.04 and set up a containerized environment based on an Nginx web server image. Also, you learn how to manage this environment using Compose commands.
Hope you enjoy this part of the Docker Tutorials on the orcacore website.
May this article about Install and Use Docker Compose on Debian 11 be useful for you.