Docker Compose — Installation Exercises
Practice what you’ve learned in the Installation chapter. These exercises cover verifying your setup, file naming, and project names.
Exercise 1 — Verify Your Installation
Task: Run three commands to verify your Docker Compose installation is working. What commands would you use and what output do you expect?
Show Answer
# 1. Check Compose version
docker compose version
# Expected: Docker Compose version v2.24.0 (or higher)
# 2. Check Docker Engine
docker info --format '{{.ServerVersion}}'
# Expected: 24.0.7 (or higher)
# 3. Run a test
mkdir -p /tmp/test-compose && cd /tmp/test-compose
cat > compose.yml << 'EOF'
services:
test:
image: alpine
command: echo "It works!"
EOF
docker compose up
# Expected: "It works!" in output
docker compose down
rm -rf /tmp/test-compose
Exercise 2 — File Naming Priority
Question: You have a directory with these files:
myproject/
├── compose.yml
├── compose.yaml
├── docker-compose.yml
└── docker-compose.yaml
Which file will docker compose up use? What if you delete compose.yml?
Show Answer
docker compose upwill usecompose.yml— it has the highest priority- If you delete
compose.yml, it will usecompose.yaml— second in priority
Priority order: compose.yml → compose.yaml → docker-compose.yml → docker-compose.yaml
Exercise 3 — Project Naming
Question: Given these scenarios, what will the project name be?
- Directory:
/home/user/my-blog/, noname:key, no-pflag - Directory:
/home/user/my-blog/, compose.yml hasname: wordpress - Directory:
/home/user/my-blog/, runningdocker compose -p production up - Directory:
/home/user/my-blog/,COMPOSE_PROJECT_NAME=stagingis set
Show Answer
- my-blog — defaults to directory name
- wordpress —
name:key overrides directory name - production —
-pflag has highest priority - staging — env var overrides directory name and
name:key
Priority: -p flag > COMPOSE_PROJECT_NAME env var > name: key > directory name
Exercise 4 — Custom File
Task: Write the command to:
- Start a stack using
compose.prod.yml - Start a stack using both
compose.ymlandcompose.prod.yml - Start a stack with project name “production” using
compose.prod.yml
Show Answer
# 1. Single custom file
docker compose -f compose.prod.yml up -d
# 2. Multiple files (merged in order)
docker compose -f compose.yml -f compose.prod.yml up -d
# 3. Custom file with custom project name
docker compose -p production -f compose.prod.yml up -d
Exercise 5 — Compose CLI
Question: For each task, write the Compose command:
- List all running compose projects
- View help for the
upcommand - Check which containers are running in the current project
- Follow logs for a service called
api - Open a shell in a running container called
db
Show Answer
# 1. List all projects
docker compose ls
# 2. Help for up command
docker compose up --help
# 3. List containers
docker compose ps
# 4. Follow api logs
docker compose logs -f api
# 5. Shell into db
docker compose exec db sh