I’ve been using Docker extensively over the past few years and I’ve compiled a list of the commands that I use most frequently. Docker can be intimidating at first glance, but it’s actually quite simple. I honestly believe if you focused on the commands in this list, you will have all that you need to be up and running with Docker. Wether you are a Docker novice or Docker expert, these are the top commands you must know.
To try these commands out, install docker. I also recommend signing up for a free account on Docker Hub so you can pull and push images to your own repo. Let’s get going!
Basic Commands
Command | Description |
---|---|
docker --version |
Docker version info for client and sever |
docker info |
Detailed Docker info about your Docker setup |
docker login |
If you have a private repo, use this command to login |
docker logout |
To logout |
docker pull nginx |
Pull an image |
docker images |
List local images |
docker run -p 80:80 nginx |
Run a container from an image and map the container port to a host port |
docker run -d -p 80:80 nginx |
Run a container in the background |
docker ps |
List running containers |
docker ps -a |
List running and stopped containers |
docker logs <container_id> |
View container logs |
docker logs -f <container_id> |
Tail container logs |
docker exec -it <container_id> sh |
Jump into a running container with an iteractive shell |
docker stats |
Get memory and I/O stats on running containers |
docker inspect nginx |
Get info on a docker object (image, container, etc.) |
docker stop <container_id> |
Stop a running container |
docker kill <container_id> |
Kill a running container |
docker kill -s HUP <container_id> |
Send a signal to running container |
docker search <search_string> --limit 5 |
Search Docker Hub for images |
docker network create my-net |
Create a user-defined network |
docker network ls |
List networks |
docker run --network=my-net -p 80:80 nginx |
Run a container on your user-defined network |
Cleanup Commands
Command | Description |
---|---|
docker rmi -f <image_id> |
Remove an image |
docker rm -f <container_id> |
Remove a container |
docker rm $(docker ps -a -q) |
Remove all containers |
docker volume ls -qf dangling=true | xargs -r docker volume rm |
Remove all docker volumes |
docker rmi $(docker images -q) |
Remove all docker images |
docker rmi -f $(docker images | grep "<none>"| awk "{print \$3}") |
Remove all untagged images |
docker images -q --filter=dangling=true | xargs docker rmi -f |
Remove all untagged images |
docker volume prune |
Remove unused volumes |
docker network rm <network_id> |
Remove a Network |
Running Commands on all containers
Command | Description |
---|---|
docker stop $(docker ps -q) |
Stop all containers |
docker kill $(docker ps -q) |
Kill all containers |
Commands when working with a Dockerfile
Here are the commands you’ll use when working with a Dockerfile. Let’s say we have a directory named node
with the following contents:
A Dockerfile
FROM node
RUN mkdir -p /usr/src/app
COPY index.js /usr/src/app
CMD [ "node", "/usr/src/app/index" ]
An index.js
file
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(`<h1>Hello World!</h1>`);
res.end();
}).listen(8090);
Your directory should now look like this:
$ ll node
total 16
-rw-r--r-- 1 ralphmcneal staff 503 May 27 07:45 index.js
-rw-r--r-- 1 ralphmcneal staff 100 May 27 07:45 Dockerfile
Command | Description |
---|---|
docker build -t hello-node node/. |
Build an image |
docker tag hello-node hello-node:1.0.0 |
Add a custom tag |
docker run -d -p 8090:8090 hello-node:1.0.0 |
Run a container using your image |
Pushing to a repo
Command | Description |
---|---|
docker tag hello-node <repo_name>/hello-node:1.0.0 |
To push the image to a repo, you must tag it with the repo name |
docker login <repo_name> |
Login to your repo |
docker push <repo_name>/hello-node:1.0.0 |
Now we can push the image to the repo with the push command |
Summary
This is a good list of the Docker commands you’ll use on a daily basis. There are many more commands but those will be used infrequently. At the point where you have a good understanding of the commands listed here, their variants, and when to use them, I’d say you are on your way to being a Docker pro. Please post any commands that I may have missed. Enjoy!