Day 18 - Docker for DevOps Engineers - Unveiling Docker Compose ๐
![Nilkanth Mistry](https://cdn.hashnode.com/res/hashnode/image/upload/v1714195782241/O3eX9t-6G.jpg)
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1708614382323/90f90cc6-5a9a-4c3c-a054-9a3ce425e066.jpeg)
Hello DevOps Enthusiasts! Today, we're delving into the magic of Docker Compose, a tool designed to simplify the orchestration of multi-container applications. ๐ณโจ
๐ Understanding Docker Compose:
What is Docker Compose?
Docker Compose is a boon for defining and sharing multi-container applications effortlessly. It operates on a YAML file, acting as a blueprint to set up services, links, and configurations in one go. Think of it as your DevOps symphony conductor! ๐ถ
Why YAML?
YAML, or "Yet Another Markup Language," is a human-readable data serialization language frequently used for configuration files. Its simplicity and readability make it a preferred choice.
Sample Docker Compose File:
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
๐ Tasks at Hand:
Task-1: Mastering docker-compose.yml
Install Docker Compose: If you haven't installed Docker Compose, you can do it by following the instructions here.
Create a Project Directory: Create a directory for your project and navigate into it.
mkdir my-docker-project cd my-docker-project
Create a docker-compose.yml file: Create a
docker-compose.yml
file in your project directory. This will be the configuration file for Docker Compose.version: '3' services: web: image: nginx:latest ports: - "8080:80" environment: - ENV_VARIABLE=value
In this example, we define a service named "web" using the Nginx image, expose port 8080 on the host to port 80 on the container, and set an environment variable.
Run Docker Compose: Run the following command to start the services defined in your
docker-compose.yml
file.docker-compose up -d
The
-d
flag runs the containers in the backgroundVerify the Containers: Check if the containers are running.
docker-compose ps
Stop and Remove Containers: Stop and remove the containers when done.
docker-compose down
Task-2: Handling Docker Containers Like a Pro
Pull a Pre-existing Image: Choose an image from Docker Hub and pull it.
docker pull ubuntu:latest
Run as a Non-root User: When running a container, use the
--user
flag to specify a non-root user.docker run --user 1000:1000 -it ubuntu:latest /bin/bash
Replace
1000:1000
with the appropriate user and group IDs.Exploration with Docker Commands:
View container processes:
docker top <container_id>
Examine exposed ports:
docker port <container_id>
View container logs:
docker logs <container_id>
Gracefully start, stop, and remove containers:
docker start <container_id> docker stop <container_id> docker rm <container_id>
Now you have successfully completed both tasks! Adjust the configurations and commands based on your specific needs.
๐ Running Docker Commands Without Sudo:
sudo usermod -a -G docker $USER
Reboot the machine.
Embark on this Docker journey with confidence! These fundamental concepts pave the way for a deeper understanding of container orchestration.
Subscribe to my newsletter
Read articles from Nilkanth Mistry directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
![Nilkanth Mistry](https://cdn.hashnode.com/res/hashnode/image/upload/v1714195782241/O3eX9t-6G.jpg)
Nilkanth Mistry
Nilkanth Mistry
Embark on a 90-day DevOps journey with me as we tackle challenges, unravel complexities, and conquer the world of seamless software delivery. Join my Hashnode blog series where we'll explore hands-on DevOps scenarios, troubleshooting real-world issues, and mastering the art of efficient deployment. Let's embrace the challenges and elevate our DevOps expertise together! #DevOpsChallenges #HandsOnLearning #ContinuousImprovement