Skip to content

Docker basic commands

Docker is a platform for developing, shipping, and running applications in containers.^[600-developer-docker-docker.md] This page outlines the essential command-line operations for managing images, containers, and interacting with the Docker daemon.

Image Management

Images are read-only templates used to create containers.^[600-developer-docker-docker.md]

To list all images currently stored on the local machine:

docker image ls
docker images
^[600-developer-docker-docker.md]

To build an image from a Dockerfile in the current directory:

docker build -t friendlyhello .
^[600-developer-docker-docker.md]

To remove a specific image, use the image ID:

docker image rm <image id>
docker rmi <image id>
^[600-developer-docker-docker.md]

To prepare an image for uploading to a registry (like Docker Hub), tag it:

docker tag <image> username/repository:tag
^[600-developer-docker-docker.md]

To upload the tagged image to a registry:

docker push username/repository:tag
^[600-developer-docker-docker.md]

Container Lifecycle

Containers are runnable instances of images.^[600-developer-docker-docker.md]

Running Containers

To run a container, mapping the host port to the container port:

# Run in foreground (port 4000 on host maps to 80 in container)
docker run -p 4000:80 friendlyhello
^[600-developer-docker-docker.md]

To run a container in the background (detached mode):

docker run -d -p 4000:80 friendlyhello
^[600-developer-docker-docker.md]

To run a specific command in a detached container:

docker run -d centos /bin/bash -c "while true;do echo 123; sleep 2; done"
^[600-developer-docker-docker.md]

Listing and Inspecting

To list running containers:

docker container ls
docker ps
^[600-developer-docker-docker.md]

To list all containers, including those that are stopped:

docker container ls -a
docker ps -a
^[600-developer-docker-docker.md]

To view the logs of a container (follow mode with tail):

docker logs -t -f --tail 3 <container ID>
^[600-developer-docker-docker.md]

To view the running processes of a container:

docker top <container ID>
^[600-developer-docker-docker.md]

To inspect the low-level details of a container:

docker inspect <container ID>
^[600-developer-docker-docker.md]

Stopping and Removing

To gracefully stop a running container:

docker container stop <hash>
^[600-developer-docker-docker.md]

To forcefully shutdown a container immediately:

docker container kill <hash>
^[600-developer-docker-docker.md]

To remove a specific container:

docker container rm <hash>
docker rm <container ID>
^[600-developer-docker-docker.md]

To remove all containers (e.g., stopped ones), you can combine commands:

docker container rm $(docker container ls -a -q)
^[600-developer-docker-docker.md]

Interaction and Execution

To attach your terminal's standard input, output, and error to a running container:

docker attach <container ID>
^[600-developer-docker-docker.md]

To execute a command inside a running container (e.g., run ls -l in /tmp):

docker exec -t <container ID> "ls -l /tmp"
^[600-developer-docker-docker.md]

To open an interactive shell (bash) inside a container:

docker exec -t <container ID> /bin/bash
^[600-developer-docker-docker.md]

System Information and Registry

To check the version of the Docker client and daemon:

docker version
^[600-developer-docker-docker.md]

To display system-wide information:

docker info
^[600-developer-docker-docker.md]

To log in to a Docker Registry (such as Docker Hub):

docker login
^[600-developer-docker-docker.md]

To display help information:

docker --help
^[600-developer-docker-docker.md]

Troubleshooting Removal Conflicts

You cannot remove an image (docker rmi) if it is currently being used by a stopped container^[600-developer-docker-docker.md]. You must first remove the container using its ID before removing the image^[600-developer-docker-docker.md].

Sources

^[600-developer-docker-docker.md]