docker-compose docker compose basics / troubleshooting:
Typically one can follow this guide to install their docker. Which recomends the following script:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Put it inside a file with:
nano install.sh
And then make executable with:
chmod +x install.sh && ./install.sh
Once we have this done we need to test that we have a working docker environment:
mkdir helloword && cd helloworld
nano docker-compose.yml
Inside it put:
version: '2'
services:
hello_world:
image: ubuntu
command: [/bin/echo, 'Hello world']
Understanding docker-compose / docker compose:
- docker-compose may not work but docker compose will or vice versa.
- docker compose builds images.. or effectively works with docker-compose.yml files.
- docker run then activates those images into a running container.
Build your image with:
docker-compose -f docker-compose.yml build
One can do only a pull for the associate images.
docker-compose -f docker-compose.yml pull
And then it can be run with:
docker-compose -f docker-compose.yml up -d
- What is strange is -d must be after the up.
One can inspect the built image with:
docker image ls
The difference between DockerFile and docker-compose.yml:
Is easily and best described as:
Dockerfile - commands for a single container
docker-compose.yml instructions for multiple images and containers.
One can then run an image with:
docker run --name bob ubuntu:latest
One can then list running containers with:
docker ps -a
And stop (and remove) them with
docker stop bob
docker rm bob
Finally if the container is deleted the underlying images can also be deleted by:
docker image prune --all