Docker

Software · DevOps

Containers

# Run
docker run <image>
docker run -d <image>              # detached
docker run -p 8080:80 nginx        # port mapping host:container
docker run -e DB_HOST=localhost    # env var
docker run -it ubuntu /bin/bash    # interactive
docker run --rm <image>            # auto-remove when stopped
docker run --name my-app <image>   # named
 
# List
docker ps                          # running
docker ps -a                       # all
 
# Stop/kill/remove
docker stop <id>
docker kill <id>
docker rm <id>
docker container prune             # remove all stopped
 
# Logs
docker logs <id>
docker logs -f <id>                # follow
 
# Shell into running container
docker exec -it <id> /bin/bash
docker exec -it <id> /bin/sh       # if no bash

Images

# List
docker images
 
# Pull
docker pull nginx:latest
 
# Build
docker build -t myapp:v1 .
docker build -f Dockerfile.prod -t myapp:prod .
 
# Remove
docker rmi <image_id>
docker image prune                 # unused
docker image prune -a              # ALL unused
 
# Tag and push
docker tag myapp:v1 registry.com/myapp:v1
docker push registry.com/myapp:v1

Volumes

# Mount host directory
docker run -v /host/path:/container/path <image>
 
# Named volume
docker run -v mydata:/container/path <image>
 
# List
docker volume ls
 
# Cleanup
docker volume prune

Docker Compose

docker-compose up
docker-compose up -d               # detached
docker-compose down
docker-compose down -v             # remove volumes too
docker-compose up --build          # rebuild
docker-compose logs -f
docker-compose exec web bash
docker-compose up -d --scale worker=3

Debugging

docker inspect <id>
docker stats
docker history <image>
docker cp <container>:/path/file ./local

Cleanup

# Nuclear option
docker system prune -a --volumes
 
# See disk usage
docker system df