Compose
What is Docker Compose?
Docker Compose is a tool used for defining and running multi-container Docker applications. It allows you to manage complex applications with multiple services (containers) using a simple YAML configuration file. With Docker Compose, you can define all the services, networks, and volumes needed for your application in a single file, and then use a single command to start, stop, or manage those services.
Install Docker ComposeĀ
apt install docker-compose
YAML (Yet Another Markup Language)
YAML files are just text files that are used by Docker-Compose for definition of image/container setup. YAML files are a very useful feature of Docker as they all for deployment of containers on any system by just using the YAML file.
YAML files are VERY fussy about their syntax - this includes character positioning.
Basic annotated example;
version: '3.7' # Specifies the Docker Compose version used (e.g., 3.7)
services:
portainer: # Defines a service named "portainer"
container_name: container1 # Names the container instance "container1"
image: portainer/portainer-ce # Specifies the Docker image to use (portainer/portainer-ce)
command: -H unix:///var/run/docker.sock # Command to execute when the container starts (grants access to Docker socket)
restart: 'always' # Automatically restarts the container if it crashes or exits
ports: # Defines port mappings between the container and the host machine
- target: '9000' # Maps container port 9000
published: '9000' # to host port 9000 (can be accessed from the host machine)
protocol: tcp # using TCP protocol
- target: '8000' # Maps container port 8000
published: '8000' # to host port 8000 (can be accessed from the host machine)
protocol: tcp # using TCP protocol
volumes: # Defines persistent storage for the container
- type: bind # Mounts a host directory onto a container directory
source: /var/run/docker.sock # Binds the host's Docker socket file
target: /var/run/docker.sock # to the container's Docker socket file (grants access within the container)
- type: bind # Mounts another host directory onto a container directory
source: /srv/portainer # Binds the host's `/srv/portainer` directory
target: /data/ # to the container's `/data/` directory (for persistent data storage)
Start the container based on YAML file:
docker-compose up --detatch
====================================================================================
No Comments