{"id":202,"date":"2026-07-17T07:30:22","date_gmt":"2026-07-17T07:30:22","guid":{"rendered":"https:\/\/alexawebservers.com\/blog\/80-essential-docker-commands-every-developer-should-know\/"},"modified":"2026-07-19T08:08:25","modified_gmt":"2026-07-19T08:08:25","slug":"80-essential-docker-commands-every-developer-should-know","status":"publish","type":"post","link":"https:\/\/alexawebservers.com\/blog\/80-essential-docker-commands-every-developer-should-know\/","title":{"rendered":"80+ Essential Docker Commands Every Developer Should Know"},"content":{"rendered":"<p>Docker has become the standard way to package, ship, and run applications. Whether you are deploying microservices, setting up a CI\/CD pipeline, or just running a local development environment, these 80+ Docker commands will cover everything you need.<\/p>\n<h2>1. Container Lifecycle<\/h2>\n<p><code>docker run -d --name myapp nginx<\/code> \u2014 Run a container in detached mode.<br \/>\n<code>docker run -it ubuntu bash<\/code> \u2014 Run interactively with a shell.<br \/>\n<code>docker run --rm alpine<\/code> \u2014 Run and auto-delete on exit.<br \/>\n<code>docker start myapp<\/code> \u2014 Start a stopped container.<br \/>\n<code>docker stop myapp<\/code> \u2014 Stop a running container gracefully.<br \/>\n<code>docker restart myapp<\/code> \u2014 Restart a container.<br \/>\n<code>docker pause myapp<\/code> \u2014 Pause all processes in a container.<br \/>\n<code>docker unpause myapp<\/code> \u2014 Unpause a container.<br \/>\n<code>docker kill myapp<\/code> \u2014 Force stop a container.<br \/>\n<code>docker rm myapp<\/code> \u2014 Remove a stopped container.<br \/>\n<code>docker rm -f myapp<\/code> \u2014 Force remove a running container.<br \/>\n<code>docker container prune<\/code> \u2014 Remove all stopped containers.<\/p>\n<h2>2. Image Management<\/h2>\n<p><code>docker images<\/code> \u2014 List all images.<br \/>\n<code>docker pull nginx<\/code> \u2014 Pull an image from a registry.<br \/>\n<code>docker push myuser\/myapp:latest<\/code> \u2014 Push an image to a registry.<br \/>\n<code>docker build -t myapp:1.0 .<\/code> \u2014 Build an image from a Dockerfile.<br \/>\n<code>docker build --no-cache -t myapp .<\/code> \u2014 Build without cache.<br \/>\n<code>docker rmi nginx<\/code> \u2014 Remove an image.<br \/>\n<code>docker rmi $(docker images -q)<\/code> \u2014 Remove all images.<br \/>\n<code>docker image prune<\/code> \u2014 Remove dangling images.<br \/>\n<code>docker image prune -a<\/code> \u2014 Remove all unused images.<br \/>\n<code>docker tag myapp myuser\/myapp:latest<\/code> \u2014 Tag an image.<br \/>\n<code>docker save -o myapp.tar myapp:1.0<\/code> \u2014 Save image to tar file.<br \/>\n<code>docker load -i myapp.tar<\/code> \u2014 Load image from tar file.<br \/>\n<code>docker history myapp:1.0<\/code> \u2014 Show image layer history.<br \/>\n<code>docker inspect myapp:1.0<\/code> \u2014 Show detailed image metadata.<\/p>\n<h2>3. Inspecting Containers<\/h2>\n<p><code>docker ps<\/code> \u2014 List running containers.<br \/>\n<code>docker ps -a<\/code> \u2014 List all containers (including stopped).<br \/>\n<code>docker logs myapp<\/code> \u2014 View container logs.<br \/>\n<code>docker logs -f myapp<\/code> \u2014 Follow logs in real time.<br \/>\n<code>docker logs --tail 50 myapp<\/code> \u2014 Show last 50 lines.<br \/>\n<code>docker top myapp<\/code> \u2014 Show running processes inside container.<br \/>\n<code>docker stats<\/code> \u2014 Live resource usage for all containers.<br \/>\n<code>docker stats myapp<\/code> \u2014 Resource usage for a specific container.<br \/>\n<code>docker inspect myapp<\/code> \u2014 Detailed container metadata (JSON).<br \/>\n<code>docker inspect -f '{{.NetworkSettings.IPAddress}}' myapp<\/code> \u2014 Get container IP.<br \/>\n<code>docker port myapp<\/code> \u2014 Show port mappings.<br \/>\n<code>docker diff myapp<\/code> \u2014 Show changes to filesystem inside container.<\/p>\n<h2>4. Networks<\/h2>\n<p><code>docker network ls<\/code> \u2014 List networks.<br \/>\n<code>docker network create mynet<\/code> \u2014 Create a bridge network.<br \/>\n<code>docker network create --driver overlay mynet<\/code> \u2014 Create an overlay network.<br \/>\n<code>docker run --network=mynet nginx<\/code> \u2014 Run container on a specific network.<br \/>\n<code>docker network connect mynet myapp<\/code> \u2014 Connect running container to network.<br \/>\n<code>docker network disconnect mynet myapp<\/code> \u2014 Disconnect container from network.<br \/>\n<code>docker network inspect mynet<\/code> \u2014 Show network details and connected containers.<br \/>\n<code>docker network prune<\/code> \u2014 Remove unused networks.<\/p>\n<h2>5. Volumes and Storage<\/h2>\n<p><code>docker volume ls<\/code> \u2014 List volumes.<br \/>\n<code>docker volume create myvol<\/code> \u2014 Create a volume.<br \/>\n<code>docker run -v myvol:\/data nginx<\/code> \u2014 Mount a volume.<br \/>\n<code>docker run -v \/host\/path:\/container\/path nginx<\/code> \u2014 Bind mount a host directory.<br \/>\n<code>docker run --mount type=bind,source=\/host,target=\/container nginx<\/code> \u2014 Bind mount (newer syntax).<br \/>\n<code>docker volume inspect myvol<\/code> \u2014 Show volume details.<br \/>\n<code>docker volume prune<\/code> \u2014 Remove unused volumes.<br \/>\n<code>docker cp myapp:\/app\/config.json .\/config.json<\/code> \u2014 Copy file from container to host.<br \/>\n<code>docker cp .\/backup.sql myapp:\/backup\/<\/code> \u2014 Copy file from host to container.<\/p>\n<h2>6. Docker Compose<\/h2>\n<p><code>docker compose up<\/code> \u2014 Start services defined in compose.yaml.<br \/>\n<code>docker compose up -d<\/code> \u2014 Start in detached mode.<br \/>\n<code>docker compose down<\/code> \u2014 Stop and remove containers, networks.<br \/>\n<code>docker compose down -v<\/code> \u2014 Stop and remove volumes too.<br \/>\n<code>docker compose logs -f<\/code> \u2014 Follow logs from all services.<br \/>\n<code>docker compose ps<\/code> \u2014 List service status.<br \/>\n<code>docker compose build<\/code> \u2014 Build or rebuild images.<br \/>\n<code>docker compose restart<\/code> \u2014 Restart all services.<br \/>\n<code>docker compose exec web bash<\/code> \u2014 Run a command in a running service container.<br \/>\n<code>docker compose run --rm web pytest<\/code> \u2014 Run a one-off command.<br \/>\n<code>docker compose config<\/code> \u2014 Validate and view compose file.<br \/>\n<code>docker compose pull<\/code> \u2014 Pull all service images.<\/p>\n<h2>7. Dockerfile Essentials<\/h2>\n<p><code>FROM node:20-alpine<\/code> \u2014 Base image.<br \/>\n<code>WORKDIR \/app<\/code> \u2014 Set working directory.<br \/>\n<code>COPY package*.json .\/<\/code> \u2014 Copy files.<br \/>\n<code>RUN npm install<\/code> \u2014 Run build commands.<br \/>\n<code>EXPOSE 3000<\/code> \u2014 Declare port.<br \/>\n<code>CMD [\"node\", \"server.js\"]<\/code> \u2014 Default command.<br \/>\n<code>ENTRYPOINT [\"npm\", \"start\"]<\/code> \u2014 Entry point (harder to override).<br \/>\n<code>ENV NODE_ENV=production<\/code> \u2014 Set environment variables.<br \/>\n<code>ARG VERSION=1.0<\/code> \u2014 Build-time variable.<br \/>\n<code>LABEL maintainer=\"dev@example.com\"<\/code> \u2014 Add metadata.<br \/>\n<code>HEALTHCHECK --interval=30s CMD curl -f http:\/\/localhost\/<\/code> \u2014 Health check.<br \/>\n<code>USER node<\/code> \u2014 Switch to non-root user.<br \/>\n<code>VOLUME \/data<\/code> \u2014 Create mount point.<br \/>\n<code>ADD app.tar.gz \/<\/code> \u2014 Add with auto-extraction (use COPY when possible).<\/p>\n<h2>8. Multi-stage Builds<\/h2>\n<p><code>FROM node:20-alpine AS builder<\/code> \u2014 Stage 1 name.<br \/>\n<code>COPY --from=builder \/app\/dist .\/dist<\/code> \u2014 Copy from another stage.<br \/>\nMulti-stage builds keep final images small by discarding build dependencies.<\/p>\n<h2>9. Registries and Authentication<\/h2>\n<p><code>docker login<\/code> \u2014 Log in to Docker Hub.<br \/>\n<code>docker login myregistry.com<\/code> \u2014 Log in to a private registry.<br \/>\n<code>docker logout<\/code> \u2014 Log out.<br \/>\n<code>docker search nginx<\/code> \u2014 Search Docker Hub for images.<br \/>\n<code>docker pull myregistry.com\/myapp:latest<\/code> \u2014 Pull from private registry.<\/p>\n<h2>10. Cleanup and Housekeeping<\/h2>\n<p><code>docker system df<\/code> \u2014 Show disk usage by Docker.<br \/>\n<code>docker system prune<\/code> \u2014 Remove all unused data (containers, images, networks).<br \/>\n<code>docker system prune -a --volumes<\/code> \u2014 Aggressive cleanup (everything unused).<br \/>\n<code>docker container prune<\/code> \u2014 Remove stopped containers.<br \/>\n<code>docker image prune -a<\/code> \u2014 Remove unused images.<br \/>\n<code>docker volume prune<\/code> \u2014 Remove unused volumes.<br \/>\n<code>docker network prune<\/code> \u2014 Remove unused networks.<\/p>\n<p><strong>Also see:<\/strong> Our <a href=\"https:\/\/alexawebservers.com\/blog\/100-essential-kubernetes-commands-every-devops-engineer-should-know\/\">100+ Essential Kubernetes Commands<\/a> guide for container orchestration.<\/p>\n<hr \/>\n<p><strong>Master Docker and you can deploy anything anywhere.<\/strong> Download our <a href=\"https:\/\/ovidia1.gumroad.com\/l\/fsrhmx\" target=\"_blank\" rel=\"noopener noreferrer\">free Docker Commands Cheat Sheet<\/a> for quick offline reference \u2014 80+ commands in a printable format.<\/p>\n<p>For production deployments, check out the <a href=\"https:\/\/ovidia1.gumroad.com\/l\/ubxkia\" target=\"_blank\" rel=\"noopener noreferrer\">Docker DevOps Toolkit ($15)<\/a> \u2014 15 Docker resources including compose templates, multi-stage Dockerfiles, CI\/CD templates, and cleanup scripts.<\/p>\n<p>Browse our full <a href=\"https:\/\/alexawebservers.com\/blog\/products\/\" target=\"_blank\" rel=\"noopener noreferrer\">product catalog<\/a> for more DevOps tools and cheat sheets.<\/p>\n<p><strong>Also see:<\/strong> Our <a href=\"https:\/\/alexawebservers.com\/blog\/100-essential-linux-commands-every-sysadmin-should-know\/\" target=\"_blank\" rel=\"noopener noreferrer\">100 Essential Linux Commands guide<\/a> for general server administration.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Complete guide to 80+ essential Docker commands. Covers containers, images, networks, volumes, compose, Dockerfiles, and more. With free cheat sheet download.<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-202","post","type-post","status-publish","format-standard","hentry","category-linux-devops"],"_links":{"self":[{"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/posts\/202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/comments?post=202"}],"version-history":[{"count":3,"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/posts\/202\/revisions"}],"predecessor-version":[{"id":221,"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/posts\/202\/revisions\/221"}],"wp:attachment":[{"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/media?parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/categories?post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alexawebservers.com\/blog\/wp-json\/wp\/v2\/tags?post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}