Running Docker Compose with Docker
Contributed by Google employees.
- Run Docker Compose with Docker on Container-Optimized OS.
- Create an alias for the containerized
Before you begin
- Create or select a Google Cloud project from the Cloud Console projects page.
- Enable billing for your project.
This tutorial uses billable components of Google Cloud, including Compute Engine.
Use the Pricing Calculator to estimate the costs for your usage.
Setting up the virtual machine
Create a new Compute Engine instance using the Container-Optimized OS stable image.
- Open the Cloud Console.
- Create a new Compute Engine instance.
- Select the desired Zone, such as "us-central1-f".
- Select the desired Machine type, such as "micro" (f1-micro).
- Change the Boot disk to "Container-Optimized OS stable".
- Check the box to allow HTTP traffic in the Firewall section.
- Click the Create button to create the Compute Engine instance.
Getting the sample code
- After the instance is created, click the SSH button to open a terminal connected to the machine.
Download the Hello World sample using the
git clone https://github.com/docker/dockercloud-hello-world.git cd dockercloud-hello-world
Running Docker Compose
Container-Optimized OS has many benefits, but since it is locked down by default, it is difficult to run software that is not bundled in a container. For example, the general instructions for installing Docker Compose will not work because very few parts of the filesystem are mounted as executable. Instead, you can run Docker Compose image.
Download and run the Docker Compose image. Check the tags for Docker Compose to use the latest version.
docker run docker/compose:1.24.0 version
Ensure that your location is a writable directory.
Many directories are mounted as read-only in the Container-Optimized OS. Change to a writable directory such as your home directory.
$ pwd /home/username/dockercloud-hello-world
Run the Docker Compose command to run the sample code.
So that the Docker Compose container has access to the Docker daemon, mount the Docker socket with the
To make the current directory available to the container, use the
-v "$PWD:$PWD"option to mount it as a volume and the
-w="$PWD"to change the working directory.
docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:$PWD" \ -w="$PWD" \ docker/compose:1.24.0 up
docker runcommand still running, open the Cloud Console instances page. Click the link to your instance's External IP address.
You should see a "Hello World" message appear.
With the SSH window open, press Control-C on your keyboard to stop the sample application.
Making an alias to Docker Compose
docker run ... docker/compose:1.24.0 up command is equivalent to running
docker-compose up command on systems where Docker Compose is installed by
the usual method. So that you don't have to remember or type this long command,
create an alias for it.
docker-composealias to your shell configuration file, e.g.
echo alias docker-compose="'"'docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:$PWD" \ -w="$PWD" \ docker/compose:1.24.0'"'" >> ~/.bashrc
Reload the Bash configuration.
Change back to the sample directory if you aren't already there.
Run the sample code using the new
You should be able to view the "Hello World" message at your instance's external IP address.
- Set up the Google Cloud logging driver for Docker to upload your containers' logs to Stackdriver Logging.
- Use CoreOS Toolbox to run other tools in the Container-Optimized OS.
- Learn how to orchestrate containers using Kubernetes. Use Kompose to transform Docker Compose configuration into Kubernetes manifests.