docker-cli

Docker is a containerization platform that packages applications and dependencies into isolated containers. This guide provides essential workflows and quick references for common Docker operations.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "docker-cli" with this command: npx skills add leobrival/topographic-plugins-official/leobrival-topographic-plugins-official-docker-cli

Docker CLI Guide

Docker is a containerization platform that packages applications and dependencies into isolated containers. This guide provides essential workflows and quick references for common Docker operations.

Quick Start

Check Docker installation

docker --version

Run your first container

docker run hello-world

Run interactive container

docker run -it ubuntu bash

Run container in background

docker run -d nginx

List running containers

docker ps

Stop a container

docker stop container_name

Common Workflows

Workflow 1: Build and Run an Application

Create Dockerfile in your project directory

Build image

docker build -t myapp:latest .

Run container with port mapping

docker run -d -p 8080:80 --name myapp myapp:latest

View logs

docker logs -f myapp

Access container shell

docker exec -it myapp bash

Workflow 2: Development with Hot Reload

Run with volume mount for live code updates

docker run -d
-p 8080:80
-v $(pwd)/src:/app/src
--name myapp-dev
myapp:dev

Watch logs in real-time

docker logs -f myapp-dev

Restart after configuration changes

docker restart myapp-dev

Workflow 3: Multi-Container Application with Docker Compose

Create docker-compose.yml with services

Start all services

docker compose up -d

View service logs

docker compose logs -f

Scale a service

docker compose up -d --scale api=3

Stop all services

docker compose down

Stop and remove volumes

docker compose down -v

Workflow 4: Push Image to Registry

Login to registry

docker login

Build and tag image

docker build -t myapp:latest . docker tag myapp:latest username/myapp:v1.0.0 docker tag myapp:latest username/myapp:latest

Push to registry

docker push username/myapp:v1.0.0 docker push username/myapp:latest

Workflow 5: Debug Container Issues

Check container status

docker ps -a

View container logs

docker logs container_name

Inspect container details

docker inspect container_name

Run interactive shell for debugging

docker run -it --entrypoint /bin/bash myapp:latest

Check container resource usage

docker stats container_name

Decision Tree

When to use which command:

  • To run a new container: Use docker run with appropriate flags

  • To execute commands in running container: Use docker exec -it container_name bash

  • To build an image: Use docker build -t name:tag .

  • To manage multiple services: Use docker compose up/down

  • To check container status: Use docker ps or docker ps -a

  • To view logs: Use docker logs -f container_name

  • To clean up resources: Use docker system prune or specific prune commands

  • For detailed command syntax: See Commands Reference

  • For complex scenarios: See Common Patterns

  • For troubleshooting: See Troubleshooting Guide

Common Patterns

Running Containers with Options

With environment variables

docker run -e ENV_VAR=value -e API_KEY=secret myapp

With resource limits

docker run --memory=512m --cpus=1.5 myapp

With restart policy

docker run --restart=unless-stopped myapp

With custom network

docker run --network mynetwork myapp

With volume mount

docker run -v mydata:/app/data myapp

Container-to-Container Communication

Create custom network

docker network create myapp-network

Run containers on same network

docker run -d --name database --network myapp-network postgres:15 docker run -d --name app --network myapp-network -p 8080:80 myapp

Containers can now access each other by name

Example: app can connect to database using hostname "database"

Data Persistence

Create named volume

docker volume create myapp-data

Use volume in container

docker run -d -v myapp-data:/var/lib/postgresql/data postgres:15

Backup volume data

docker run --rm
-v myapp-data:/data
-v $(pwd):/backup
ubuntu tar czf /backup/backup.tar.gz /data

Troubleshooting

Common Issues:

Container exits immediately

  • Solution: Check logs with docker logs container_name

  • See: Container Won't Start

Can't access service on published port

  • Quick fix: Verify port mapping with docker port container_name

  • See: Container Running But Not Accessible

Permission denied errors

  • Quick fix: Run with user flag docker run -u $(id -u):$(id -g)

  • See: Permission Denied Errors

Disk space issues

  • Quick fix: Clean up with docker system prune -a --volumes

  • See: Disk Space Issues

Network connectivity issues

  • Quick fix: Check container network with docker network inspect bridge

  • See: Network Issues

For detailed troubleshooting steps, see the Troubleshooting Guide.

Reference Files

Load as needed for detailed information:

Commands Reference - Complete CLI command documentation with all flags and options. Use when you need exact syntax or flag details for any Docker command.

Common Patterns - Real-world patterns and workflows for development, multi-stage builds, networking, volumes, CI/CD, security, and production deployments. Use for implementing specific workflows or integrations.

Troubleshooting Guide - Detailed error messages, diagnosis steps, and resolution strategies for container, image, network, volume, performance, and system issues. Use when encountering errors or unexpected behavior.

When to use each reference:

  • Use Commands Reference when you need exact syntax, flag combinations, or comprehensive command documentation

  • Use Common Patterns for implementing multi-container setups, production configurations, or CI/CD pipelines

  • Use Troubleshooting when containers won't start, services are unreachable, or you encounter permission/network/performance issues

Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

adonisjs-cli

No summary provided by upstream source.

Repository SourceNeeds Review
General

user-personas

No summary provided by upstream source.

Repository SourceNeeds Review
General

website-crawler

No summary provided by upstream source.

Repository SourceNeeds Review